gradnja povezanih aplikacij

32
100 300 Gradnja povezanih aplikacij Damir Arh, Adacta d.o.o. Arhitekt programske opreme MVP – Visual C# @DamirArh, http://www.damirscorner.com

Upload: damir-arh

Post on 26-Jun-2015

904 views

Category:

Technology


2 download

DESCRIPTION

Slides from my session at NT conference 2013 Windows 8 and Windows Phone 8 precon track

TRANSCRIPT

Page 1: Gradnja povezanih aplikacij

100300

Gradnja povezanih aplikacijDamir Arh, Adacta d.o.o.Arhitekt programske opremeMVP – Visual C#@DamirArh, http://www.damirscorner.com

Page 2: Gradnja povezanih aplikacij

100300

Agenda

Pomen povezanosti Načini povezovanja Lepo obnašanje Windows Phone

Page 3: Gradnja povezanih aplikacij

100300

Današnje aplikacije

Page 4: Gradnja povezanih aplikacij

100300

Programski vmesniki (API)

HTTP APIs

Socket APIs

Background APIs

Data APIs

Json XML Streams

DataReader/DataWriter

Cost

Information APIsDownload

Web services

Skydrive

TCP sockets UDP sockets SSL sockets Web Sockets

AtomPubRSS

Network Information

Proximity sockets

Live ID

Upload

Xbox Live Azure

HttpWebRequest

HttpClient

XHR

IXHR

WCFAtom

RTC Push NotificationCost

Page 5: Gradnja povezanih aplikacij

100300

Viri RSS

Page 6: Gradnja povezanih aplikacij

100300

RSS : ATOM

Page 7: Gradnja povezanih aplikacij

100300

Poenoteno branje

var client = new SyndicationClient();var feed = await client.RetrieveFeedAsync(new Uri(uri));

var title = feed.Title.Text;var subtitle = feed.Id;var description = feed.Subtitle.Text; foreach (var feedItem in feed.Items){ var iUniqueId = feedItem.Id; var iTitle = feedItem.Title.Text; var iSubtitle = feedItem.Summary.NodeValue; var iDescription = feedItem.PublishedDate.ToString(); var iContent = feedItem.NodeValue;

Page 8: Gradnja povezanih aplikacij

100300

Podpora objavljanju

var client = new AtomPubClient(credentials); var item = new SyndicationItem();item = await client.CreateResourceAsync( uri, title, item); item = await client.RetrieveResourceAsync( uri);await client.UpdateResourceAsync(uri, item); await client.DeleteResourceAsync(uri);

Page 9: Gradnja povezanih aplikacij

100300

Podpora WCF

Page 10: Gradnja povezanih aplikacij

100300

Omejitve implementacije

Podprt zgolj odjemalec Spreminjanje nastavitev le skozi kodo Omejen nabor podprtih Bindingov

BasicHttpBinding NetTcpBinding NetHttpBinding CustomBinding

Druge omejitve

Page 11: Gradnja povezanih aplikacij

100300

OAuth in REST

Page 12: Gradnja povezanih aplikacij

100300

OAuth 2

Page 13: Gradnja povezanih aplikacij

100300

WebAuthenticationBroker

var requestUri = String.Format( "{0}/client_id={1}&redirect_uri={2}", oauthUri, clientId, redirectUri);

var result = await WebAuthenticationBroker .AuthenticateAsync(options, requestUri, responseUri);

var authenticationCode = result.ResponseData;

Page 14: Gradnja povezanih aplikacij

100300

OAuth 1

Page 15: Gradnja povezanih aplikacij

100300

HttpClient

var client = new HttpClient(); var result = await client.GetStringAsync(uri);

var content = StringContent(body);content = FormUrlEncodedContent(dictionary);

var response = await client.PostAsync(uri, content);result = await response.Content .ReadAsStringAsync();

Page 16: Gradnja povezanih aplikacij

100300

JSON

{ "access_token":"1/fFAGRNJ", "expires_in":3920, "token_type":"Bearer", "refresh_token":"1/xEoDL4iW3"}

using Windows.Data.Json;

var jsonObject = JsonObject.Parse(json);var jsonValue = jsonObject["access_token"];var token = jsonValue.GetString();

Page 17: Gradnja povezanih aplikacij

100300

XML

<xml> <access_token>1/fFAGRNJ</access_token> <expires_in>3920</expires_in> <token_type>Bearer</token_type> <refresh_token>1/xEoDL4iW3</refresh_token></xml>

using System.Xml.Linq;

var xDoc = XDocument.Parse(xml);var token = xDoc.Element("xml") .Element("access_token").Value;

Page 18: Gradnja povezanih aplikacij

100300

OData

Page 19: Gradnja povezanih aplikacij

100300

OData in Windows Store

Page 20: Gradnja povezanih aplikacij

100300

Poizvedbe z OData

var query = context.Posts.Expand("Parent") .Where(p => p.OwnerUserId == 197913 && p.PostTypeId == 2) .OrderByDescending(p =>p.CreationDate);

((DataServiceQuery<Post>)query).BeginExecute();

var result = await Task.Factory.FromAsync();

var list = result.ToList();

Page 21: Gradnja povezanih aplikacij

100300

Prenos datotek

Page 22: Gradnja povezanih aplikacij

100300

BackgroundTransfer

using Windows.Networking.BackgroundTransfer;

var downloader = new BackgroundDownloader();

var uri = new Uri(downloadUri);var file = await ApplicationData.Current .LocalFolder.CreateFileAsync(filename);

var dl = downloader.CreateDownload(uri, file);

await dl.StartAsync();

Page 23: Gradnja povezanih aplikacij

100300

Prenosi v teku

var downloads = await BackgroundDownloader .GetCurrentDownloadsAsync();

download.RequestedUridownload.ResultFile.Pathdownload.Progress.BytesReceiveddownload.Progress.TotalBytesToReceive

download.AttachAsync() .AsTask(cancellationToken, progress);

Page 24: Gradnja povezanih aplikacij

100300

Dostop do standardnih map

Aplikacije se izvajajo v peskovniku Mape z različnimi nivoji dostopa

ApplicationData.Current.LocalFolder ApplicationData.Current.RoamingFolder ApplicationData.Current.TemporaryFolder Package.Current.InstalledLocation DownloadsFolder KnownFolders.MusicLibrary KnownFolders.PicturesLibrary KnownFolders.VideosLibrary KnownFolders.DocumentsLibrary KnownFolders.RemovableDevices

Page 25: Gradnja povezanih aplikacij

100300

Pravice za omrežni dostop

Tri kategorije Internet (Client) Internet (Client & Server) Private Networks (Client & Server)

Pravilnik o zasebnosti

Page 26: Gradnja povezanih aplikacij

100300

Lokalne povezave

Gostujoči računalnik

Aplikacije za Windows Store

Namizne aplikacije

Page 27: Gradnja povezanih aplikacij

100300

CheckNetIsolation.exe

CheckNetIsolation.exe LoopbackExempt –s

CheckNetIsolation.exe LoopbackExempt –a-n=packagename_ynxpx341dyebp

CheckNetIsolation.exe LoopbackExempt –d-n=packagename_ynxpx341dyebp

CheckNetIsolation.exe LoopbackExempt –c

Page 28: Gradnja povezanih aplikacij

100300

Podatki o povezavi

NetworkCostType Unrestricted Fixed Variable Unknown

ApproachingDataLimit OverDataLimit Roaming

NetworkInformation.GetInternetConnectionProfile() .GetConnectionCost()

Page 29: Gradnja povezanih aplikacij

100300

Prilagajanje delovanja

Običajno Omrežje: unrestricted ali unknown Obnašanje: Brez omejitev

Omejeno Omrežje: fixed ali variable Obnašanje: Prenos manj podatkov

Na zahtevo Omrežje: OverDataLimit ali Roaming Brez samodejnega prenosa

Page 30: Gradnja povezanih aplikacij

100300

Windows Phone 8

Alternativne implementacije System.ServiceModel.Syndication BackgroundTransferService

Okrnjena funkcionalnost WCF

Ni na voljo WebAuthenticationBroker Windows.Data.JSON

Page 31: Gradnja povezanih aplikacij

100300

Sklep

Spoznajte platformo Izkoristite ponujeno Zavedajte se omejitev Mislite na uporabnika

Page 32: Gradnja povezanih aplikacij

300

VPRAŠANJAProsimo vas, da po koncu predavanja izpolnite vprašalnike. Nekoga izmed vas bomo nagradili z Nokio Lumia 820.

Vprašalniki bodo poslani na vaš e-naslov, dostopni pa bodo tudi preko profila na spletnem mestu www.ntk.siNajlepša hvala!

Iščete kakovostno izobraževanje? Obiščite Microsoftove izobraževalne centre:

Uspeh = Znanje = Microsoftovi uradni tečaji + predavatelji Microsoft Certified Trainer