Architecture design is an important phase of development process, especially for enterprise applications with large scale of functionalities, technologies and long-term maintenance, enhancements and improvements.
A good architecture design brings a lot of benefits to the project: compatibility, extensibility, reliability, maintainability, availability, usability, security and many others.
There are many good articles that discus about the importance of architecture design that you can read for further details:
My favorite design for web projects is the following:
- 3 main layers: UI layer, Business Logic layer and Data Access layer
- Data Access: I use Entity Framework as the ORM (object relational mapping -http://en.wikipedia.org/wiki/Object-relational_mapping) for this project in order to generates C# data context and model classes. With the support of POCO (plain old CLR object -http://en.wikipedia.org/wiki/Plain_Old_CLR_Object), we can easily deal with database stuffs (CRUD – create/read/update/delete, complex queries…) based on strongly-typed C# classes.
- Business Logic: in this project, this layer is quite simple with interfaces and implementation classes. I also use custom providers for working on user roles and membership (authentication and authorization - http://en.wikipedia.org/wiki/AAA_protocol).
- UI layer: I apply ASP.NET MVC framework to separate the Views (user interface), Models (data containers) and Controllers (UI logic handlers).
Thanks for reading my post!
I hope you have good time. If you want to share an idea or discuss a job, do not hesitate to contact at