我公司目前正在建立一个大型的多层软件包。我们已经采取了一SOA方法的结构和我想知道,是否任何人有任何建议如何使它可扩展的用户可编程的知识。

这将涉及一个两倍的过程:批准由管理员的生产系统中允许一个特定的插件被使用,并且还实际的插件的结构本身。

我们希望允许用户为编写脚本,以执行共同的任务,修改的布置的用户界面(编写WPF),并添加新的功能(ie。允许图表的列表数据)。没有任何人有任何建议如何实现这一点,或知道其中一个可能获得的知识来做这种事?

我想这将是完美的角情况下的释放软件的开放源有限制性许可证上的分布,但是,我并不热衷于使竞争进入我们的源码。

谢谢。

编辑:想我只是澄清解释为什么我选择的回答我。我指的是生产管理员的外部来我公司(ie。客户),并给予他们某种方式自动化/脚本的东西在一个更简单的方式,而不需要他们有一个全面的知识的c#(他们大多是最终用户与有限的编程经验的)-我在想更多的DSL。这可能是一个达到目标和管理的扩展框架似乎提供了最佳的妥协为止。

有帮助吗?

解决方案

我想看看在 MEF 来自微软的倡议。这是一个框架,它可以让你添加扩展性应用程序。这是测试版了,但应该是.NET 4.0的一部分。

微软共享源,所以你可以看看它是如何实现的,并与它的接口。所以基本上你的可扩展性框架将开放给大家看,但它不会强迫你发布你的应用程序代码或插件的代码。

其他提示

只要使用的接口。定义一个IPlugin每个插件必须实现,并使用一个明确信息层,让插件,使主程序变化。你可能想看看像Mediaportal或Meedios一个程序,它在很大程度上取决于用户的插件。

正如史蒂夫,使用的接口是可能的路要走。你会需要设计的接口,你会想你的客户使用,设计的切入点的插件以及作为一个插件的通信模式。随着建议,通过史蒂夫,你可能还想要看看 日食 的项目。他们有一个很好的定义插件架构,即使其java编写的,它可能值得考虑看看.

另一种做法可能是设计一个API提供一个脚本语言。既 IronPythonBoo 是动态的,编写脚本语言工作,以及与。用这种方法,你的客户可以写脚本,交流并扩大应用程序。这种方法是多一点的一个轻便的解决方案相比一个完整的插件系统。

开源是不以任何方式或形式必要使产品可扩展的。

我认为,开源是在这种情况下,一个可怕的想法。当你说一个生产管理员的批准 - 贵公司内的管理员,或外部

就个人而言,我会看,允许通过继承的可扩展性(允许第三方继承您的代码而不给他们的源)和非常仔细地指定的访问修饰符。

微软已经做正是这一点,导致报告服务,其中有每个属性你提到:用户自定义布局,脚本化,图表,可定制的UI。这包括一个可下载的IDE。源代码没有访问权限提供或需要的,但它绝对具有可扩展性钩子散落。不存在的源代码抑制紧耦合,并促进SOA的思想。

目前我们正处在一个类似的情况。我们确定了不同的情况,人们可能希望创建一个数据级的实时连接。在这种情况下,他们可以有权访问web服务sinle请求并导入数据。

在某些时候,他们可能希望有一个自定义用户界面(在我们的情况下的Silverlight 2)。对于这种情况,我们可以提供一个基类,并让它们在一个中央存储库注册的模块。然后,它集成到我们的以统一的方式应用,包括安全,形式和行为和互动的服务。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top