Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
2012 MCT Summit Presentation
1. Deep Dive into WinJS
Dmitri Artamonov
MCT Summit North America | October, 17th – October 20th, 2012 | Redmond
2. Agenda
• The C# Legacy
• What’s under the hood?
• Where does WinJS fit?
• What’s new in WinJS?
• Patterns and practices
• Integration with enterprise systems
• Managing WinJS development
MCT Summit North America | October, 17th – October 20th, 2012 | Redmond
3. Outside of scope
• Implementation details
• WinJS features common with C#/XAML
• Process lifecycle management
• Etc…
MCT Summit North America | October, 17th – October 20th, 2012 | Redmond
4. Away from C# to WinJS
• Difference in thinking
• Code organization
• Available tools
• Is C# now obsolete?
MCT Summit North America | October, 17th – October 20th, 2012 | Redmond
5. MCT Summit North America | October, 17th – October 20th, 2012 | Redmond
6. Under the hood
• Language projections
• Connected to same WinRT components
• Hardware-accelerated JS technology from IE
• Will WinJS evolve away?
MCT Summit North America | October, 17th – October 20th, 2012 | Redmond
7. MCT Summit North America | October, 17th – October 20th, 2012 | Redmond
8. The 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
9. MCT Summit North America | October, 17th – October 20th, 2012 | Redmond
10. The Fit - Other Libraries
• jQuery
• Graphing and Charting
• MVC
• You can even create apps without WinJS
MCT Summit North America | October, 17th – October 20th, 2012 | Redmond
11. Patterns - Promises
• Async pattern
• function – then – done
• Potentially multi-threaded
• Careful accessing resources not yet returned
MCT Summit North America | October, 17th – October 20th, 2012 | Redmond
12. Patterns – MV…
• MVVM had problems
• Poor balancing of responsibilities
• Implementation – one context per view
• Mostly wasted code-behind
• No two-way bindings in WinJS
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. MCT Summit North America | October, 17th – October 20th, 2012 | Redmond
16. Patterns - MVC
• Controllers for user input
• AM/DM conversion with namespaces and
classes
• Classes and namespaces are observable
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 – C# .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
19. 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
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. 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
22. Managing WinJS - Costs
• Training
• Design
• Development
• Testing
• Deployment
• Maintenance
MCT Summit North America | October, 17th – October 20th, 2012 | Redmond
23. Managing WinJS (cont’d)
• Legacy Applications
• Browser -> WinJS != WinJS -> Browser
• Code compatibility and migration
• Deploying via the Enterprise Store
MCT Summit North America | October, 17th – October 20th, 2012 | Redmond
24. 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. A Big Thanks to our Sponsors
MCT Summit North America | October, 17th – October 20th, 2012 | Redmond