I'm in the situation that I have to design and implement a system from the scratch. I have some questions about the architecture that I would like your comments and thoughts on.
Quick Info about the project: It's a data centric web application.
The application will be built on Microsoft .NET Framework 4.0 with MS SQL SERVER 2008 database.
Requirement:
- Rich UI and robust
- Multi-device support (every browser and on every device)
- Loosely coupled
Below is the architectural diagram I have built:
Briefing of the architecture
- Presentation layer : HTML5/ASP.NET MVC + JQuery (Web application for multi-device support in first version)
- Distributed Services : WCF (XML/JSON/JSONP)
- Domain Layer(Business Layer) : All business logic
- Data persistence (DAL Layer) : Entity Framework 4.0 with database first approach. POCO entities are generated and separated out using T4 template
- Infrastructural Layer: Contains common libraries like POCO entities, Exception Handling, logging etc
My Concerns :
- As application is to be built loosely coupled so in future if business requirement grows new modules can be easily plugged in without affecting the architecture. So I thought of using the Repository pattern along with IoC and DI (can be Unity/Ninject/Sprint.NET or any other)
- WCF with both XML and JSON support
- Distributed Service Layer to place IoC & DI
- Exception Handling & Logging using Enterprise Library 5.0
Looking for valuable comments and suggestions. If I am doing anything wrong please put me in right direction.