I would like to get some feedback about following architecture for upcoming app that I am going to be working on. I am proposing follwing layering of the appliation tiers. I will be passing entities through tiers. No webservices or remoting is involved in here. I am also thinking about using Anthem.Net for AJAX.
UI
DotNetNuke modules. Only way to communicate with BLL is through *Facade classes
BLL
1. BusinessFacade classes (HRFacade, SalesOrderFacade etc.)
These classes contain process wide business logic, logic that spans multiple entities, and provide services for UI to consume. These are modeled around autonomous functional modules representing pieces of application with specific functional focus.
-
EntityValidator classes
-
Security related classes (data content security, who can see what etc)
-
EntityManagers (OrderManager, OrderDetailManager etc.):
For entity managers I will be using manager templates. However I modified all methods to be Friend rather then public, as I do not want to UI to have access to them.
BSL (business support layer) - these are database specific generated classes (Entities, helpers ect
DAL
database generic classes (adapter, persistanceinfo etc.)