SlideShare une entreprise Scribd logo
1  sur  33
Lessons Learned from Building Windows 8 Store
Apps with MVVM and XAML
Mike Douglas
mikedouglas@Deliveron.com
@mikedouglasdev
AGENDA
• Background
• Why XAML/C#/MVVM?
• Lessons Learned
• What’s Next?
ABOUT MIKE DOUGLAS
• Solution Consultant for Deliveron
Consulting Services
• Microsoft Visual Studio ALM MVP
• Microsoft External Rangers – Visual Studio
ALM
• HDC, KCDC, OTSUG Presentations
• Team Deploy – TeamDeploy.CodePlex.com
• Blog - CodeSmartNotHard.com
• Email – mikedouglas **at**
deliveron.com
• Twitter - @mikedouglasdev
ABOUT DELIVERON
• Project based, technology
consulting
• Areas of Expertise:
– SharePoint
– BizTalk
– Business Intelligence
– .NET Development
– ALM Training and Consulting
• Deliveron Jumpstarts
• Newsletters & Webcasts
• www.Deliveron.com
BACKGROUND
• The Challenge
• TFS Agile Poker (www.tfsagilepoker.com)
– MVVM, XAML, WinRT, Async/Await, OData/RES
T, Azure Mobile Services.
• ALM Readiness TreasureMap
– Open source app for managing ALM
Ranger’s guidance and tools
– http://tinyurl.com/almtreasuremap
WHY XAML/C#/MVVM?
• XAML/C# vs HTML5/JavaScript
– Matching feature sets
– Originally thought I was going to use HTML5/JavaScript
– XAML/C# - Databinding and new features
– XAML is only way to get cross platform between
• Win8
• WP
• MVVM Cross and Xamarin
– IOS
– Android
LESSONS LEARNED
• Design
• Development
• Testing
• Deployment to the Windows Store
LESSONS LEARNED - DESIGN
LESSONS LEARNED - DESIGN
• Storyboarding
– Create wireframe and visualize design
• Frameworks
– Roll your own
– Utilize Existing
• IOC support
• Flyout support
• View to ViewModel auto wiring
• Examples
– MvvmLight
– Prism
LESSONS LEARNED - DEVELOPMENT
• Async / Await
– No UI blocking threads
Method Signature Example Usage
Async Void private async void OnSubmitPointsCommand() Asynchronous Event
Handlers only
Potentially await-able
Async Task public async Task CloseSessionAsync(string
session)
Use when returning void
Async Task<T> public async Task<Session> CreateSessionAsync() Use when having a return
value
Await
SomeMethodAsync
CurrentChannel =
await
PushNotificationChannelManager.CreatePushNot
ificationChannelForApplicationAsync();
Used to create asynchronous
method and doesn’t block UI
thread
LESSONS LEARNED - DEVELOPMENT
• Persisting Data
– Scenarios
• Session State
• Local or Roaming Settings
– Default Serialization
• Painful, requires KnownTypes definitions, DataMember attributes
– JSON
string serializedSettings =
Newtonsoft.Json.JsonConvert.SerializeObject(appSettings);
applicationSettings =
Newtonsoft.Json.JsonConvert.DeserializeObject<ApplicationSetting>(serializedSe
ttings);
– Roaming Settings
Windows.Storage.ApplicationData.Current.RoamingSettings.Values["ApplicationS
ettings"] = serializedSettings;
LESSONS LEARNED - DEVELOPMENT
• Styling and Data Templates
LESSONS LEARNED - DEVELOPMENT
• DataBinding
– Properties support 2 way binding
– Converters
• Boolean To Visibility
LESSONS LEARNED - DEVELOPMENT
• Commanding
LESSONS LEARNED - DEVELOPMENT
• Behaviors
– Only buttons have a Command property
– Attached Properties extend object with Command
LESSONS LEARNED - DEVELOPMENT
• Simulating Suspending and Terminating from VS
LESSONS LEARNED - DEVELOPMENT
• Team Agile Poker Demo
LESSONS LEARNED - TESTING
LESSONS LEARNED - TESTING
• Dependency Injection / IOC
– Recently released frameworks for PCL
• Unity
• Ninject
• Coded UI Testing support in Windows 8.1 / VS 2013
– Extensive gesture support
• Microsoft Test Manager
– Execute test cases against device
– Log and capture error information for bugs
LESSONS LEARNED – WINDOWS STORE
LESSONS LEARNED – WINDOWS STORE
• Windows App Certification Kit
LESSONS LEARNED – WINDOWS STORE
• Gracefully handle common scenarios
– Unhandled Exceptions -> NO CRASHES!
– Midstream Network Loss and no network connectivity
– Snapped Views
– Adaptive to support multiple resolutions (1366 x 768, 1920
x 1080)
LESSONS LEARNED – WINDOWS STORE
• Don’t make your company name / app name too long
– Error Found: The performance launch test collected the following
results:.
• The Native Image Generator failed due to long file path for file
C:Program
FilesWindowsAppsDeliveronConsultingServic.TeamPlanningPok
er_1.0.0.1_neutral__s9dp6hmz44fsaMicrosoft.Data.Services.Clie
nt.WindowsStore.dll
• The Native Image Generator failed due to long file path for file
C:Program
FilesWindowsAppsDeliveronConsultingServic.TeamPlanningPok
er_1.0.0.1_neutral__s9dp6hmz44fsaMicrosoft.WindowsAzure.Mo
bileServices.Managed.dll
– To Skip NGEN
• Add nongen.txt file to root folder of project.
LESSONS LEARNED – WINDOWS STORE
• Privacy Policy
– Must have privacy policy if accessing any external
resources and storing any data.
http://www.privacychoice.org
LESSONS LEARNED – WINDOWS STORE
• When submitting
– Tester Notes
• Assume it is one of your grandparents is doing the
review.
• Assume no domain knowledge
– Some markets have restrictions
• Had to change rating to 12+ (email)
• Some countries require an official game rating
LESSONS LEARNED – WINDOWS STORE
• How to create all of the
required image sizes?
– PerfecTile for Windows 8
– http://nirm.it/PerfecTile/
LESSONS LEARNED – WINDOWS STORE
• App Certification Demo
LESSONS LEARNED – WINDOWS STORE
LESSONS LEARNED – WINDOWS 8.1
LESSONS LEARNED – WINDOWS 8.1
• Windows 8.1
– Currently in preview, released as free update in Windows
Store on 10/17
– No more snapped views, can adjust to any size
– Windows 8.0 apps will work on Windows 8.1
– Windows 8.1 apps will not work on Windows 8.0
WHAT’S NEXT?
• Windows 8.1 Version
• New Features
• Cross Platform with Xamarin (IOS, Android, WP8)
• Web version
• Writing TFS book
RESOURCES
• Xamarin and MvvmCross
– http://xamarin.com/evolve/2013#session-dnoeeoarfj
• Prism for Windows 8
– http://prismwindowsruntime.codeplex.com/
• PerfecTile
– http://nirm.it/PerfecTile/
• CUIT Gestures in VS 2013
– http://blogs.msdn.com/b/visualstudioalm/archive/2013/08/17/coded-ui-test-gesture-
support-in-visual-studio-2013.aspx
• The Tablet Show – Getting apps into the Store
– http://thetabletshow.com/?ShowNum=70
• Pluralsight Courses
– http://www.pluralsight.com/training/Courses/TableOfContents/windows8-hands-on
– http://www.pluralsight.com/training/Courses/TableOfContents/win8mvvm
• Free Online Privacy Policy tool
– http://www.privacychoice.org
1 1 5 1 6 M i r a c l e H i l l s D r i v e S u i t e 2 0 1 O m a h a , N E 6 8 1 5 4
4 0 2 . 2 3 8 . 1 3 9 9 | w w w . d e l i v e r o n . c o m | c o n t a c t u s @ d e l i v e r o n . c o m

Contenu connexe

Tendances

Georgia Tech Drupal Users Group - Local Drupal Development
Georgia Tech Drupal Users Group - Local Drupal DevelopmentGeorgia Tech Drupal Users Group - Local Drupal Development
Georgia Tech Drupal Users Group - Local Drupal DevelopmentEric Sembrat
 
Writing better code: How the Netbeans IDE Helps you Write, Test and Debug Java
Writing better code: How the Netbeans IDE Helps you Write, Test and Debug JavaWriting better code: How the Netbeans IDE Helps you Write, Test and Debug Java
Writing better code: How the Netbeans IDE Helps you Write, Test and Debug Javaidrsolutions
 
Java Training at Gateway Software Solutions,Coimbatore
Java Training at Gateway Software Solutions,CoimbatoreJava Training at Gateway Software Solutions,Coimbatore
Java Training at Gateway Software Solutions,CoimbatoreGateway Software Solutions
 
Joomla! multiplied - How to run Multi-Sites - JandBeyond 2014
Joomla! multiplied - How to run Multi-Sites - JandBeyond 2014Joomla! multiplied - How to run Multi-Sites - JandBeyond 2014
Joomla! multiplied - How to run Multi-Sites - JandBeyond 2014Viktor Vogel
 
Introduction to Windows 8 Development
Introduction to Windows 8 DevelopmentIntroduction to Windows 8 Development
Introduction to Windows 8 DevelopmentJeff Bramwell
 
engage 2016 - Get ready for moving from Java 6 to Java 8 - Now!
engage 2016 - Get ready for moving from Java 6 to Java 8 - Now!engage 2016 - Get ready for moving from Java 6 to Java 8 - Now!
engage 2016 - Get ready for moving from Java 6 to Java 8 - Now!René Winkelmeyer
 
Build a DNN Module in Minutes
Build a DNN Module in MinutesBuild a DNN Module in Minutes
Build a DNN Module in MinutesWill Strohl
 
Introduction to Web Technology Stacks
Introduction to Web Technology StacksIntroduction to Web Technology Stacks
Introduction to Web Technology StacksPrakarsh -
 
OTN Developer Days - GlassFish
OTN Developer Days - GlassFishOTN Developer Days - GlassFish
OTN Developer Days - GlassFishglassfish
 
Eureka Moment UKLUG
Eureka Moment UKLUGEureka Moment UKLUG
Eureka Moment UKLUGPaul Withers
 
MWLUG 2015 - An Introduction to MVC
MWLUG 2015 - An Introduction to MVCMWLUG 2015 - An Introduction to MVC
MWLUG 2015 - An Introduction to MVCUlrich Krause
 
PHP Web Development Frameworks & Advantages
PHP Web Development Frameworks & AdvantagesPHP Web Development Frameworks & Advantages
PHP Web Development Frameworks & AdvantagesAditMicrosys Australia
 
Best Angular Training Online: Angular tutorial | Learn Angular 2 to 10 |
Best Angular Training Online: Angular tutorial | Learn Angular 2 to 10 | Best Angular Training Online: Angular tutorial | Learn Angular 2 to 10 |
Best Angular Training Online: Angular tutorial | Learn Angular 2 to 10 | Shailendra Chauhan
 
Build 2017 - Whats new for Xamarin Devs
Build 2017 - Whats new for Xamarin DevsBuild 2017 - Whats new for Xamarin Devs
Build 2017 - Whats new for Xamarin DevsMike James
 
Pratham Software Corporate profile
Pratham Software Corporate profilePratham Software Corporate profile
Pratham Software Corporate profileKomal Lopez
 

Tendances (20)

Georgia Tech Drupal Users Group - Local Drupal Development
Georgia Tech Drupal Users Group - Local Drupal DevelopmentGeorgia Tech Drupal Users Group - Local Drupal Development
Georgia Tech Drupal Users Group - Local Drupal Development
 
Writing better code: How the Netbeans IDE Helps you Write, Test and Debug Java
Writing better code: How the Netbeans IDE Helps you Write, Test and Debug JavaWriting better code: How the Netbeans IDE Helps you Write, Test and Debug Java
Writing better code: How the Netbeans IDE Helps you Write, Test and Debug Java
 
dxb.vkumar-v04
dxb.vkumar-v04dxb.vkumar-v04
dxb.vkumar-v04
 
Java Training at Gateway Software Solutions,Coimbatore
Java Training at Gateway Software Solutions,CoimbatoreJava Training at Gateway Software Solutions,Coimbatore
Java Training at Gateway Software Solutions,Coimbatore
 
Joomla! multiplied - How to run Multi-Sites - JandBeyond 2014
Joomla! multiplied - How to run Multi-Sites - JandBeyond 2014Joomla! multiplied - How to run Multi-Sites - JandBeyond 2014
Joomla! multiplied - How to run Multi-Sites - JandBeyond 2014
 
Eureka moment
Eureka momentEureka moment
Eureka moment
 
Introduction to Windows 8 Development
Introduction to Windows 8 DevelopmentIntroduction to Windows 8 Development
Introduction to Windows 8 Development
 
engage 2016 - Get ready for moving from Java 6 to Java 8 - Now!
engage 2016 - Get ready for moving from Java 6 to Java 8 - Now!engage 2016 - Get ready for moving from Java 6 to Java 8 - Now!
engage 2016 - Get ready for moving from Java 6 to Java 8 - Now!
 
Build a DNN Module in Minutes
Build a DNN Module in MinutesBuild a DNN Module in Minutes
Build a DNN Module in Minutes
 
JavaFx
JavaFxJavaFx
JavaFx
 
Netbeans+platform+maven
Netbeans+platform+mavenNetbeans+platform+maven
Netbeans+platform+maven
 
Introduction to Web Technology Stacks
Introduction to Web Technology StacksIntroduction to Web Technology Stacks
Introduction to Web Technology Stacks
 
OTN Developer Days - GlassFish
OTN Developer Days - GlassFishOTN Developer Days - GlassFish
OTN Developer Days - GlassFish
 
Eureka Moment UKLUG
Eureka Moment UKLUGEureka Moment UKLUG
Eureka Moment UKLUG
 
MWLUG 2015 - An Introduction to MVC
MWLUG 2015 - An Introduction to MVCMWLUG 2015 - An Introduction to MVC
MWLUG 2015 - An Introduction to MVC
 
Moka .Net Study Week 01
Moka .Net Study Week 01Moka .Net Study Week 01
Moka .Net Study Week 01
 
PHP Web Development Frameworks & Advantages
PHP Web Development Frameworks & AdvantagesPHP Web Development Frameworks & Advantages
PHP Web Development Frameworks & Advantages
 
Best Angular Training Online: Angular tutorial | Learn Angular 2 to 10 |
Best Angular Training Online: Angular tutorial | Learn Angular 2 to 10 | Best Angular Training Online: Angular tutorial | Learn Angular 2 to 10 |
Best Angular Training Online: Angular tutorial | Learn Angular 2 to 10 |
 
Build 2017 - Whats new for Xamarin Devs
Build 2017 - Whats new for Xamarin DevsBuild 2017 - Whats new for Xamarin Devs
Build 2017 - Whats new for Xamarin Devs
 
Pratham Software Corporate profile
Pratham Software Corporate profilePratham Software Corporate profile
Pratham Software Corporate profile
 

En vedette

Windows Universal Apps
Windows Universal AppsWindows Universal Apps
Windows Universal AppsJames Quick
 
Mobinius : Mobile Native vs Cross Platform
Mobinius : Mobile Native vs Cross PlatformMobinius : Mobile Native vs Cross Platform
Mobinius : Mobile Native vs Cross PlatformDamodar Puthiya
 
Windows Universal App XAML e WPF
Windows Universal App XAML e WPFWindows Universal App XAML e WPF
Windows Universal App XAML e WPFLauro Oliveira
 
Postmortem of a uwp xaml application development
Postmortem of a uwp xaml application developmentPostmortem of a uwp xaml application development
Postmortem of a uwp xaml application developmentDavid Catuhe
 
Windows Store app using XAML and C#: Enterprise Product Development
Windows Store app using XAML and C#: Enterprise Product Development Windows Store app using XAML and C#: Enterprise Product Development
Windows Store app using XAML and C#: Enterprise Product Development Mahmoud Hamed Mahmoud
 
Using New Controls in Windows Store XAML Applications
Using New Controls in Windows Store XAML ApplicationsUsing New Controls in Windows Store XAML Applications
Using New Controls in Windows Store XAML ApplicationsSergey Barskiy
 
Windows store app development using javascript
Windows store app development using javascriptWindows store app development using javascript
Windows store app development using javascriptFoyzul Karim
 
Prism for windows runtime
Prism for windows runtimePrism for windows runtime
Prism for windows runtimeSteve Xu
 
Finjan Vital Security For eMail Technical White Paper
Finjan Vital Security For eMail Technical White PaperFinjan Vital Security For eMail Technical White Paper
Finjan Vital Security For eMail Technical White PaperElliott Lowe
 
Danzas típicas de chile...ZONA CENTRO
Danzas típicas de chile...ZONA CENTRODanzas típicas de chile...ZONA CENTRO
Danzas típicas de chile...ZONA CENTROCarolina Labra
 

En vedette (11)

Windows Universal Apps
Windows Universal AppsWindows Universal Apps
Windows Universal Apps
 
Mobinius : Mobile Native vs Cross Platform
Mobinius : Mobile Native vs Cross PlatformMobinius : Mobile Native vs Cross Platform
Mobinius : Mobile Native vs Cross Platform
 
Vorlon.js
Vorlon.jsVorlon.js
Vorlon.js
 
Windows Universal App XAML e WPF
Windows Universal App XAML e WPFWindows Universal App XAML e WPF
Windows Universal App XAML e WPF
 
Postmortem of a uwp xaml application development
Postmortem of a uwp xaml application developmentPostmortem of a uwp xaml application development
Postmortem of a uwp xaml application development
 
Windows Store app using XAML and C#: Enterprise Product Development
Windows Store app using XAML and C#: Enterprise Product Development Windows Store app using XAML and C#: Enterprise Product Development
Windows Store app using XAML and C#: Enterprise Product Development
 
Using New Controls in Windows Store XAML Applications
Using New Controls in Windows Store XAML ApplicationsUsing New Controls in Windows Store XAML Applications
Using New Controls in Windows Store XAML Applications
 
Windows store app development using javascript
Windows store app development using javascriptWindows store app development using javascript
Windows store app development using javascript
 
Prism for windows runtime
Prism for windows runtimePrism for windows runtime
Prism for windows runtime
 
Finjan Vital Security For eMail Technical White Paper
Finjan Vital Security For eMail Technical White PaperFinjan Vital Security For eMail Technical White Paper
Finjan Vital Security For eMail Technical White Paper
 
Danzas típicas de chile...ZONA CENTRO
Danzas típicas de chile...ZONA CENTRODanzas típicas de chile...ZONA CENTRO
Danzas típicas de chile...ZONA CENTRO
 

Similaire à Lessons from Building Windows 8 Apps

FEDSPUG April 2014: Visual Studio 2013 for Application Lifecycle Management &...
FEDSPUG April 2014: Visual Studio 2013 for Application Lifecycle Management &...FEDSPUG April 2014: Visual Studio 2013 for Application Lifecycle Management &...
FEDSPUG April 2014: Visual Studio 2013 for Application Lifecycle Management &...WSPDC & FEDSPUG
 
Introduction to Visual studio 2012
Introduction to Visual studio 2012 Introduction to Visual studio 2012
Introduction to Visual studio 2012 Prashant Chaudhary
 
Good bye Massive View Controller!
Good bye Massive View Controller!Good bye Massive View Controller!
Good bye Massive View Controller!Supercharge
 
Narender Soni Resume - Updated
Narender Soni Resume - UpdatedNarender Soni Resume - Updated
Narender Soni Resume - UpdatedNarender Soni
 
Divya ASP Developer
Divya ASP Developer Divya ASP Developer
Divya ASP Developer divya k
 
PSI Corporate Profile_Outsourced Product Development
PSI Corporate Profile_Outsourced Product DevelopmentPSI Corporate Profile_Outsourced Product Development
PSI Corporate Profile_Outsourced Product DevelopmentKomal Lopez
 
Senior .Net Developer - Senthil Ravindranath
Senior .Net Developer - Senthil RavindranathSenior .Net Developer - Senthil Ravindranath
Senior .Net Developer - Senthil RavindranathSenthil Ravindranath
 
Resume_Ram Dass
Resume_Ram DassResume_Ram Dass
Resume_Ram DassRam Dass
 
Upgrading to Team Foundation Server (TFS) 2012 – What You Need to Know! (07-2...
Upgrading to Team Foundation Server (TFS) 2012 – What You Need to Know! (07-2...Upgrading to Team Foundation Server (TFS) 2012 – What You Need to Know! (07-2...
Upgrading to Team Foundation Server (TFS) 2012 – What You Need to Know! (07-2...Imaginet
 
SadikulIslamDotNetResume
SadikulIslamDotNetResumeSadikulIslamDotNetResume
SadikulIslamDotNetResumeSadikul Islam
 

Similaire à Lessons from Building Windows 8 Apps (20)

FEDSPUG April 2014: Visual Studio 2013 for Application Lifecycle Management &...
FEDSPUG April 2014: Visual Studio 2013 for Application Lifecycle Management &...FEDSPUG April 2014: Visual Studio 2013 for Application Lifecycle Management &...
FEDSPUG April 2014: Visual Studio 2013 for Application Lifecycle Management &...
 
Introduction to Visual studio 2012
Introduction to Visual studio 2012 Introduction to Visual studio 2012
Introduction to Visual studio 2012
 
Good bye Massive View Controller!
Good bye Massive View Controller!Good bye Massive View Controller!
Good bye Massive View Controller!
 
Narender Soni Resume - Updated
Narender Soni Resume - UpdatedNarender Soni Resume - Updated
Narender Soni Resume - Updated
 
Divya ASP Developer
Divya ASP Developer Divya ASP Developer
Divya ASP Developer
 
AMIS OOW Review 2012 - Deel 7 - Lucas Jellema
AMIS OOW Review 2012 - Deel 7 - Lucas JellemaAMIS OOW Review 2012 - Deel 7 - Lucas Jellema
AMIS OOW Review 2012 - Deel 7 - Lucas Jellema
 
Kumar_Resume - LinkedIn
Kumar_Resume - LinkedInKumar_Resume - LinkedIn
Kumar_Resume - LinkedIn
 
KhajavaliShaik
KhajavaliShaikKhajavaliShaik
KhajavaliShaik
 
PSI Corporate Profile_Outsourced Product Development
PSI Corporate Profile_Outsourced Product DevelopmentPSI Corporate Profile_Outsourced Product Development
PSI Corporate Profile_Outsourced Product Development
 
Resume_Venugopal
Resume_VenugopalResume_Venugopal
Resume_Venugopal
 
Prateek_Srivastava
Prateek_SrivastavaPrateek_Srivastava
Prateek_Srivastava
 
Senior .Net Developer - Senthil Ravindranath
Senior .Net Developer - Senthil RavindranathSenior .Net Developer - Senthil Ravindranath
Senior .Net Developer - Senthil Ravindranath
 
Arun Kumar(7.8Yrs).DOC
Arun Kumar(7.8Yrs).DOCArun Kumar(7.8Yrs).DOC
Arun Kumar(7.8Yrs).DOC
 
Resume_Ram Dass
Resume_Ram DassResume_Ram Dass
Resume_Ram Dass
 
Chalam_JAVA_Portal
Chalam_JAVA_PortalChalam_JAVA_Portal
Chalam_JAVA_Portal
 
Upgrading to Team Foundation Server (TFS) 2012 – What You Need to Know! (07-2...
Upgrading to Team Foundation Server (TFS) 2012 – What You Need to Know! (07-2...Upgrading to Team Foundation Server (TFS) 2012 – What You Need to Know! (07-2...
Upgrading to Team Foundation Server (TFS) 2012 – What You Need to Know! (07-2...
 
Allan_John_R_Salgado-MCSD.NET, MCTS,MCPD-Resume(LinkedIn)
Allan_John_R_Salgado-MCSD.NET, MCTS,MCPD-Resume(LinkedIn)Allan_John_R_Salgado-MCSD.NET, MCTS,MCPD-Resume(LinkedIn)
Allan_John_R_Salgado-MCSD.NET, MCTS,MCPD-Resume(LinkedIn)
 
Ess sellsheet 01
Ess sellsheet 01Ess sellsheet 01
Ess sellsheet 01
 
SadikulIslamDotNetResume
SadikulIslamDotNetResumeSadikulIslamDotNetResume
SadikulIslamDotNetResume
 
Resume (1)
Resume (1)Resume (1)
Resume (1)
 

Dernier

Vector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesVector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesZilliz
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
The Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfThe Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfSeasiaInfotech2
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embeddingZilliz
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024The Digital Insurer
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 

Dernier (20)

Vector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesVector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector Databases
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
The Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfThe Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdf
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embedding
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 

Lessons from Building Windows 8 Apps

  • 1. Lessons Learned from Building Windows 8 Store Apps with MVVM and XAML Mike Douglas mikedouglas@Deliveron.com @mikedouglasdev
  • 2. AGENDA • Background • Why XAML/C#/MVVM? • Lessons Learned • What’s Next?
  • 3. ABOUT MIKE DOUGLAS • Solution Consultant for Deliveron Consulting Services • Microsoft Visual Studio ALM MVP • Microsoft External Rangers – Visual Studio ALM • HDC, KCDC, OTSUG Presentations • Team Deploy – TeamDeploy.CodePlex.com • Blog - CodeSmartNotHard.com • Email – mikedouglas **at** deliveron.com • Twitter - @mikedouglasdev
  • 4. ABOUT DELIVERON • Project based, technology consulting • Areas of Expertise: – SharePoint – BizTalk – Business Intelligence – .NET Development – ALM Training and Consulting • Deliveron Jumpstarts • Newsletters & Webcasts • www.Deliveron.com
  • 5. BACKGROUND • The Challenge • TFS Agile Poker (www.tfsagilepoker.com) – MVVM, XAML, WinRT, Async/Await, OData/RES T, Azure Mobile Services. • ALM Readiness TreasureMap – Open source app for managing ALM Ranger’s guidance and tools – http://tinyurl.com/almtreasuremap
  • 6. WHY XAML/C#/MVVM? • XAML/C# vs HTML5/JavaScript – Matching feature sets – Originally thought I was going to use HTML5/JavaScript – XAML/C# - Databinding and new features – XAML is only way to get cross platform between • Win8 • WP • MVVM Cross and Xamarin – IOS – Android
  • 7. LESSONS LEARNED • Design • Development • Testing • Deployment to the Windows Store
  • 9. LESSONS LEARNED - DESIGN • Storyboarding – Create wireframe and visualize design • Frameworks – Roll your own – Utilize Existing • IOC support • Flyout support • View to ViewModel auto wiring • Examples – MvvmLight – Prism
  • 10. LESSONS LEARNED - DEVELOPMENT • Async / Await – No UI blocking threads Method Signature Example Usage Async Void private async void OnSubmitPointsCommand() Asynchronous Event Handlers only Potentially await-able Async Task public async Task CloseSessionAsync(string session) Use when returning void Async Task<T> public async Task<Session> CreateSessionAsync() Use when having a return value Await SomeMethodAsync CurrentChannel = await PushNotificationChannelManager.CreatePushNot ificationChannelForApplicationAsync(); Used to create asynchronous method and doesn’t block UI thread
  • 11. LESSONS LEARNED - DEVELOPMENT • Persisting Data – Scenarios • Session State • Local or Roaming Settings – Default Serialization • Painful, requires KnownTypes definitions, DataMember attributes – JSON string serializedSettings = Newtonsoft.Json.JsonConvert.SerializeObject(appSettings); applicationSettings = Newtonsoft.Json.JsonConvert.DeserializeObject<ApplicationSetting>(serializedSe ttings); – Roaming Settings Windows.Storage.ApplicationData.Current.RoamingSettings.Values["ApplicationS ettings"] = serializedSettings;
  • 12. LESSONS LEARNED - DEVELOPMENT • Styling and Data Templates
  • 13. LESSONS LEARNED - DEVELOPMENT • DataBinding – Properties support 2 way binding – Converters • Boolean To Visibility
  • 14. LESSONS LEARNED - DEVELOPMENT • Commanding
  • 15. LESSONS LEARNED - DEVELOPMENT • Behaviors – Only buttons have a Command property – Attached Properties extend object with Command
  • 16. LESSONS LEARNED - DEVELOPMENT • Simulating Suspending and Terminating from VS
  • 17. LESSONS LEARNED - DEVELOPMENT • Team Agile Poker Demo
  • 18. LESSONS LEARNED - TESTING
  • 19. LESSONS LEARNED - TESTING • Dependency Injection / IOC – Recently released frameworks for PCL • Unity • Ninject • Coded UI Testing support in Windows 8.1 / VS 2013 – Extensive gesture support • Microsoft Test Manager – Execute test cases against device – Log and capture error information for bugs
  • 20. LESSONS LEARNED – WINDOWS STORE
  • 21. LESSONS LEARNED – WINDOWS STORE • Windows App Certification Kit
  • 22. LESSONS LEARNED – WINDOWS STORE • Gracefully handle common scenarios – Unhandled Exceptions -> NO CRASHES! – Midstream Network Loss and no network connectivity – Snapped Views – Adaptive to support multiple resolutions (1366 x 768, 1920 x 1080)
  • 23. LESSONS LEARNED – WINDOWS STORE • Don’t make your company name / app name too long – Error Found: The performance launch test collected the following results:. • The Native Image Generator failed due to long file path for file C:Program FilesWindowsAppsDeliveronConsultingServic.TeamPlanningPok er_1.0.0.1_neutral__s9dp6hmz44fsaMicrosoft.Data.Services.Clie nt.WindowsStore.dll • The Native Image Generator failed due to long file path for file C:Program FilesWindowsAppsDeliveronConsultingServic.TeamPlanningPok er_1.0.0.1_neutral__s9dp6hmz44fsaMicrosoft.WindowsAzure.Mo bileServices.Managed.dll – To Skip NGEN • Add nongen.txt file to root folder of project.
  • 24. LESSONS LEARNED – WINDOWS STORE • Privacy Policy – Must have privacy policy if accessing any external resources and storing any data. http://www.privacychoice.org
  • 25. LESSONS LEARNED – WINDOWS STORE • When submitting – Tester Notes • Assume it is one of your grandparents is doing the review. • Assume no domain knowledge – Some markets have restrictions • Had to change rating to 12+ (email) • Some countries require an official game rating
  • 26. LESSONS LEARNED – WINDOWS STORE • How to create all of the required image sizes? – PerfecTile for Windows 8 – http://nirm.it/PerfecTile/
  • 27. LESSONS LEARNED – WINDOWS STORE • App Certification Demo
  • 28. LESSONS LEARNED – WINDOWS STORE
  • 29. LESSONS LEARNED – WINDOWS 8.1
  • 30. LESSONS LEARNED – WINDOWS 8.1 • Windows 8.1 – Currently in preview, released as free update in Windows Store on 10/17 – No more snapped views, can adjust to any size – Windows 8.0 apps will work on Windows 8.1 – Windows 8.1 apps will not work on Windows 8.0
  • 31. WHAT’S NEXT? • Windows 8.1 Version • New Features • Cross Platform with Xamarin (IOS, Android, WP8) • Web version • Writing TFS book
  • 32. RESOURCES • Xamarin and MvvmCross – http://xamarin.com/evolve/2013#session-dnoeeoarfj • Prism for Windows 8 – http://prismwindowsruntime.codeplex.com/ • PerfecTile – http://nirm.it/PerfecTile/ • CUIT Gestures in VS 2013 – http://blogs.msdn.com/b/visualstudioalm/archive/2013/08/17/coded-ui-test-gesture- support-in-visual-studio-2013.aspx • The Tablet Show – Getting apps into the Store – http://thetabletshow.com/?ShowNum=70 • Pluralsight Courses – http://www.pluralsight.com/training/Courses/TableOfContents/windows8-hands-on – http://www.pluralsight.com/training/Courses/TableOfContents/win8mvvm • Free Online Privacy Policy tool – http://www.privacychoice.org
  • 33. 1 1 5 1 6 M i r a c l e H i l l s D r i v e S u i t e 2 0 1 O m a h a , N E 6 8 1 5 4 4 0 2 . 2 3 8 . 1 3 9 9 | w w w . d e l i v e r o n . c o m | c o n t a c t u s @ d e l i v e r o n . c o m

Notes de l'éditeur

  1. LayoutGrid vsStackpanelData TemplatesStylesBlend