This project is read-only.
Note that the information on this page is the BETA 1 of a guide that is now released. See http://www.codeplex.com/AppArchGuide for the latest PDF and HTML content.

Chapter 3 - Application Archetypes

- J.D. Meier, Alex Homer, David Hill, Jason Taylor, Prashant Bansode, Lonnie Wall, Rob Boucher Jr, Akshay Bogawat

Objectives

  • 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.

Overview

Your choice of application type will be related to both the technology constraints and the type of user experience you plan to deliver. 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. Application of this type can be developed as thin client or rich client applications. Rich client mobile application can support disconnected or occasionally connected scenarios. Web or thin client applications can support connected scenarios only. The device resources may prove to be a constraint when designing mobile applications.
  • Rich Client Applications.** Application 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.** Application 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.
  • Services Applications.** The basic goal in this type of application is to achieve loose coupling between the client and the server. 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.
  • Web Applications.** Application of this type typically support connected scenarios and can support different browsers running on a range of operating systems and platforms.

Mobile Archetype

A mobile application will normally be structured as a multi-layered application consisting of user experience, business and data layers.

MobileApp.PNG

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 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.

RichClientApp.PNG

Windows Forms, WPF, and Office Business Application (OBA) development environments and tools are available that allow developers to quickly and easily build Rich Client applications. While these technologies can be used to create standalone applications, they can also be used to create applications that run on the client machine and communicate with services exposed by other layers (both logical and physical). These services will expose operations that the client requires; which may include data access, information retrieval, searching, sending information to other systems, backup, and related activities.

Rich Internet Application (RIA)

A Rich Internet Application (RIA) runs in the browser in a sandbox. The benefits of a RIA over traditional Web applications include a richer user experience, better responsiveness, and improved network efficiency.

RichInternetApp.PNG

Service

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 them.

ServiceApp.PNG

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 they are running. Services are message oriented, meaning that service interfaces are defined by a WSDL document, and operations are called using messages based on XML schemas, which are passed over a transport channel. 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

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.

WebApp.PNG

Choosing Application Types

Choose the appropriate application type by considering the requirements and the 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 Can support handheld devices Input and navigation limitations
Availability and ease of use for out-of-office users Limited screen display area
Can support offline and occasionally-connected applications
Rich Client Applications Can leverage client resources Deployment complexity, however a range of installation options such as ClickOnce, Windows Installer and XCOPY are available
Provide better responsiveness, rich UI functionality, and improved user experience Can be challenging to version over time
Highly dynamic and responsive interaction Larger application footprint on the client machine, which can be reduced by use of Client Profiles in .NET 3.5
Can support offline and occasionally-connected applications .NET Framework runtime must be deployed to the client’s machine
Platform-specific
Rich Internet Applications (RIA) Provide the same rich user interface capability as Rich Clients Larger application footprint on the client machine compared to a Web application
Provide 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 Requires the deployment of the .NET or Silverlight runtime on the client
Services Applications Provide loosely coupled interactions between client and server No UI support
Can be consumed by different and unrelated applications Client is dependent on network connectivity
Supports interoperability
Web Applications Broad reach, and a standards-based UI across multiple platforms Application is dependent on network connectivity (must be connected all of the time)
Ease of deployment and change management Providing a rich user interface is difficult
Cannot leverage client resources

Common Scenarios and Solutions

Mobile Applications

Consider using mobile applications:
  • If your users depend on handheld devices.
  • If your application supports a simple UI that is suitable for use on small screens.
  • If your application must support offline or occasionally connected scenarios, consider designing a Mobile Rich Client.
  • If 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.
  • If your application will be deployed on client PCs.
  • If your application must be highly interactive and responsive.
  • If your application UI must provide rich functionality and user interaction with limited graphical or animation requirements.
  • If 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.
  • If your application must provide a rich, interactive, and responsive UI compared to Web applications.
  • If your application will leverage client side processing in a restricted manner.
  • If your application will utilize client side resources in a restricted manner.
  • If you want the simplicity of a Web-based deployment model.

Services Applications

Consider using services applications:
  • If your application will expose functionality that does not need UI support.
  • If your application must be loosely coupled with its clients.
  • If your application must be shared with or consumed by other external applications.
  • If your application must expose functionality that will be consumed by applications over the Internet, intranet, and on the local machine.

Web Applications

Consider using Web applications:
  • If your application does not require the rich UI and media support offered by a Rich Internet Application.
  • If you want the simplicity of a Web-based deployment model.
  • If your application must be platform-independent.
  • If your application must be available over the Internet.

Technology Considerations

Mobile Applications

The following presentation layer technologies are available for creating mobile applications:
  • Compact Framework. You can use Windows 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 type of device accessing the application.
  • 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 user interface support for 2-D and 3-D graphics, and 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 standalone 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.
  • Silverlight with AJAX. You can combine Silverlight with AJAX to create a Rich Internet Application that performs asynchronous communication between the client and the server.

Services Applications

The following technologies are available for creating services applications:
  • Windows Communication Foundation (WCF). When possible, use WCF to create services n order to benefit from maximum feature availability and interoperability.
  • ASP.NET Web services (ASMX). Use ASMX for simplicity, and only when a suitable Web server will be available.

Web Applications

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 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.

Last edited Dec 16, 2008 at 8:14 AM by rboucher, version 4

Comments

No comments yet.