C#可插拔架构,考虑学位论文

时间:2011-09-28 16:29:07

标签: c# .net plugins frameworks components

我正在开始一个软件工程论文,在那里我有一个牙科实践作为客户,我将为其开发软件。客户端有需求问题,并且当前的软件通过补丁不断升级。

我试图争论底层要求是坏的想法,并开发一种能够塑造以满足变化的新软件。我还希望该软件是通用的,因此可以部署到各种牙科诊所,可以对其进行定制以切换特定功能。

我的想法是将每个功能都视为一个插件。这样,应用程序就可以简单地托管已启用的插件,并且可以打开/关闭它们,并且可以在不需要对应用程序进行硬更改的情况下进行不必要的升级。

如果您能帮我解决以下问题,我将不胜感激:

这是一个好方法吗? 是否已经有一个适合这个的.NET框架? 我应该注意哪些重大问题?

很抱歉这些大型介绍人员,我感谢任何回复。 非常感谢 麦克

4 个答案:

答案 0 :(得分:4)

Managed Extensibility Framework内置于.NET 4.0中,可从CodePlex获得,作为早期版本的dll。

答案 1 :(得分:3)

我知道MEF作为MS推荐的可插拔应用框架,但也许一些IoC框架也可以帮助你。 MS推荐的是Unity(根据Microsoft模式和实践开发)unity on codeplex

答案 2 :(得分:2)

我在过去几年中使用过HTML,WinForms,ASPX,WPF,WCF,Web服务,Silverlight,PRISM,MEF等应用程序,而我个人的选择(对新项目没有任何限制)将是:

  • WPF或Silverlight(更新:我现在更倾向于WPF,现在不再广泛支持Silverlight)
  • WCF服务
  • 像PRISM(现在包括MEF)的模块化框架

PRISM是最大的收获,因为您构建的组件 松散耦合,模块可以独立开发,而开发人员不会破坏彼此的代码。

答案 3 :(得分:1)

对于像牙科诊所这样的特定事物,希望您能够在通用插件框架之上构建一个层。

插件及其容器应专门用于域。确定该专业化应该是什么的最好方法是枚举适合该软件的几个插件,识别它们之间的共同点,并在框架中抽象/表示它们。

我知道这不是很具体,但希望有点用处。