Chapter 14: Application Archetypes
J.D. Meier, Alex Homer, David Hill, Jason Taylor, Prashant Bansode, Lonnie Wall, Rob Boucher Jr, Akshay Bogawat
- Understand the application types covered in this guide.
- Understand the tradeoffs necessary when choosing an application type.
- Understand the design impact when choosing an application type.
- Determine the appropriate application type for your scenario and requirements.
Your choice of application type will be determined by both the technology constraints you face and the type of user experience you plan to deliver. For example, you must decide whether the clients you intend to serve will have a permanent network connection available, whether you must deliver rich media content to anonymous users for viewing in a Web browser, or whether you will predominantly service a small number of users on a corporate intranet.
Use the following Application Types Summary to review each application type and its description. Use the table in the Choosing Application Types section to make an informed choice when choosing an application type, based on the benefits and considerations for each type. Use the Common Scenarios and Solutions section to map your application scenario to common application type solutions.
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.
Mobile Application Archetype
A mobile application will normally be structured as a multilayered application consisting of user experience, business, and data layers, as shown in the following illustration. Figure 1 Mobile application archetype
When developing a mobile application, you may choose to develop a thin Web-based client or a rich client. If you are building a rich client, the business and data layers are likely to be on the device itself. If you are building a thin client, the business and data layers will be on the server.
Rich Client Application Archetype
Rich client user interfaces can provide high performance, improved interactivity, and a rich user experience for applications that must operate in stand-alone, connected, occasionally connected, and disconnected scenarios. Figure 2 Rich client application
Rich Internet Application (RIA) Archetype
A rich Internet application (RIA) runs in the browser in a sandbox. The benefits of an RIA over traditional Web applications include a richer user experience, improved user responsiveness, and improved network efficiency. Figure 3 Rich Internet application
In the context of this guide, a service
is a public interface that provides access to a unit of functionality. Services literally provide some programmatic ‘service’ to the caller that consumes the service. Figure 4 Service application
Services are loosely coupled, and can be combined within a client or within other services to provide functionality that is more complex. Services are distributable, and can be accessed from a remote machine as well as from the local machine on which the service is running. Services are also message oriented, meaning that service interfaces are defined by a Web Services Description Language (WSDL) document, and operations are called using messages based on XML schemas, which are passed over a transport channel. In addition, services support a heterogeneous environment by focusing interoperability on the message/interface definition. If components can understand the message and interface definition, they can use the service regardless of their base technology.
Web Application Archetype
The core of a Web application is its server-side logic. The Web application layer itself can be comprised of many distinct layers. A typical example is a three-layered architecture comprising presentation, business, and data layers. Figure 5 Web application
Choosing Application Types
Choose the appropriate application type by considering your specific requirements and infrastructure limitations. Use the Application Type Considerations table below to make an informed choice based on the benefits and considerations for each application type.
Application Type Considerations
|Application type ||Benefits ||Considerations|
|Mobile Applications ||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 ||Platform-specific |
| ||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 || |
|Service applications ||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 || |
|Web applications ||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 are 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 it’s 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.