Get a flying start with Windows Phone 7 - NDC2010

2,112
-1

Published on

Windows Phone 7 is brand new, totally fresh operating system that will appear in phones before Christmas. The new platform is a complete rewrite and offers lots of interesting opportunities to third party developers. The development platform for Windows Phone 7 is all based around managed code and the tools and frameworks you already know and love. This presentation you will give you an overview of the Windows Phone 7 development platform, and how you can leverage your existing Silverlight skills to build great applications for the Windows Phone 7 marketplace.

The session assumes some prior knowledge of Silverlight, as the focus of this presentation will be features that are specific to the phone. It will not only cover the basics of the Windows Phone 7 platform, but also how you can re–use many of the same patterns, frameworks, techniques and practices that you use when building regular Silverlight applications.

Published in: Technology, Sports
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
2,112
On Slideshare
0
From Embeds
0
Number of Embeds
8
Actions
Shares
0
Downloads
78
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Get a flying start with Windows Phone 7 - NDC2010

  1. 1. GET A FLYING START WITH WP7<br />JONAS FOLLESØ<br />jonas@follesoe.no<br />http://jonas.follesoe.no<br />@follesoe<br />
  2. 2. ABOUT ME<br />JONAS FOLLESØ<br />jonas@follesoe.no<br />http://jonas.follesoe.no<br />@follesoe<br />
  3. 3. AGENDA:- TDD- RX & ASYNC- MVVM & IOC- BLEND 4- LOCATION- NOTIFICATION<br />http://www.flickr.com/photos/20792787@N00/2248623391/<br />
  4. 4. KNOW SILVERLIGHT?THEN YOU KNOW WP7!<br />
  5. 5. FLIGHTS NORWAYMONITORARRIVALS AND DEPARTURES<br />http://www.flickr.com/photos/svenwerk/2181849280/<br />
  6. 6. FLIGHTS NORWAYWHAT WE ARE GOING TO BUILD<br />
  7. 7. TDD FUNDAMENTALPRACTICE<br />http://www.flickr.com/photos/mad_house_photography/4440871380/<br />
  8. 8. WP7SILVERLIGHT 3.NET 4.03 RUNTIMESMAKES THINGS HARD<br />http://www.flickr.com/photos/tambako/3974809361/<br />
  9. 9. <ul><li>Unit Testing and TDD is a waste of time
  10. 10. Silverlight Unit Test Framework from Microsoft
  11. 11. Silverlight Port of NUnit
  12. 12. Assembly Sharing
  13. 13. Other</li></li></ul><li>
  14. 14. TDD IS ALL ABOUT FLOW<br />http://www.flickr.com/photos/zenonline/3431365556/<br />
  15. 15. FASTER FEEDBACK CYCLE FOR SILVERLIGHT TDD<br />
  16. 16. TDDDEMO<br />http://www.flickr.com/photos/infomofo/1405303478/<br />
  17. 17. RESTSERVICESWITH FLIGHT INFORMATION<br />http://flydata.avinor.no/<br />http://open.bekk.no/2009/12/13/hva-skjer-nar-man-gir-bort-flydata-gratis/<br />
  18. 18. http://flydata.avinor.no/XmlFeed.asp?airport=OSL<br /><?xmlversion="1.0"encoding="iso-8859-1"?><br /><airportname="OSL"><br /> <flightslastUpdate="2010-06-14T06:29:12"><br /> <flightuniqueID="1054121"><br /> <airline>DY</airline><br /> <flight_id>DY422</flight_id><br /> <dom_int>D</dom_int><br /> <schedule_time>2010-06-12T08:55:00</schedule_time><br /> <arr_dep>D</arr_dep><br /> <airport>MOL</airport><br /> </flight><br /> </flights><br /></airport><br />
  19. 19. http://flydata.avinor.no/airlineNames.asp<br /><?xmlversion="1.0"encoding="iso-8859-1"?><br /><airlineNames><br /> <airlineNamecode="AA"name="American Airlines"/><br /> <airlineNamecode="AAF"name="AigleAzur"/><br /> <airlineNamecode="AAG"name="Atlantic Airlines"/><br /> <airlineNamecode="AAT"name="Austrian Airtransport"/><br /> <!-- ... --><br /></airlineNames><br />
  20. 20. http://flydata.avinor.no/airportNames.asp<br /><?xmlversion="1.0"encoding="iso-8859-1"?><br /><airportNames><br /> <airportNamecode="OSD"name="Østersund"/><br /> <airportNamecode="OSH"name="Oshkosh"/><br /> <airportNamecode="OSI"name="Osijek"/><br /> <airportNamecode="OSK"name="Oskarshamn"/><br /> <airportNamecode="OSL"name="Oslo"/><br /> <!-- ... --><br /></airportNames><br />
  21. 21. http://flydata.avinor.no/flightStatuses.asp<br /><?xmlversion="1.0"encoding="iso-8859-1"?><br /><flightStatuses><br /> <flightStatuscode="N"statusTextEn="New info" /><br /> <flightStatuscode="E"statusTextEn="New time" /><br /> <flightStatuscode="D"statusTextEn="Departed" /><br /> <flightStatuscode="A"statusTextEn="Arrived" /><br /> <flightStatuscode="C"statusTextEn="Cancelled" /><br /></flightStatuses><br />
  22. 22. ALL NETWORKING IN SILVERLIGHT IS ASYNCHRONOUS<br />
  23. 23. RXMAKING ASYNCPROGRAMMINGLESS DIFFICULT<br />http://www.flickr.com/photos/adewale_oshineye/3590140051/<br />
  24. 24. COMPOSING ASYNCHRONOUS AND EVENT-BASED PROGRAMS USING OBSERVABLE COLLECTIONS<br />
  25. 25. varmove=Observable.FromEvent(LayoutRoot, "MouseMove");<br />vardown=Observable.FromEvent(LayoutRoot, "MouseLeftButtonDown");<br />varup=Observable.FromEvent(LayoutRoot, "MouseLeftButtonUp");<br />IObservable<Point>whereUserIsDragging=<br />move.SkipUntil(down)<br />.TakeUntil(up)<br />.Repeat()<br />.Select(e=>e.EventArgs.GetPosition(LayoutRoot));<br />whereUserIsDragging.Subscribe(p=>Paint(p.X, p.Y));<br />
  26. 26. RX DEMO<br />
  27. 27. MVVMPATTERN FOR BINDABLE UI<br />
  28. 28. APP LOGIC IN CODE BEHIND IS HARD TO TEST AND MAINTAIN<br />VIEW<br />XAML<br />DataModel<br />Code-Behind<br />EventHandlers<br />
  29. 29. SEPARATE USINGMVVM<br />VIEW<br />XAML<br />Code-Behind<br />Change notification<br />Data-binding and commands<br />VIEW MODEL<br />Data Model<br />State + Operations<br />
  30. 30. COMMUNICATION<br />View Model<br />View Model<br />App Service<br />View Model<br />View Model<br />View Model<br />App Service<br />View Model<br />
  31. 31. EVENT AGGREGATOR<br />View Model<br />View Model<br />App Service<br />View Model<br />Event Aggregator<br />App Service<br />View Model<br />View Model<br />View Model<br />
  32. 32. VIEW MODEL COMMUNICATION<br />View<br />View<br />XAML<br />XAML<br />Code-Behind<br />Code-Behind<br />View Model<br />Data Model<br />View Model<br />State + Operations<br />Data Model<br />State + Operations<br />Message<br />Publish messages<br />View<br />XAML<br />Code-Behind<br />Subscribe to messages<br />View Model<br />Event Aggregator<br />Message<br />State + Operations<br />
  33. 33. MVVM SHOULD BE LIGHT WEIGHT<br />http://www.flickr.com/photos/treehouse1977/2892417805/<br />
  34. 34. http://mvvmlight.codeplex.com/<br />
  35. 35. MVVM DEMO<br />http://www.flickr.com/photos/20792787@N00/2248623391/<br />
  36. 36. DIKEEP THINGS SEPARATE<br />More in-depth information:<br />The Dependency Inversion Principle Applied<br />Fredrik Kalseth, Friday 10:20<br />http://www.flickr.com/photos/omarrun/4672531253/in/photostream<br />
  37. 37. DI LETS YOU INJECT EXTERNALDEPENDENCIES<br />
  38. 38. IMPORTANT TECHNIQUE ON WP7 TO SIMULATE SENSORS<br />http://www.flickr.com/photos/howzey/2880455762/<br />
  39. 39.
  40. 40. ISOLATED STORAGEFOR SIMPLE DATA STORAGE<br />
  41. 41. NOSQLFOR WP7?<br />
  42. 42. DI &ISOLATED STORAGEDEMO<br />http://www.flickr.com/photos/omarrun/4672531253/in/photostream<br />
  43. 43. METRO DESIGN LANGUAGE<br />
  44. 44. PIVOT CONTROL<br />
  45. 45. HUB CONTROL<br />
  46. 46. BLEND 4DEMO<br />
  47. 47. LOCATION AWARENESSIS KEY WHEN ON THE GO<br />
  48. 48. SAME API IN .NET 4 & WP7<br />http://www.flickr.com/photos/photograham/198324031/<br />
  49. 49. LOCATION AWARENESSDEMO<br />
  50. 50. PUSH NOTIFICATIONSKEEP YOU INFORMED<br />
  51. 51. WP7 PUSH NOTIFICATIONS<br />Your WP Application<br />Hand off channel URL<br />2<br />Your Web Application<br />PUSH CLIENT<br />Notification Namespaces<br />Push Library<br />4<br />Push<br />message<br />3<br />Push message<br />1<br />Open Channel<br />Microsoft Push Notification Services<br />
  52. 52. PUSH NOTIFICATIONS DEMO<br />http://www.flickr.com/photos/kozloski/2306510520/<br />
  53. 53. SUMMARY:- TDD- RX & ASYNC- MVVM & IOC- BLEND 4- LOCATION- NOTIFICATION<br />http://www.flickr.com/photos/20792787@N00/2248623391/<br />
  54. 54. FORK ME ON GITHUB<br />http://github.com/follesoe/FlightsNorway<br />
  55. 55. THANKS!<br />JONAS FOLLESØ<br />jonas@follesoe.no<br />http://jonas.follesoe.no<br />@follesoe<br />

×