>>I am working on a new project that is going a little out of my expertise (if I have any). Our company is going to produce a web application that we will re-sell to other companies. We will have a canned product (which is straightforward enough), but we will also allow customizations to be made to a customer that requests it. How would we go about this without recreating our logic/data structure?
>>
>>My first thought is to write the canned product which will have all of the core functionality. The customizations would be a separate application that would inherit from the core functionality. Is this the right way to do this? We want all core functionality to be available to everybody and all future core modifications to also be applied to the customizations.
>>
>>Help me Rhonda, help help me Rhonda. Are there any Rhondas on here?
>
>
>Hi Mike,
>
>You may want to check out topics on "Dependency Injection". Or you can build the logic into a single dll that can be replaced by another at runtime using reflections. We've done both here.
John,
About your second approach...
So what you're saying is that I build my core components (NewsReader, Blog, ProductList, etc...) and have them each in a DLL. I would use reflection to load the DLL's. If a client wants to use NewsReaderOnSteroids instead of NewsReader, I would just develop the new component and deploy it in place of the existing DLL? I suppose I could use my config file to specify while DLL should get loaded for the component.
I would think that this approach would lean heavily on implementing effective interfaces?