3. beyond capabilities *lots of other Silverlight frameworks, libraries, patterns out there – sorry if I missed your favorite
4. where are we? ASP.NET Client Application Services WCF Data Services WCF RIA Services navigation search extensible applications with MEF
5. ASP.NET Client App Services ASP.NET services available to Silverlight clients ASP.NET membership roles profiles no specific client libraries here, just add a reference and make the call
7. where are we? ASP.NET Client Application Services WCF Data Services WCF RIA Services navigation search extensible applications with MEF
8. RESTful services (in general) HTTP Request URL Resources VERB Res 1 GET Payload Res 2 POST PUT Res 3 XML JSON DELETE Res 4 XML JSON HTTP Response Status Payload
9. odata Open Data Protocol ( odata) www.odata.org published under the Open Specification Promise Extends the AtomPub standard to add an addressing scheme a mechanism for schema alternate representation – JSON handling for concurrent updates handling for batched requests
12. Customrequest metadata LINQ Query generated proxy code metadata .NET OData Implementation WCF Data Services Libraries Windows Azure Storage Java PHP SharePoint WebSphere Atom implementation of odata for the client and the server “Other” OData Implementations
13. enough hot air, do a demo WCF Data Services from Silverlight
14. WCF Data Services oData – There’s a Feed for That oData – How to Create a Feed for That To learn about OData go to Pablo/Mike’s talks Tuesday 11.30am Lagoon L Tuesday 3pm Breakers H ( check 2 B sure )
15. where are we? ASP.NET Client Application Services WCF Data Services WCF RIA Services navigation search extensible applications with MEF
16. WCF RIA Services DomainService Stateless CRUD + App Logic class PlateViewDomainService IQueryable<Restaurant> GetRestaurants() IQueryable<Restaurant> SearchRestaurant(string) void AddRestaurant(Restaurant) Validation and authorization rules, Application workflows, … Data Model class Restaurant DomainContext Stateful view + Bindable Data class PlateViewDomainService EntityList<Restaurant> Books { get } EntityQuery<Restaurant> GetRestaurantQuery() EntityQuery<Restaurant> SearchRestaurantQuery(string) class Restaurant Data members + Validation Data Model + Metadata + Shared Code Services Rich Internet Application Presentation Logic Data Access Layer App Logic Network DomainContext Data Service DB Under the covers infrastructure Note: Slide stolen from Brad Abrams
17. WCF RIA Services WCF RIA Services (fka .NET RIA Services) You’re building an application You’re responsible for both server and client deep in business logic and semantics WCF Data Services (fka “Astoria”) You’re exposing/acquiring data You control one side or the other, not both CRUD among arbitrary producers / consumers logic and semantics are invisible NB: Slide stolen from Brad Abrams
19. WCF RIA Services Developing with WCF RIA Services Quickly & Effectively To learn about WCF RIA Services go to Nikhil Kothari’s talk Tuesday 1:30pm Lagoon H ( check 2 B sure )
20. where are we? ASP.NET Client Application Services WCF Data Services WCF RIA Services navigation search extensible applications with MEF
21. navigation Page Frame displays a Page Page <UserControl> <Frame Source=“authors.xaml”/> authors.xaml navigation between pages call Frame.Navigate() or set the Source property or use a HyperlinkButton ( NavigateUri/TargetName ) navigation history call Frame.[Can]Go[Back()/Forward()] books.xaml
22. navigation Page Frame displays a Page Page <UserControl> <Frame Source=“authors.xaml”/> authors.xaml navigation can integrate with the browser enables hyperlinking into Silverlight content requires a browser! requires a hidden iframe on the hosting page for top levelFrames not nested frames books.xaml
24. enough hot air, do a demo Navigation Framework in Silverlight 4
25. where are we? ASP.NET Client Application Services WCF Data Services WCF RIA Services navigation search extensible applications with MEF
26. search search engines visiting a page with Silverlight read robots.txt and sitemap read/index the page title read/index the <meta name=“description”/> read/index the surrounding HTML( if any ) will not read XAP or dynamic Silverlight content approach alternate content in the <object/> tag for both search engines & down-level clients
27. enough hot air, do a demo offering alternate content to search note – I stole this demo, it comes from the WCF RIA Services Code Gallery and is called “Silverlight Store”
28. WCF RIA Services Search Engine Optimization for MS Silverlight To learn more about SEO go to Brad Abrams’ talk Wednesday 12.00 Lagoon B ( check 2 B sure )
29. where are we? ASP.NET Client Application Services WCF Data Services WCF RIA Services navigation search extensible applications with MEF
30. extensible applications with MEF the Managed Extensibility Framework “an extensible framework for composing applications from a set of loosely-coupled parts discovered and evolving at run-time“ (mike) versions .NET Framework shipping with Silverlight 4 .NET Framework 4 shipping with VS 2010 Silverlight 3 & .NET Framework V3.5 Sp1 ( from source on CodePlex )
31. essential MEF import (e.gDebuggerVisualizer) export (e.gDebuggerVisualizer) Component (e.g. Visual Studio) Component (e.g. XML Visualizer) MEF Composition Engine MEF discovers exports via catalogs several “in box” catalogs plus many extensibility points supports available exports changing at runtime and/or can be handed component instances
32. one application of MEF initial, small download MyApp.xap Extras.xap additional functionality
33. enough hot air, do a demo the Managed Extensibility Framework
34. MEF Silverlight Optimization & Extensibility with MEF To really learn about MEF go along to Glenn Block’s talk Tuesday, 3.35pm Lagoon B ( check 2 B sure )
35. where are we? ASP.NET Client Application Services WCF Data Services WCF RIA Services navigation & search extensible applications with MEF Model View ViewModel (MVVM)
37. why MVVM? needs to be designable “where does the DisplayDetail flag go?” Data/ Service Layer View (e.g. Person Master/Details) Model (e.g. PeopleModel) Code XAML Person Business Layer View model needs to be testable and maintainable Silverlight client
38. why MVVM? Open to techniques like dependency injection, mocking to aid testability ViewModel is the View’s DataContext. Bind to data, commands ViewModel Designers & Design Tools like XAML so maximize its use View (e.g. Person Master/Details) bridges the gap Model (e.g. PeopleModel/Person) XAML Code Hard to test this code without UI so minimize/remove pure “Data” pure “Display”
39. commands ICommandseparates UI from functionality No ICommand implementation in Silverlight 4 but some controls make use of ICommand No need for the Button to be aware of the code that handles this Command
40. triggers, actions, behaviors Blend team’s simple concepts -> powerful results attach/detach yourself to/from any DependencyObject Trigger = START SOMETHING Action == DO SOMETHING Behavior == GET OUT OF JAIL FREE