Cheat Sheet: Application Type Matrix
J.D. Meier, Alex Homer, David Hill,
Jason Taylor, Prashant Bansode, Lonnie Wall, Rob Boucher Jr, Akshay Bogawat
- Understand the tradeoffs for each application type choice.
- Understand the design impact of choosing an application type.
- Understand all application types.
- Choose an application type for your scenario and application type.
Use this cheat sheet to understand your choices for the application types. Your choice of application type will be related both to the technology constraints as well as the type of user experience you plan to deliver. Use the Application Types Summary to review
each application type and its description. Use the Benefits and Considerations Matrix to make an informed choice of an application type based on the advantages and considerations of each. Use the Common Scenarios and Solutions section to map your application
scenario to common application type scenarios.
Application Types Summary
- Mobile applications. Applications of this type can be developed as thin client or rich client applications. Rich client mobile applications can support disconnected or occasionally connected scenarios. Web or thin client applications support connected
scenarios only. The device resources may prove to be a constraint when designing mobile applications.
- Rich client applications.** Applications of this type are usually developed as stand-alone applications with a graphical user interface that displays data using a range of controls. Rich client applications can be designed for disconnected and occasionally
connected scenarios because the applications run on the client machine.
- Rich Internet applications.** Applications of this type can be developed to support multiple platforms and multiple browsers, displaying rich media or graphical content. Rich Internet applications run in a browser sandbox that restricts access to
some devices on the client.
- Service applications.** Services expose complex functionality and allow clients to access them from local or remote machine. Service operations are called using messages, based on XML schemas, passed over a transport channel. The goal in this type
of application is to achieve loose coupling between the client and the server.
- Web applications.** Applications of this type typically support connected scenarios and can support different browsers running on a range of operating systems and platforms.
Benefits and Considerations Matrix
||Support for handheld devices
||Input and navigation limitations
||Availability and ease of use for out
||Limited screen display area
||Support for offline and occasionally
|Rich client applications
||Ability to leverage client resources
||Deployment complexity; however, a range of installation options such as ClickOnce, Windows Installer and XCOPY are available
||Better responsiveness, rich UI functionality, and improved user experience
||Challenging to version over time
||Highly dynamic and responsive interaction
||Support for offline and occasionally connected applications
|Rich Internet applications (RIA)
||The same rich user interface capability as rich clients
||Larger application footprint on the client machine compared to a Web application
||Support for rich media and graphic display
||Restrictions on leveraging client resources compared to a rich client application
||Simple deployment and the distribution capabilities (reach) of Web clients
||Requirement for deployment of the .NET or Microsoft Silverlight™ run time on the client
||Simple upgrade and version updating
||Cross-platform and cross-browser support
||Loosely coupled interactions between client and server
||No UI support
||Ability to be consumed by different and unrelated applications
||Dependent on network connectivity
||Support for interoperability
||Broad reach, and a standards-based UI across multiple platforms
||Dependent on continual network connectivity
||Ease of deployment and change management
||Difficulty in providing a rich user interface
Common Scenarios and Solutions
Your choice of application type will be driven primarily by the scenarios that you want to support. Use the following scenarios to help understand which application type is the best fit for your needs.
- Mobile applications are suited for scenarios in which you want to support mobile device users.
- Rich client applications are suited for scenarios in which you want to leverage client resources and support disconnected scenarios.
- Rich Internet applications are suited for scenarios in which you want to support advanced graphics and media in a Web-deployed application.
- Service applications are suited for scenarios in which you want to expose a loosely coupled interface to remote clients without a UI.
- Web applications are suited for scenarios in which you want to provide the application’s UI over the Web.
Consider using mobile applications if:
- Your users depend on handheld devices.
- Your application supports a simple UI that is suitable for use on small screens.
- Your application must support offline or occasionally connected scenarios; consider designing a mobile rich client.
- Your application must be device-independent and can depend on network connectivity; consider designing a mobile Web client.
Rich Client Applications
Consider using rich client applications if:
- Your application must support disconnected or occasionally connected scenarios.
- Your application will be deployed on client PCs.
- Your application must be highly interactive and responsive.
- Your application UI must provide rich functionality and user interaction but doesn’t need the advanced graphics or media capabilities of a RIA.
- Your applications must utilize the resources of the client PC.
Rich Internet Applications
Consider using rich Internet applications if:
- Your application must support rich media and provide a highly graphical display.
- Your application must provide a rich, interactive, and responsive UI compared to Web applications.
- Your application will leverage client-side processing in a restricted manner.
- Your application will utilize client-side resources in a restricted manner.
- You want the simplicity of a Web-based deployment model.
Consider using service applications if:
- Your application will expose functionality that does not need UI support.
- Your application must be loosely coupled with its clients.
- Your application must be shared with or consumed by other external applications.
- Your application must expose functionality that will be consumed by applications over the Internet, an intranet, and on the local machine.
Consider using Web applications if:
- Your application does not require the rich UI and media support offered by a rich Internet application.
- You want the simplicity of a Web-based deployment model.
- Your application must be platform-independent.
- Your application must be available over the Internet.
- You want to minimize client-side dependencies and impact, such as disk or processor usage.
Each application type is supported by one or more technologies that can be used to implement your application. Your choice of technology will be driven by scenarios and technology constraints, as well as the capabilities and experience of your development team.
The following presentation-layer technologies are available for creating mobile applications:
- .NET Compact Framework. You can use the .NET Compact Framework to create a rich client mobile application that supports connected or occasionally connected scenarios.
- ASP.NET Mobile. You can use ASP.NET mobile controls to create a thin client mobile application. ASP.NET mobile controls is a set of server-side controls and special page classes that render output specific to the browser making the request.
- Silverlight. You can use Silverlight for mobile devices to provide rich media support and an improved user experience.
Rich Client Applications
The following presentation-layer technologies are available for creating rich client applications:
- Windows Forms. You can use Windows Forms to create applications that provide rich functionality and user experience by utilizing the resources of the client PC.
- Windows Forms with WPF user controls. You can use WPF user controls in Windows Forms applications to provide enhanced rich graphical support within the user interface.
- WPF. You can use WPF to create a rich client application with UI support for 2-D and 3-D graphics, and for animations and media (both video and audio). WPF also includes a two-way data-binding engine.
- XAML Browser Application (XBAP) using WPF. You can create an XBAP that provides all the features of the stand-alone WPF application, but is hosted in a browser.
Rich Internet Applications (RIA)
The following presentation-layer technologies are available for creating rich Internet applications:
- Silverlight. You can use Silverlight to create applications that provide a rich user experience that includes graphics, audio, and video.
The following technologies are available for creating service applications:
- Windows Communication Foundation (WCF). When possible, use WCF to create services in order to benefit from maximum feature availability and interoperability.
- ASP.NET Web services (ASMX). Use ASMX for simplicity and when its ok to host your server from an IIS web server.
The following presentation-layer technologies are available for creating Web applications:
- ASP.NET Web Forms. You can use ASP.NET Web Forms with a wide range of server controls that render HTML in Web browsers.
- ASP.NET Web Forms with AJAX. You can use AJAX in your ASP.NET Web Forms application to improve the user experience by reducing the number of post backs required.
- ASP.NET Web Forms with Silverlight controls. You can use Silverlight controls in your ASP.NET Web application to provide a rich user experience and support media streaming.
- ASP.NET Model-View-Controller (MVC). You can use ASP.NET MVC to create Web applications with built-in support for the Model-View-Controller design pattern. MVC simplifies developing, modifying, and testing the individual components within the application.
- ASP.NET Dynamic Data. You can use ASP.NET Dynamic Data to create functional data-driven Web applications based on a LINQ to SQL or Entity Framework data model.