5. Introduction
Problem Statement
Problems
◦ N-Tier
◦ Controls
◦ Rich Text Support
◦ Multi-language Support
◦ Customer Devices Interaction
◦ Communications
◦ Extensibility
◦ Offline Support
◦ Interoperability
6. Introduction
Challenges using N-Tier applications
LoB applications use data that needs to flow across tiers
Created and used through basic CRUD operations
In an internet application, there is a trust boundary between
the client and the mid-tier server
Important to have a well defined and secured resources that
are available to the client tier and also what operations are
permitted
7. Introduction
Challenges using N-Tier applications
The validation needs to run on Client and On Server as well as
on Mid-Tiers
Common validation across the tiers
Services that may be shared with other applications
8.
9. Introduction
Vision and Goals
Simplify RIA-style application development
◦ n-tier is hard, and un-natural
◦ Focus on data-driven apps
Bring ASP.NET-style productivity to RIA development
◦ Building blocks for data, security, etc.
◦ Focus on scenarios
10. Introduction
Value Propositions
Focus on data in an end-to-end manner
A unified story for client and server development
A prescriptive framework that targets key scenarios, and
leads the common developer to a pit of success
11. Introduction
Value Propositions
Simplify application development across tiers and trust
boundary
◦ Provides a set of tools to build the multiple tiers of an application
together
◦ Application logic remains aware of tier and trust boundaries
◦ Uses the end-to-end flow of data and metadata described earlier
◦ Code generation and shared code
Enhance the experience by providing multiple choices for sharing
logic while respecting tier and trust boundaries
12. Introduction
A Unified Story for Client and Server
Client is an extension of the server
Service
A single logical application
Rich Internet Application
Browser Application
Presentation App Data Access
HTML Network
Logic Logic Layer
DB
Services
Other Applications
13. Introdution
Value Propositions
Define and support a pattern for exposing a set of operations
on resources
DomainService
◦ Define a set of operations on resources
Framework and Tools
◦ Collaborate to generate code for a corresponding client-tier
◦ Services for authentication and user settings can be used out-of-the
box
14. Introduction
A Prescriptive Pattern
Services
Rich Internet Application
Presentation Domain Network
Domain App Data Access
Logic Context Service Logic Layer
Under the covers infrastructure
DB
15. Introduction
A Single Pattern that Scales and Grows
Support for multiple presentation tiers and data access technologies
.NET Clients Databases
Silverlight, WPF ADO.NET,
ORMs (LTS, EF, …)
Standards
Clients
JavaScript CLR
App Lists/Objects
Logic Repository
Server (nHibernate, …)
Rendering
HTML, SEO,
Printing, … Services
REST/SOAP
SOAP, Unit Test (Azure, …)
Services XML, Code
JSON,
WCF
Binary
19. Recommended Pattern
MVVM
Why?
◦ Separation of concerns
◦ Better Workflow between Developer and Designer
◦ Easier Testability
Why not MVC?
◦ We need to have access to the Code-Behind and MVC doesn’t support
that, only Code-Behind Pattern does, but doesn’t delivers easy
separation of concerns
20. Recommended Pattern
MVVM
Display data in Controls
UI Friendly Entities, UI State, Actions
Entities representing data
32. Beyond the Browser
Out-of-Browser – Already on Silverlight 3
Configuration Based
AppManifest.xml
Can be enabled in an existing application without rebuilding
Install option on its right-click menu
Can run without a network connection
You can implement network detection and provide offline
support when a connection is unavailable
34. Beyond the Browser
Trusted Applications
OOB with elevated privileges
COM Interop in Windows
File system access
Cross-domain networking access
Full keyboard support in Full-Screen Mode
38. Extensibility
Prism v2
Prism is a set of options
Use what you want and ignore the rest
◦ Example:
Choose Modules and Commanding, but ignore Event Aggregation
and Regions