C#: How should I structure multiple assemblies in this scenario
OK, I have an application that has been used for the past few years as a single assembly, and up to this point have not had any problems.

Now I am working on the next version of this application, which will include:

 - Different Levels of licensing, with added functionality in some levels.
 - Multiple different applications that use some of the same code.
 - Multiple different UI implementations. (Windows, Web)
 - Support for different Database backends. (Original was OLE based)

To give an example I think I will have a structure like this:

Image

-Image.Conversion

-Image.Display

-Image.Utilities (Filters, Cleanup, Modifications, etc)

-Image.OCR

Data

-Data.XML

-Data.MSSQL

-Data.MySQL

-Data.Oracle


(Not sure on this next set yet, will discuss after)

UI

-UI.Windows

--UI.Windows.<Common Elements Here> 

-UI.Web

OK, so starting with the Image stuff. Some of the applications will use all of the functionality, and others will only use something like Image.Display

For Data different applications will use a backend database, and some will only use XML files for storing data.

On the UI I am thinking about building a basic set of reusable items. For example a few of the applications will use a Ribbon Style interface that will basically be the same from one application to the next other than the controls that get loaded into it. I would rather be able to only code the shell interface once and be able to use it on each application that needs it without starting over each time.

In this scenario what would be my best choice when it comes to separating these into assemblies?

Thank you
 
C#: How should I structure multiple assemblies in this scenario
===

OK, I have an application that has been used for the past few years as a single assembly, and up to this point have not had any problems.

Now I am working on the next version of this application, which will include:

 - Different Levels of licensing, with added functionality in some levels.
 - Multiple different applications that use some of the same code.
 - Multiple different UI implementations. (Windows, Web)
 - Support for different Database backends. (Original was OLE based)

To give an example I think I will have a structure like this:

Image

-Image.Conversion

-Image.Display

-Image.Utilities (Filters, Cleanup, Modifications, etc)

-Image.OCR

Data

-Data.XML

-Data.MSSQL

-Data.MySQL

-Data.Oracle


(Not sure on this next set yet, will discuss after)

UI

-UI.Windows

--UI.Windows.<Common Elements Here> 

-UI.Web

OK, so starting with the Image stuff. Some of the applications will use all of the functionality, and others will only use something like Image.Display

For Data different applications will use a backend database, and some will only use XML files for storing data.

On the UI I am thinking about building a basic set of reusable items. For example a few of the applications will use a Ribbon Style interface that will basically be the same from one application to the next other than the controls that get loaded into it. I would rather be able to only code the shell interface once and be able to use it on each application that needs it without starting over each time.

In this scenario what would be my best choice when it comes to separating these into assemblies?

Thank you
 