1 / 44

Building Large-Scale Data-Centric Applications with Silverlight

Learn how to build and deploy large-scale data-centric applications with Silverlight, including packaging strategies, client configuration, and application instrumentation.

parson
Download Presentation

Building Large-Scale Data-Centric Applications with Silverlight

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Building Large-Scale Data-Centric Applications with Silverlight • Ramya Parthasarathy • Roman Rubin

  2. About us • Roman Rubin – Wolters Kluwer roman.rubin@wolterskluwer.com • Ramya Parthasarathy – Wolters Kluwer ramya.parthasarathy@wolterskluwer.com • Wade Wegner – Microsoft wade.wegner@microsoft.com

  3. CT Corporation is … • The leader for registered agent, corporate compliance and governance solutions, CT Corporation's expertise defines every customer contact. Law firms and corporate legal departments turn to its reliable service organization and intelligent technology for the precision and speed they need.

  4. About hCue • CT’s hCueis a market-leading, web-based, secure entity management and board collaboration solution.  It consolidates all your essential corporate data in one central repository, facilitates collaboration and information sharing across your organization and assists you to meet state and SEC Section 16 compliance requirements.

  5. About hCue • A large product in production for more than five years • Currently approx 300+ active pages delivered using ASP.Net 2.0 platform with Oracle back-end (database) • Multiple sub-sites (sub-domains and virtual directories) • Approx 30 batches / Windows services • Approx 200 tables moved to SQL Server, 400 SPs, 500 selects…

  6. What to expect in this session • How we packaged the application (XAPs/DLLs) • Overview of Application Building Blocks for Silverlight Development (Instrumentation, Client Configuration, MVVM, Light-weight Web Services) • How we deploy our Web Services (DX)

  7. Packaging large Silverlight LOB Application

  8. Application Packaging • Initial download time (XAP size) • Browser working set size • Impact of long running application • Maintainability

  9. One large XAP model One HUGE XAP • Default model supported by tooling and default project templates Application = One HUGE XAP HTML #1 Module #1 Module #2 Module #3 Module #4 How does it stack up? • Initial download time (XAP size) - Large • Browser working set size - Large • Impact of long running application - Impacted • Maintainability - Difficult

  10. Primary XAP with DLLs model One HUGE XAP Application = OneHUGEXAP HTML #1 Module #1 Module #2 Module #3 Module #4 Module #2 Module #3 Module #4 Module #1 Application = One Primary XAP + Multiple on-demand DLLs Primary XAP HTML #1 How does it stack up? • Initial download time (XAP size) – Can be controlled • Browser working set size – Increases over time • Impact of long running application – Impacted

  11. Multi-XAP model Application = OneHUGEXAP HTML #1 Application = One Primary XAP + Multiple on-demand DLLs Module #4 Module #2 Module #3 Module #1 Module #3 Module #2 Module #4 Module #1 Module #3 Module #1 Module #2 Module #4 Primary XAP Application = Multiple modules (XAPs) each with independent URI HTML #1 • Initial download time (XAP size) – Under control • Browser working set size – Under control • Impact of long running application – Mitigated • Maintainability – Under control XAP #4 XAP #3 XAP #2 Primary XAP HTML #1 HTML #3 HTML #2 HTML #4

  12. Multi-XAP model • Exercise care while partitioning to avoid constant switching between modules • Data sharing between modules • Fits in existing project templates and tooling support

  13. Application Packaging - Summary • Establish design objective for max XAP size • Establish design objective for browser’s max-working-set-size • Choose a model that fits your needs early in development. • Start your application with at least two XAPs, even if you are only prototyping.

  14. Multi-XAP model: Wrapper generation Primary XAP XAP #2 XAP #3 XAP #4 Silverlight Object Tag related options Module #1 Module #4 Module #2 Module #3 SLHost.axd xml HTML HTML HTML HTML Browser DOM

  15. Multi-XAP model: Application Configuration Primary XAP XAP #2 XAP #3 XAP #4 Silverlight Client Config. Providers Module #2 Module #1 Module #4 Module #3 SLHost.axd HTML HTML HTML HTML Browser DOM Silverlight App Domain Encrypted Client Config Data blocks Client Config. API

  16. Layout, Navigation • Define a common Layout for our pages (MasterPage concept from ASP.NET world). • Make Navigation between modules seamless • Make Navigation in a “use-case” seamless

  17. YourModule : UxModule : Application MasterPage : UxMasterFrame UxPageFrame Header : UserControl LeftNavArea EntitySearch : HCuePage MyOrders: UserControl UxViewFrame CustPreview : UserControl CustSearchResult : UserControl ContactUs: UserControl CustSearch: UserControl ViewFrame’s optional footer

  18. Re-inventing ASP.Net mind-set • Horizontally scalable packaging model with no upper limit • Logical application that can span multiple XAPs • Modules (or XAPs or Silverlight applications) • Master Page • SilverlightPageFrame, Pages,ViewFrame,Views, Abstract UX containers • Heavyweight (PageFrame) and lightweight (ViewFrame) navigation scheme • Consistent declarative navigation controls with declarative parameter bindings. • Extensible “logical-application-level” Client Configuration

  19. Instrumentation

  20. Instrumentation • Server-side and client-side • Performance Log, Trace log and Error log • Monitor health of production application • Understand site-usage • Trouble-shoot issues during an outage • Defect fixing during development • Performance tuning during development • Server side: Stored to database • Client side: In memory logging

  21. Client-side Instrumentation • Stored in memory. Therefore lives as long as the Silverlight application lives • A sparse tree of loggers arranged by namespace in a hierarchical manner. • Enforces upper limits on memory usage • Provides embedded UI for reviewing logs, configuring logs, and exporting logs • Can be configured to enable / disable logging at a node-level • Can be configured to log only messages that meet a defined message level threshold

  22. Instrumentation – Performance Log

  23. Instrumentation – Trace Log

  24. Instrumentation – Error Log

  25. MV-VM Extensions

  26. Visual Hierarchy – Perceived vs Actual An Use-case container… VM Transactions Review Search Result Search Perceived Actual An Use-case container… Search XAML + Code-behind Review Search Result XAML + Code-behind Transactions XAML + Code-behind VM

  27. MV-VM Flexibility – Partitioning ViewModel An Use-case container… VM VM Transactions Review Search Result Search Perceived Actual An Use-case container… Search XAML + Code-behind Review Search Result XAML + Code-behind Transactions XAML + Code-behind VM VM

  28. MV-VM - Questions As our use-case complexity increased we were struggling with many fundamental questions, some ‘philosophical’… • What is the definition/scope/boundary of a ‘View’? • How does composite Views fit in to the larger pattern? • Who is responsible for ‘provisioning’ ViewModel? • Is DataContext a good choice for attaching ViewModel to View? • If we do not use DataContext, how can we do data-binding to substance of ViewModel? • Can we provision ViewModel using Dependency Injection pattern (MEF for example…) • Are we abusing the MV-VM pattern?

  29. MV-VM Flexibilities An Use-case container… VM Transactions VM Review Search Result Search ? Perceived Actual An Use-case container… Search XAML + Code-behind Review Search Result XAML + Code-behind Transactions XAML + Code-behind ? VM VM

  30. Our MV-VM Extended Implementation • Can split / merge ViewModel with minimal impact • Provisioning ViewModel • Can be provisioned declaratively (XAML) or using code • Not a static resource, can be attached to any FrameworkElement • Can attach multiple-view-models to parent UI container • Can be provisioned at any level of UI hierarchy • Strongly typed Connector model to declaratively bind to a ViewModel • Recycled when parent FrameworkElement goes out of scope • Expression Trigger/Action/Behavior extensions for • Declarative binding to ViewModel substance • Route actions to ViewModel with parameter bindings.

  31. Web Services Deployment

  32. Service deployment www.wk.com UX • One website for both UX and Services • Easily set up by default templates • Config file size and proxy count increase when more web services are added.

  33. Service deployment ux.wk.com api.wk.com UX • UX (passive) and Services are segregated • Requires more complex setup than first model

  34. Service deployment ux.wk.com UX api1.wk.com api2.wk.com api3.wk.com • Services are partitioned to distinct end-points • Tolerant UI can improve perceived availability • Ease of service maintenance, enhancement and deployment

  35. Service deployment DR PRIMARY UX api1.wk.com https://ux.wk.com api3.wk.com api3.wk.com • Services are partitioned to distinct end-points • Enables partial DR capability

  36. Service deployment ux.wk.com UX api1.wk.com api2.wk.com Content Delivery Networks • CDN used to push passive UI closer to end-user

  37. Light weight proxy • Generic service contracts • IDxService<TRequest, TResponse> • Light-weight-strongly-typed proxy • Zero web.config entries (Convention over configuration) • Sharing data contracts - Issues • Runtime parity between Silverlight and core .Net • Bindable data contracts

  38. Service Deployment – Takeaways • Consider partitioning UX from web-service • Consider partitioning the services • Consider writing UI that tolerates service unavailability • Consider writing light-weight universal proxy and universal contracts. • Consider these aspects from day #1

  39. More…

  40. More foundation challenges • DataSource With client-side caching, paging, sorting and not tied to type-of-source • Runtime discovery of composite parts • Messaging • Extending role-based security to Silverlight client • Client side state management • Client side cache management • To-use or not-to-use Isolated storage • What-if-out-of-browser?

  41. Why Silverlight…

  42. Why Silverlight? • Compressed budget Under tight economy, the budget that we could afford was lower than our comfort zone. • Compressed timeline Business wanted to have the product out much sooner than we were comfortable. • Dense and interactive experience Compressed user-flow and dense screens that are highly interactive. • Size was overwhelming We had to deliver many complex screens.

  43. Questions? Need Answers? • Ramya Parthasarathy (ramya.parthasarathy@wolterskluwer.com) • Roman Rubin (roman.rubin@wolterskluwer.com) Don’t forget to fill out evaluation forms.

More Related