C# Module Based Application

I am looking at the possibility of creating a "base application" that simply acts as a framework to hold other applications inside, hence the user only has to run one exe regardless of if they have purchased one of our products or ten!

I am proposing to do this along the lines of the "base application" connecting to a web service to find out what products they are licenced to run and then dynamically populating a list of these applications on screen, when a user selects an item the "base application" simply loads in a control from a specific dll inside its own window.

Has anyone else got an experience of designing an application in this way or got any recommendations of how this can work?
Who is Participating?
DanSo1Connect With a Mentor Commented:
How you will ship dll's ?. With a little small improvement you can have also simple way to upgrade your modules on customer PC.
On my solution when you run base app there is no need to have any modules installed. But when user has license and trying to run module without exe on his machine there is an error message instead of dynamically downloading of wanted module.
I have similar situation - one base app with 15 modules. But those modules are exe not an dll's. All modules are build in one solution. My base application with just one form simply use namespaces of  all modules. Then, when user selects one module I'm showing main form for that module. Something like that:
frmSomething = new frmSomethingABC();
Off course variable frmSomething is declared before:
private frmSomethingABC frmSomething;
For every module we are sending to the customer their licence key which we holding in DB. Only modules with correct licence key are allowed to run. So far there is no problems with that.
CAMSYSTEMSAuthor Commented:
Yeah that sounds pretty similar to our requirements, although ideally we are looking to send out the base application without any module dlls, the modules dlls are just shipped to the customer when they purchase the licence and each dll is dynamically loaded in to the base application.

Hence we are thinking of setting up something along the lines of the following.....

Each module has a StartingControl (UserControl) that implements an interface, hence when you click on a module the base application simply loads in the required dll (name saved in database) and then displays the modules StartingControl on the base application Main Form...

Does this make sense?

CAMSYSTEMSAuthor Commented:
The dll files that are relevant to each licenced application will be downloaded when they first activate a licence and then in a similar way to yours an error message will appear if the files do not exist
CAMSYSTEMSAuthor Commented:
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.