1. Deep Dive into WinJS
Dmitri Artamonov
dmitria@bluemetal.com
@dartamon
MCT Summit North America | October, 17th – October 20th, 2012 | Redmond
2. Introductions
• Your name
• Web, client or other?
• What’s drawing you towards WinJS?
MCT Summit North America | October, 17th – October 20th, 2012 | Redmond
3. Agenda
• Introductions
• Under the hood
• Place in the universe
• Patterns and practices
• Integration with enterprise systems
• Managing WinJS development
MCT Summit North America | October, 17th – October 20th, 2012 | Redmond
4. MCT Summit North America | October, 17th – October 20th, 2012 | Redmond
5. Under the hood
• Language projections
• Connected to same WinRT components
• Hardware-accelerated JS technology from IE
• Will WinJS evolve away?
• Windows Phone 8
MCT Summit North America | October, 17th – October 20th, 2012 | Redmond
6. MCT Summit North America | October, 17th – October 20th, 2012 | Redmond
7. Where does it fit?
• Rapid Development
• Reuse web monkeys
• Better view surface on top of C# logic
• Large existing ecosystem for developers
• Cheaper UI design process
MCT Summit North America | October, 17th – October 20th, 2012 | Redmond
8. MCT Summit North America | October, 17th – October 20th, 2012 | Redmond
9. Other Libraries
• jQuery
• Graphing and Charting
• Knockout.js
• You can even create apps without WinJS
MCT Summit North America | October, 17th – October 20th, 2012 | Redmond
10. Patterns - Promises
• Async pattern
• function – then – done
• Still a single thread!
• Careful accessing resources not yet returned
MCT Summit North America | October, 17th – October 20th, 2012 | Redmond
11. Patterns – MVVM…
• No encapsulation of actions
• Bloated VMs
• Implementation – one context per view
• No two-way bindings in WinJS
• Bindings in WinJS require knowledge of View
MCT Summit North America | October, 17th – October 20th, 2012 | Redmond
12. MCT Summit North America | October, 17th – October 20th, 2012 | Redmond
13. MCT Summit North America | October, 17th – October 20th, 2012 | Redmond
14. MCT Summit North America | October, 17th – October 20th, 2012 | Redmond
15. Patterns - MVC
• Standard web pattern for ~17 years
• Controllers for user input
• AM/DM conversion with namespaces and
classes
• Classes and namespaces are observable
• Multiple contexts – regions…
MCT Summit North America | October, 17th – October 20th, 2012 | Redmond
16. Demo - MVC
MCT Summit North America | October, 17th – October 20th, 2012 | Redmond
17. Patterns - Regions
• Data contexts defined for individual DOM
elements
• data-win-bind and data-win-bindsource
• Declarative and programmatic ways
MCT Summit North America | October, 17th – October 20th, 2012 | Redmond
18. Patterns – Modules and DI
• Information hiding done via modules
• Anonymous self-executing function with
parameters
• Code inside module is private
• Parameters allow dependency injection and
testing
• Data exposed via namespaces and classes
MCT Summit North America | October, 17th – October 20th, 2012 | Redmond
19. Patterns – .winmd components
• C# good at logic and model manipulation
• Use it, expose data via component to WinJS
• Access it as normal namespace/class
• Take advantage of performance of C++/C#
MCT Summit North America | October, 17th – October 20th, 2012 | Redmond
20. Patterns - Dynamic code loading
• Deploy once, keep updating
• Forbidden by security for the Windows Store
• Uses execUnsafeLocalFunction
• Alternatives – iframe, Fragments API
MCT Summit North America | October, 17th – October 20th, 2012 | Redmond
21. Practices – Blend design process
• Blend with WinJS
• No broken module references or .targets files
• True handoff from designer to developer
MCT Summit North America | October, 17th – October 20th, 2012 | Redmond
22. Demo – Blend with Javascript
MCT Summit North America | October, 17th – October 20th, 2012 | Redmond
23. Integration with Enterprise Systems
• File Picker API - fluid file system
• Roaming API – unified experience
• Share Contract – enterprise workflows
• Tiles – enterprise dashboards
• Windows Push Notification Services for
communication through tile updates
MCT Summit North America | October, 17th – October 20th, 2012 | Redmond
24. Demo – Executive Dashboard
MCT Summit North America | October, 17th – October 20th, 2012 | Redmond
25. Enterprise Store (unofficial)
• Private store for the enterprise
• Enterprise machines can deploy from fixed set
of apps
• Enforce security policies
• Restores controlled enterprise environment
MCT Summit North America | October, 17th – October 20th, 2012 | Redmond
26. MCT Summit North America | October, 17th – October 20th, 2012 | Redmond
27. Managing WinJS - Costs
• Training
• Design – Blend!
• Development
• Testing
• Deployment
• Maintenance
MCT Summit North America | October, 17th – October 20th, 2012 | Redmond
28. Managing WinJS (cont’d)
• What happens to legacy C# apps?
• How to migrate legacy web applications to
Windows 8?
• Writing cross-platform apps
MCT Summit North America | October, 17th – October 20th, 2012 | Redmond
29. A Big Thanks to our Sponsors
Platinum Sponsor
Gold Sponsors
MCT Summit North America | October, 17th – October 20th, 2012 | Redmond
30. Questions?
• WinJS Samples:
http://code.msdn.microsoft.com/windowsapps/
Windows-8-Modern-Style-App-Samples
• BlueMetal Blog: http://blog.bluemetal.com
• dmitria@bluemetal.com
• @dartamon
MCT Summit North America | October, 17th – October 20th, 2012 | Redmond
Notas do Editor
Less training with web monkeys and designers who already know HTMLDesign process with blend actually worksDevelopment is easier and iterativeTesting can be easily done with dependency injection modulesDeployment is dead simple – Windows StoreMaintenace – just HTML/JS