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.