Building Windows 8 LOB touch-based apps

Post on 08-Feb-2016

92 views 0 download

Tags:

description

Building Windows 8 LOB touch-based apps. Ken Casada Technical Evangelist, Microsoft Switzerland kcasada@microsoft.com. Performance. AND. Mobility. Mouse & Keyboard. AND. Touch. Applications. AND. Apps. Work. AND. Play. Create. AND. Consume. Line of Business apps. - PowerPoint PPT Presentation

Transcript of Building Windows 8 LOB touch-based apps

Building Windows 8 LOB touch-based appsKen CasadaTechnical Evangelist, Microsoft Switzerlandkcasada@microsoft.com

ANDANDANDANDAND

PerformanceMouse & Keyboard

ApplicationsWork

Create

MobilityTouchAppsPlayConsume

data drivendomain specific

existing patterns & frameworks

for the enterprise

control density

data visualization

data analysis CRUD for the enterprise

business logic

n-tierMVVM

test-driven development

Line of Business apps

Demo

Demo

Demo SummaryWorking with services to access data No direct communication with server-side DB Communication is done asynchrounous only Task-based methods are available (no blocking calls) No XML config file is being created Configuration done in code

use the ConfigureEndpoint partial method

Your app needs to adapt in order to bring the best possible experience XAML Controls are designed for touch Apps on a table device can resize an re-orient

ServicesWindows Store apps supports all kinds of services ASMX WCF REST (JSON/XML) RSS oData services WCF RIA Services support

WCFWhich Bindings are supported? BasicHttpBinding NetTcpBinding NetHttpBinding CustomBinding WSHttpBinding

Documentation: Accessing WCF Services with a Windows Store client app

WCF and SecuritySecuring the communication… Authentication WinRT supports sending credentials

In case my service requires credentials (server-side code sample)BasicHttpBinding basicBinding = new

BasicHttpBinding(BasicHttpSecurityMode.TransportCredentialOnly);//Using domain credentialsbasicBinding.Security.Transport.ClientCredentialType =

HttpClientCredentialType.Windows;

the generated proxy class will reflect this (have a look at Reference.cs) the default domain credentials will be provided to the service by default (no code required by the developer!!)

Use HTTPS in order to encrypt communication!!!!

WCF and SecuritySecuring the communication… Authentication WinRT supports sending credentials

In case my service requires credentials (server-side code sample)BasicHttpBinding basicBinding = new

BasicHttpBinding(BasicHttpSecurityMode.TransportCredentialOnly);//Using domain credentialsbasicBinding.Security.Transport.ClientCredentialType =

HttpClientCredentialType.Windows;

the generated proxy class will reflect this (have a look at Reference.cs) the default domain credentials will be provided to the service by default (no code required by the developer!!)

Use HTTPS in order to encrypt communication!!!!

REST servicesUsing HttpClient object It’s an object for sending HTTP Requests / for accessing content from an HTTP Server Works with async Implements HTTP VERBS: Get(Async), Put(Async), Post(Async), Delete(Async) RESTful

Parse the response (XML/JSON) XML

Linq to XML xmlReader/xmlWriter xmlSerializer

JSON Use Objects (like JsonObject) and methods available within namespace Windows.Data.Json DataContractJsonSerializer

HttpClient and SecurityIn case authentication is required… WinRT supports sending default credentials (domain credentials)

HttpClientHandler handler = new HttpClientHandler();handler.UseDefaultCredentials = true;HttpClient httpclient = new HttpClient(handler);

WinRT supports sending custom credentialsHttpClientHandler handler = new HttpClientHandler();handler.Credentials = new NetworkCredential("username", "pw",

"domain"); HttpClient httpclient = new HttpClient(handler);

Use HTTPS in order to encrypt communication!!!!

Collecting user credentialsCredentialPicker and CredentialPickerOptionsCredentialPickerOptions credentialPickerOptions = new CredentialPickerOptions();credentialPickerOptions.CredentialSaveOption = CredentialSaveOption.Selected;credentialPickerOptions.CallerSavesCredential = false;credentialPickerOptions.AlwaysDisplayDialog = true;credentialPickerOptions.AuthenticationProtocol = AuthenticationProtocol.Basic ;credentialPickerOptions.TargetName = "myTargetComputer";credentialPickerOptions.Message = "Please enter your credentials";

CredentialPickerResults credPickerResults = await CredentialPicker.PickAsync(credentialPickerOptions);

Credential Picker Sample: http://code.msdn.microsoft.com/windowsapps/Credential-picker-sample-30fcba2e

Also have a look at the Credential Locker Sample!!! for storing user credentials!!!(http://code.msdn.microsoft.com/windowsapps/PasswordVault-f01be74a)

oData Services / WCF Data ServicesBuilds on top of HTTP and RESTNetflix catalog oData query sample

http://odata.netflix.com/Catalog Get all titles

http://odata.netflix.com/Catalog/Titles Get all titles released in 1954

http://odata.netflix.com/Catalog/Titles?$filter=ReleaseYear eq 1954

Consuming oData Services Download and Install Odata Client Tools for Windows Store apps

http://msdn.microsoft.com/en-us/jj658961 Support for Add Service Reference within Visual Studio 2012

Enterprise Authentication capability

To be used only when your app requires programmatic access!!!

Getting access to data…Remote database vs Local Database Relational databases should be behind a service

working with services is preferred in most cases!

Local databases for offline or occasionally connected systems no out-of-the-box database built into WinRT (no SQLCE support)

the only option you have is SQLite (using SQLite in Windows Store apps)

the requirements can be satisfied using the Application Data API!!!!!

Windows.Storage.ApplicationData.Current

Tip: https://metrostoragehelper.codeplex.com/ (helper for reading/writing/deleting structured data in Isolated Storage)

Background TransfersWhy? Only 1 single application can run at a time Can be annoying if you want to implement specific scenario (download/upload of a file, …)

How? Managed through separate process: BackgroundTransferHost.exe

Keeps running in the background, also when your app get suspended

Have a look at the BackgroundTransfer API: BackgroundDownloader object BackgroundUploader object

Documentation / Sample

Background TasksLock screen triggers (AC or battery power) UserPresent, UserAway, TimeTrigger

System triggers (AC power, non-lock screen) InternetAvailable, NetworkStateChange for connectivity, …

Maintenance triggers (AC power, non-lock screen) Run periodically on AC power

All taks subject to CPU and networking activity quotas

Being productive in the background

Demo: Background Tasks

In-Box Controls for Windows 8 AppsButton

Checkbox Radio Button

Hyperlink Combo Box

Context Menu

Flyout

List BoxFlip View

App Bar

Panning Indicator

Grid View

List View Semantic Zoom

Text Box

Progress Ring Progress Bar

Clear ButtonSpell Checking

Password Reveal Button

Rating Radio Button

Scroll Bar

Toggle Switch Tooltip

Third Party Controls

Third Party Controls VendorsComponentOne http://apps.microsoft.com/webpdp/app/23b1c950-b54c-4dbd-95d0-db75438cd57f

DevExpress http://apps.microsoft.com/webpdp/app/519d8870-6661-4bd9-9e41-d395c6389b47

Telerik http://apps.microsoft.com/webpdp/app/7cdb9bc0-e3a7-47b5-b6d6-658d88d4125d

Mindscape http://apps.microsoft.com/webpdp/app/c68cfba7-a24a-4ac9-86c3-be10167e8b1d

Perpetuum http://www.perpetuumsoft.com/Windows8-UI-Controls.aspx

Syncfusion https://www.syncfusion.com/products/winrt?src=winrtxamltoolkit

OhZee http://apps.microsoft.com/webpdp/app/34dcb5b8-b54f-4a1b-a79f-8aaa228359c0

Actipro http://apps.microsoft.com/webpdp/app/a36f2163-4d44-4ed9-b19f-d1fe1007c3c6

Demo: Chart controlhttp://modernuitoolkit.codeplex.com/

App deployment

Consumer Business

LOB ISV

Windows Store or Side-loaded

Consumer

Windows Store

B2C

Windows Store

Custom LOB

Side-loaded

Examples

Used by

Distribution

Sideloading step by step1) The app must be signed with an enterprise code-signing

certificate that is trusted by devices.Where do I get them?

Option 1: purchase from a Public CA (Verisign, Geotrust etc.).Microsoft Root Certificate Program Member List

Option 2: create your own using the company’s Internal CA, who’s Root Certificate is linked to a Public CA (Verisign, Geotrust etc.).

Option 3: create you own using the company’s Internal CA. The devices you are deploying the app to, must have appropriate root certificate installed (company’s internal CA certificate) to be able to trust the code signing certificate (Certificate chain) code-signing certificate is chained to a trusted root certificate!!!

Sideloading step by step2) Devices must be enabled for sideloading to install and launch apps

How to enable devices for sideloading?• Windows 8 Enterprise, domain joined sideloading automatically enabled(group policy must be set to “Allow trusted apps to install”)

• Windows 8 Enterprise, not domain joinedWindows 8 Pro sideloading product activation keyWindows RT

(*) available via Volume Licensing (provided for free if you have Software Assurance)

ResourcesWindows store app sampleshttp://code.msdn.microsoft.com/windowsappsDeveloping Windows Store apps: Start Here!http://msdn.microsoft.com/en-us/windows/apps/jj679957Design case study: Enterprise line of business Windows Store apphttp://msdn.microsoft.com/en-us/library/windows/apps/jj659079.aspxEnterprise CA: Active Directory Certificate Services Overview http://technet.microsoft.com/library/hh831740Enterprise CA: Active Directory Certification Authority Guidance http://technet.microsoft.com/en-us/library/hh831574.aspx

Q&A

© 2013 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries.The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a

commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.