Wheres a good place to start? Modular design.
Well college finished in just over 2 weeks and then im free for the summer to start looking for a proper job...
But an Idea has popped into my head and im not really sure where to start. I'm looking for a simple application that can query a DB etc and provide imformation to the user... That of course is no problem...
But I want to design it so that once it does the requirements it will be fine, but as time goes on new maybe I want to add something more to it, rather than issue a new release? So I'm thinking about designing the whole thing in a modular fashion, so that down the road a user can add a dll or what ever type of file to the application and it will just work, and extend the program...
Think like eclipse* does, a user can download a file and put it in the plugins folder and it will work, and even change the main forms gui if needed.
But I have no idea, on a design level and on a programming level in .Net (or any other language for that matter) how to implement something like this, so what I'm looking for is advice, sites to look at, and maybe even the odd book that would be helpful to give me a starting point?
*yes, eclipse... just after finishing a java based college project, it in my head
Re: Wheres a good place to start? Modular design.
I'm doing something like that (the modular design part) at the moment. In general, the modules would be dlls that exposed classes that implemented one or more interfaces. In my case, I put into the interface those common features needed to tie the module to the main program. For example, it exposes a property that has a text string which will be the string shown for a menu item. By doing this, the main program can check the dll for any classes that implement the interface, and if it finds one, it can check the properties to figure out which menu to add the item to, and what string to add. There is also a function in the interface that gets called when the menu item is clicked.
The goal is to put sufficient common items into the interface that it is universally useable, but not so much that it becomes unweildly. One thing you can do is to have an item in the common interface that returned a different interface. This would allow a class to implement the common interface...and one or more of another set of interfaces (though technically, this isn't all that valuable, as you can discover the interfaces directly). By separating out the various pieces to specialized interfaces, you can create a fairly broad and versatile system, all of which hinges off that first common interface.
Just a few suggestions.
Re: Wheres a good place to start? Modular design.
Re: Wheres a good place to start? Modular design.
I've never done anything with it but isnt there a Plug-in Framework for the .NET Framework that is specifically for this kind of thing?
EDIT: Here's some info on it http://msdn.microsoft.com/en-us/library/ms972962.aspx but it looks like it might just be for .NET 1.0, not sure.