Geeks With Blogs

News Google

Nick Harrison Blog<Nick>.Next()

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 Architecture Layers | Back to top

Comments on this post: Architecture Layers

# re: Architecture Layers
Requesting Gravatar...
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

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.

Left by Greg Young on Nov 23, 2005 9:17 PM

# re: Architecture Layers
Requesting Gravatar...
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 or, respectively.
Left by Marc on Nov 23, 2005 11:52 PM

# re: Architecture Layers
Requesting Gravatar...
BTW: EL4NET is released since the beginning of this month. We'd be glad to get some feedback on it!

Left by Marc on Dec 19, 2005 8:33 AM

# re: Architecture Layers
Requesting Gravatar...
advance layers
Left by Maheswari on Mar 23, 2010 11:56 PM

# re: Architecture Layers
Requesting Gravatar...
Quite grandiose objectives, but essential none the less.
Left by Click on this link on Apr 23, 2012 1:18 PM

comments powered by Disqus

Copyright © Nick Harrison | Powered by: