Layers and Components

In my previous post, I summarized layers and tiers.  In this post, I'll walk through the key components of the layers.  This exercise is part of our patterns & practices App Arch Guide 2.0 project.

Layers and Components
Here's a visual of a layered architecture and relevant components:

LayeredArch

Note that this is just an example of common components and layers.  Your scenarios may vary.

Presentation Layer Components
Here's typical presentation layer components:

  • User interface (UI) components. Your user interface components (controls) provide a way for users to interact with your application. They render and format data for users and acquire and validate data coming in from them.
  • User process components. Your user process components help synchronize and orchestrate user interactions. This way the process flow and state management logic is not hard-coded in the user interface elements themselves, and the same basic user interaction patterns can be reused by multiple user interfaces.

Business Layer Components
Here's typical business layer components:

  • Application Facade. (Optional).  Your application facade maps your business logic to your application.  It's optional and it depends on how reusable and generic your business logic is.  If your business logic was written specifically for your application, then you probably don't need an application facade.
  • Business components. Your business components implement business rules and perform business tasks.
  • Business workflows. Your business workflows define and coordinate long-running, multi-step business processes.  They can be implemented using business process management tools.
  • Business entity components. Your business entity components represent actual business entities (for example products or orders.)  You use them to pass data between components.  They're usually data structures (such as DataSets, DataReaders, or XML streams), but they can also be implemented using custom object-oriented classes.

Data Layer Components
Here's typical data layer components:

  • Data access logic components. Data access components abstract the logic necessary to access. Doing so centralizes data access functionality and makes it easier to configure and maintain.
  • Data Helpers / Utilities.   
  • Service agents. Your service agents help you call external services.  They do so by mapping the format of the data exposed by the service to the format your application uses, as well as help manage the semantics of calling the services.

Cross-Cutting

  • Cross-cutting components.  This includes components  components to perform exception management, to authorize users to perform certain tasks, and to communicate with other services and applications.

Feedback
Does this match what you see in practice?

Additional Resources
Here's some relevant links:

My Related Posts

Published 07 September 08 04:48 by J.D. Meier
Filed under:

Comments

# J.D. Meier's Blog said on September 7, 2008 2:08 AM:

In my previous posts I showed layers and components , and layers and tiers . In this post, I'll show

# J.D. Meier's Blog said on September 7, 2008 9:06 PM:

As part of our patterns & practices App Arch Guide 2.0 Project , I'm scanning Microsoft for helpful

# J.D. Meier's Blog said on September 9, 2008 11:53 AM:

As part of our patterns & practices App Arch Guide 2.0 project , we're consolidating our information

# J.D. Meier's Blog said on September 11, 2008 12:17 PM:

One of my colleagues on the patterns & practices team, David Hill , collected and distilled feedback

# J.D. Meier's Blog said on September 18, 2008 2:34 AM:

As part of our patterns & practices App Arch Guide 2.0 project , we've created a set of application

# J.D. Meier's Blog said on September 25, 2008 3:26 AM:

As part of our patterns & practices App Arch Guide 2.0 project , we've put together an arch frame. 

# J.D. Meier's Blog said on September 26, 2008 12:25 PM:

I added a brief over deck of our patterns & practices App Arch Guide 2.0 project to codeplex: App

# Adina Milston said on October 7, 2008 6:56 AM:

Hi,

I am preparing a course where I will be guiding the students through a project in dot net 3.5 - using the layered architecture.

Do you happen to have some basic code for a sample application where I could start from?

Or do you have any idea how I could find something like that?

Thanks

adinamilston@gmail.com

# J.D. Meier said on October 7, 2008 12:22 PM:

@Adina

There's two examples you can use to get started:

- Layered Arch Sample for .NET - http://www.codeplex.com/LayerSample

- Stock Trader .NET - http://msdn.microsoft.com/en-us/netframework/bb499684.aspx

# J.D. Meier's Blog said on November 20, 2008 5:06 PM:

We posted our patterns & practices Reference Application Architecture Cheat Sheet on CodePlex . 

# J.D. Meier's Blog said on November 20, 2008 7:48 PM:

We posted our Architecture Meta Frame Cheat Sheet to CodePlex as part of our Application Architecture

New Comments to this post are disabled

Search

This Blog

Syndication

Page view tracker