As part of our patterns & practices App Arch Guide 2.0 project, we've created a set of application archetypes ("app types" for short.) You can see our app archetypes on our Application Types (Archetypes) Index page. To keep it simple, we focused on a small set of common application types that customers identify with. Here's the cool part ... for each application type, we're taking a principle-based approach, then showing relevant patterns, p&p solution assets, and Microsoft technologies. Keep in mind we're still hashing it out.
- Rich Client
- Rich Internet Application
- Web Application
A mobile application will normally be structured as a multi-layered application consisting of user experience, business and data layers.
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.
See Mobile Application Type (CodePlex)
Rich client user interfaces can provide high performance, interactive, and rich user experiences for applications that must operate in stand-alone, connected, occasionally connected, and disconnected scenarios.
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, but communicate with services exposed by other layers (both logical and physical) that expose operations the client requires. These operations may include data access, information retrieval, searching, sending information to other systems, backup, and related activities.
See Rich Client Archetype (CodePlex).
Rich Internet Application (RIA)
A Rich Internet Application (RIA) runs in the browser in a sandbox. The benefits of a RIA application include richer user experience, better responsiveness and network efficiency over traditional Web applications.
See Rich Internet Application Archetype (CodePlex).
A service is a public interface that provides access to a unit of functionality. Services literally provide some programmatic ‘service’ to the caller who consumes them.
Services are loosely coupled and can be combined from within a client or within other services to provide more complex functionality. 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 file and operations are called using xml-based message schemas that are passed over a transport. Services support a heterogeneous environment by focusing interoperability at the message/interface definition. If components can understand the message and interface definition they can use the service regardless of their base technology.
See Service Application Archetype (CodePlex).
The core of a Web application is its server-side logic. The Web application layer itself can be comprised of many distinct layers. The typical example is a three-layered architecture, comprised of presentation, business, and data layers.
See Web Application Archetype (CodePlex).
Template for Application Type Guidance
Here's the approach we're using to organize the guidance for each archetype:
- Design considerations
- Frame of Hot Spots / Categories
- Category X
- Category Y
- Category Z
- Presentation Layer Considerations
- Business Layer Considerations
- Data Layer Considerations
- Services Layer Considerations
- Performance Considerations
- Security Considerations
- Deployment Considerations
- Pattern Map
- Technology Considerations
- patterns & practices Solution Assets
- Additional Resources
You can walk the Web application example to see it in action.
- Mobile Development (Wikipedia)
- Rich Internet Application (RIA) (Wikipedia)
- Service (systems architecture) (Wikipedia)
- Web Application (Wikipedia)
My Related Posts
- patterns & practices App Arch Guide 2.0 Project
- App Arch Guidelines
- App Arch Meta-Frame
- Layers and Tiers
- Layers and Components
- Services Layer
- Scenario Frames for Presentation, Business, Data and Services
- patterns & practices Security Engineering
- patterns & practices Performance Engineering
- Key Software Trends