c# - 无需开源的可扩展性

标签 c# .net plugins extensibility

我的公司目前正在使用 C# 创建大型多层软件包。我们对该结构采用了 SOA 方法,我想知道是否有人对如何使具有编程知识的用户可以扩展它有任何建议。

这将涉及两个过程:生产系统管理员批准允许使用特定插件,以及实际插件架构本身。

我们希望允许用户编写脚本来执行常见任务、修改用户界面的布局(用 WPF 编写)并添加新功能(即允许表格数据绘制图表)。有没有人对如何实现这个有任何建议,或者知道从哪里可以获得做这种事情的知识?

我认为这将是发布具有限制性分发许可的开源软件的完美极端情况,但是,我并不热衷于允许竞争对手访问我们的源代码。

谢谢。

编辑:我想我只是澄清一下,解释为什么我选择了我所做的答案。我指的是我公司外部的生产管理员(即客户),让他们以某种方式以更简单的方式自动化/编写脚本,而不需要他们完全了解 c#(他们大多是编程能力有限的最终用户经验)——我考虑的更多是 DSL。这可能是一个遥不可及的目标,而托管可扩展性框架似乎提供了迄今为止最好的折衷方案。

最佳答案

只需使用接口(interface)。定义一个每个插件都必须实现的 IPlugin,并使用定义良好的消息传递层来允许插件在主程序中进行更改。您可能想看看像 Mediaportal 或 Meedios 这样严重依赖用户插件的程序。

关于c# - 无需开源的可扩展性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/677150/

相关文章:

c# - 如何知道 ListView 中哪个 Xamarin Forms 条目已被修改?

c# - 如何以编程方式通过 KB 编号获取 Microsoft 知识库文章的标题?

c# - p/invoke 不平衡堆栈错误

使用带有数据的 Runtime.getRuntime.exec 错误的 kotlin 中的 CURL POST 请求

java - ANTLR4 Java 插件 RegEx 用于重复标记

c# - 获取枚举的自定义属性的属性

c# - xpath 选择具有最后一个子值的元素

java - Gradle 和插件恶作剧,用于多模块构建

.net - 如何正确地将 char * 从用 C 编写的非托管 DLL 返回到 VB .net?

C#.NET : Convert Icon to byte[] and back again