开发者

How to build Customizable Apps in .Net?

We are building a LOB Thick WPF Client / WCF Server application. I need to create an architecture that allows "pluggable" workflows on the Client side, to facilitate a business selling point of per customer flexibility.

In .Net however, adding projects to a solution for every customer modification and for nearly every component that is deemed "replaceable" seems dangerous, at be开发者_Go百科st.

The alternative that comes to mind is abstracting all classes to an interface and to let configuration feed through the correct implementation.

Then there is the logistical perspective: how do you best manage this in source control for instance?

What experiences can you share and what options do you know of?

PS: I'm not really aiming for extensibility. I need existing features to be "customizable". Things like changing page order in a wizard. I think Colin's suggestion of configuration will possibly be the best option. But beyond that?


Since it seems clear you have an idea on how to create plugin, I just give you my way for the "logistic" part. Create an assembly for the extension points, ie the interfaces plugins must implements, and have it as the unique common reference between the main shell and the varius plugin. If the extension mechanism grows, try to mantain the old interfaces so you don't break existing plugins.


Take a look at the Managed Extensibility Framework:

http://mef.codeplex.com/

It allows you to create pluggable applications where assemblies that extend or add functionality to your application are loaded at runtime.

This solves the problem of assembling the components for a specific customer. However, it sounds like you want to have customer configuration on the component level, not just which components a customer has.

I would not recommend having customer specific code in your project, this will become unmanageable over time, both in terms of code volume and testability. Instead, build in configuration from day one. In other words, for each component have a number of configuration parameters that can be used to tailor it for each customer.

(I currently work on an application that is being used by ~400 white label partners, each with their own config!)

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜