I have been thinking recently about the various architecture / abstraction layers that would be useful in making up an Enterprise framework.

The goals would be to improve consistency, decrease time to market, improve quality, and simplify the development and testing efforts in general.   Pretty lofty goals, but important none the less.

The layers that I have in mind include (in no particular order):

  • Security Abstraction Layer
  • Validation Abstraction Layer
  • Conversion Abstraction Layer
  • Data Access Abstraction Layer
  • Work flow Abstraction Layer
  • Web UI Behavior Abstraction Layer
  • Web Service Facade Layer
  • Business Entity Foundation Layer
  • Caching Abstraction Layer
  • Configuration Abstraction Layer
  • Exception Management Abstraction Layer
  • Instrumentation Abstraction Layer

Many of these will be adapters to the Enterprise Library.    This is important because the Enterprise Library is not guaranteed to be compatible across various versions.    Build your apps against your adapter layers. If future version of the Enterprise Library are incompatible, you only have to change the adapter and not every application that you have written.

Some of these other layers are niceties that the Enterprise Library might include one day.    If they do, you can hopefully adapt your abstraction layer to use it.   If these never get include in the Enterprise Library, they will sill be useful layers on their own.

Hopefully, as these layers emerge, they will follow the same ideals as the Enterprise Library itself.   Specifically,  consistency, extensibility, ease of use, and integration.

In future posts, I hope to tackle each of these layers and discuss my thoughts on what should go into each of them.   I welcome any feedback from anyone going through similar exercise.

posted on Wednesday, November 23, 2005 6:50 PM | Filed Under [ Architecture Layers ]
  • Share This Post:
  • Share on Twitter
  • Share on Facebook
  • Share on Technorati

Comments

Gravatar
# re: Architecture Layers
Posted by Greg Young
on 11/23/2005 9:17 PM
It seems to me you are using the term layer incorrectly.

I agree that all of these items can be useful, but not all are layers. Many sit outside of multiple layers as framework (system) layer obects. Take caching for example, this is not to be a layer unto itself; it is a system layer object (aka framework) which gets used through all/multiple of your layers.

The majority of your layers seem to be these framework (system) layer type objects. In particular

Exception Management
Caching
Configuration
Instrumentation
Security

I also see several layers split apart which are generally together (Validation, Workflow, Business Entity) as they all fall together hand in hand. Eric Evans has a great book discussing some strategies in these areas (Domain Driven Design) and is definately worth the cost. His strategies lean towards the merging of workflow and domain objects with the workflow type objects implementing the service pattern.

As I am sure you are aware MS has created application blocks for quite a few of these. There are some intrinsic issues with the implementations as they are strongly coupled to each other (in particular to the configuration app block which is one of the more annoying ones to switch out in a large scale existant application). I have rewritten a few of them to make them loosely coupled (namely exception management, authentication, caching) that are nearly identical to the MS versions. As you are going through this I can open source some of those libraries to allow you to use them.

Greg
Gravatar
# re: Architecture Layers
Posted by Marc
on 11/23/2005 11:52 PM
Our company works on builing an enterprise library. We call it EL4NET; It targets .NET 2 and adresses some of the topics you mentioned as well as some others, namely
- configuration
- component lifecycle and publication
- ease of development
- ...

A first version will be open-sourced during the next weeks - stay tuned at el4net.sf.net or www.sf.net/projects/el4net, respectively.
Gravatar
# re: Architecture Layers
Posted by Marc
on 12/19/2005 8:33 AM
BTW: EL4NET is released since the beginning of this month. We'd be glad to get some feedback on it!

cheers,
Marc

el4net.sourceforge.net
Gravatar
# re: Architecture Layers
Posted by Maheswari
on 3/23/2010 11:56 PM
advance layers
Post Comment
Title *
Name *
Email
Url
Comment *