TechDays 12
description
Transcript of TechDays 12
TechDays 12Building Windows 8 LOB apps
Lessons learned
Mat VellosoSenior Software Development EngineerMicrosoft Products and Services IT – Engineering Architecture
AgendaWhat we’ve built, our little proof of conceptsLessons 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?
Our Proof of Concept Apps…
SharePoint Hub POC
SharePoint Hub POC
SharePoint Hub POC
SharePoint Hub POC
SharePoint Hub POC
SharePoint Hub POC
Approvals
Approvals
Approvals
Approvals
Approvals
Approvals
Approvals
thinking
easyfar more
than creating
Designing
simpleUI requiresto
use
,
complexity and over-complication
a
+ +app app app
Task centric apps
+ …
Task driven apps
Lessons
Lesson #1: What? No SQL Server?Build great services, everything depends on itFocus on REST, JSON, ODATACareful with integrated authenticationCareful with connectivityLoock at local storage options
Lesson #2: HTML/JS has strengthsRicher design (and easier to find designers)Easier to merge HTML in your appHTML 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 tooIf 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 evolvinghttp://www.typescriptlang.org/
Lesson #7: Embrace async
Resistance is futile…
Lesson #8: Reuse depends on your codeBetween 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 iterationsThink about how users will really use the appTest 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#XAML Application
Hosted HTML
XAML Controls
and Styling
.Net code
WRC Library Background Tasks
.Net “stub code” for interop
.Net class library .Net
HTML5 Application
HTML JavaScript
Web
Ser
vice
s, RE
ST, e
tc.
Win
RT, C
OM+
Win
32, .
Net
CSS
UIBu
sines
s Rul
es
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 principlesWhen 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 codeHighly sensitive code should stay behind your services
Validate everything from your services side
Demo: “Obfuscation” tricks and limitations
Lesson #15: Careful with WRC library typesThose 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 UIYes, it can... But it really shouldn’t
Lesson #18: Web ServicesMove 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”)
Internal app store rules
Lesson #21: Internal vs external app storeIf your app is internal use only, should it comply with the external app store’s rules?
Suggestion: App Store Rules
Lesson #22: Consumerization
No more user manualsSelf discoverabilityAny device, anywhereBring your own device... And why not BYO Apps?
Lesson #23: Simplicity == Gold
UI simplicityArchitecture simplicyProcess simplicity
We need a whole lot more of that
Thank you