470 likes | 665 Views
TechDays 12. Building Windows 8 LOB apps Lessons learned. Mat Velloso Senior Software Development Engineer Microsoft Products and Services IT – Engineering Architecture. Agenda. What we’ve built, our little proof of concepts Lessons learned. The “Windows 8 effect”.
E N D
TechDays 12 Building Windows 8 LOB apps Lessons learned Mat Velloso Senior Software Development Engineer Microsoft Products and Services IT – Engineering Architecture
Agenda What we’ve built, our little proof of concepts Lessons learned
The “Windows 8 effect” How will it affect line of business apps? Do we need to build them differently? Why should we migrate apps into Win 8 apps?
thinking easy far more than creating Designing simple UI requires to use , complexity and over-complication a
Task driven apps + … + + app app app Task centric apps
Lesson #1: What? No SQL Server? Build great services, everything depends on it Focus on REST, JSON, ODATA Careful with integrated authentication Careful with connectivity Loock at local storage options
Lesson #2: HTML/JS has strengths Richer design (and easier to find designers) Easier to merge HTML in your app HTML begs for simplicity. Simplicity is good.
Lesson #3: Don’t build a duck… “A duck can walk, fly and swim. And does all these things poorly” Don’t force a desktop application into a Win 8 app.
Lesson #4: Each UI = 4 UI’s (or more) X different resolutions… X (touch + mouse + stylus) +Tiles, secondary tiles, badge, toast, search UI, file picker, etc… = don’t underestimate the UI effort Landscape Portrait Snap and Full
Lesson #5: Desktop apps are OK too If your requirements don’t fit into a Win 8 store app, that’s probably because you shouldn’t be building one. And that’s ok, turns out we have a great desktop as well
Lesson #6: JavaScript is evolving http://www.typescriptlang.org/
Lesson #7: Embrace async Resistance is futile…
Lesson #8: Reuse depends on your code Between HTML/JS app and web: • More interop = less reuse • More WinJS = less reuse In C#: • Careful with the async syntax you use • Careful with method signatures • Create libraries
Lesson #9: Performance tests Test on low spec machines Just because it runs fine on your i7 with 16GB RAM it doesn’t mean this is what users will see
Lesson #10: Invest more in UX More design iterations Think about how users will really use the app Test it with real people
Lesson #11: Async != multi thread You can do async in a single thread (which is the most common)
Lesson #11: JavaScript or C# WinRT, COM+ Win32, .Net Web Services, REST, etc. HTML5 Application XAML Application XAML Controls and Styling Hosted HTML HTML JavaScript UI .Net code CSS Background Tasks .Net “stub code” for interop WRC Library Business Rules .Net .Net class library
Lesson #12: C#/XAML or JS/HTML? • If you’re rendering HTML, you probably want JS/HTML • WebViewer in XAML has a few limitations, be careful • If you need real multi-threading (not just async), C# might be a better choice Question: How many XAML designers vs how many HTML designers are out there? Lesson learned: Advanced UI designing is usually easier achieved in HTML.
Lesson #13: Communicate the principles When building an app for a stakeholder (a manager, a department, a customer...) make sure they understand why and what Windows 8 store app are. It will help driving the app towards the right design.
Lesson #14: Don’t trust the client code Highly sensitive code should stay behind your services Validate everything from your services side Demo: “Obfuscation” tricks and limitations
Lesson #15: Careful with WRC library types Those types need to be supported beyond C# and .Net
Lesson #16: Understand the constraints And do that BEFORE you start coding (not after you’ve spent 4 months building something )
Lesson #17: WRC library shouldn’t touch the UI Yes, it can... But it really shouldn’t
Lesson #18: Web Services Move to REST/JSON/ODATA (...and away from SOAP/WSDL...) Why? • Simplicity • Less bandwidth • Broader compatibility • Flexibility • WCF in Win 8 apps isn’t the same as in traditional apps
Lesson #19: BYO devices Windows RT: Not domain joined. Will your app work?
Lesson #20: Make web work first First step towards enabling Windows 8 is having your web apps working well with touch and low spec machines. Do that first, then worry about building apps (make web work on tablets and phones isn’t just about “making it HTML5”)
Lesson #21: Internal vs external app store If your app is internal use only, should it comply with the external app store’s rules? Suggestion: Internal app store rules App Store Rules
Lesson #22: Consumerization No more user manuals Self discoverability Any device, anywhere Bring your own device... And why not BYO Apps?
Lesson #23: Simplicity == Gold UI simplicity Architecture simplicy Process simplicity We need a whole lot more of that
Thank you Mat Velloso mat.velloso@microsoft.com