T
terry.holland
I have a three tiered CRM application (ASP.Net UI, VB.Net Business
Layer & VB.Net Data Access Layer) that consists of number of classes.
The application will be deployed to a number of clients. Some of our
clients have no existing CRM system and are happy that our application
stores Client information. Other clients have already got a CRM system
and want our application for the additional functionality that it
offers. These clients would want core Client information (ID, Name,
Phone, Address etc) to be looked up from their existing system, and
have our system store additional information that relates to these
clients.
As I have seperated the business & data access logic into discrete
layers I should easily be able to create a IClient interface and have
classes clsClientA_BLL and clsClientB_BLL implement this common
interface. Each of these classes should then be able to access client
data from the correct data store, and enforce client specific business
rules.
My initial architecture is similar to this
Solution: MyCRM
Project1: MyCRM_WEB
Project2: MyCRM_BLL
Project3: MyCRM_DAL
MyCRM_WEB has a reference to MyCRM_BLL
MyCRM_BLL has a reference to MyCRM_DAL
I need to modify this so that MyCRM_BLL is split so that I have
MyCRM_BLL.dll (all common classes)
MyCRM_ClientA_BLL (only ClientA specific business classes)
MyCRM_ClientB_BLL (only ClientB specific business classes)
MyCRM_ClientA_DAL (only ClientA specific data-access classes)
MyCRM_ClientB_DAL (only ClientB specific data-access classes)
Im not sure how to organise these components as, for ClientA, they
cannot have the ClientB specific dlls (or vica versa). How do I
arrange my solution so that the WEB project has references to
MyCRM.dll and MyCRM_ClientA_BLL.dll or MyCRM_ClientB_BLL.dll,
depending on who it is being deployed to?
Layer & VB.Net Data Access Layer) that consists of number of classes.
The application will be deployed to a number of clients. Some of our
clients have no existing CRM system and are happy that our application
stores Client information. Other clients have already got a CRM system
and want our application for the additional functionality that it
offers. These clients would want core Client information (ID, Name,
Phone, Address etc) to be looked up from their existing system, and
have our system store additional information that relates to these
clients.
As I have seperated the business & data access logic into discrete
layers I should easily be able to create a IClient interface and have
classes clsClientA_BLL and clsClientB_BLL implement this common
interface. Each of these classes should then be able to access client
data from the correct data store, and enforce client specific business
rules.
My initial architecture is similar to this
Solution: MyCRM
Project1: MyCRM_WEB
Project2: MyCRM_BLL
Project3: MyCRM_DAL
MyCRM_WEB has a reference to MyCRM_BLL
MyCRM_BLL has a reference to MyCRM_DAL
I need to modify this so that MyCRM_BLL is split so that I have
MyCRM_BLL.dll (all common classes)
MyCRM_ClientA_BLL (only ClientA specific business classes)
MyCRM_ClientB_BLL (only ClientB specific business classes)
MyCRM_ClientA_DAL (only ClientA specific data-access classes)
MyCRM_ClientB_DAL (only ClientB specific data-access classes)
Im not sure how to organise these components as, for ClientA, they
cannot have the ClientB specific dlls (or vica versa). How do I
arrange my solution so that the WEB project has references to
MyCRM.dll and MyCRM_ClientA_BLL.dll or MyCRM_ClientB_BLL.dll,
depending on who it is being deployed to?