在应用程序的不同插件之间进行通信的最佳c#架构/模式
我目前正在从头开始设计一个系统,我们遇到了一个架构设计场景,我不确定解决这个问题的最佳方法,但我相信其他人已经解决了,甚至可能有一个模式 到目前为止的故事: 我们有一个多tenent网站,我们在其中实现各种插件功能,我们的客户将选择他们希望在其应用程序中使用的插件。每个插件都可以有用户可以添加到页面的各种“小部件”。(例如,类似于Android应用程序通常附带小部件,您可以将其添加到主屏幕) 插件可以依赖于其他插件来启用(例如,电子商务插件需要支付插件)。此外,插件还可以使用其他插件来增强其功能(例如博客插件可以选择使用评论插件,也可以使用电子商务产品的评论) 尽可能地,我们希望每个插件都是独立的,有一个非常精简的plublic接口。我们相信这种关注点的分离将为我们提供整个系统的最佳长期灵活性和可维护性 问题是: 当我们开始布局我们目前知道的所有插件(更不用说未来的需求),以及它们的依赖性和可能与其他插件的关系时,它开始对疯狂的蜘蛛网产生强烈的反应。我们也开始看到一些循环引用 例如,导航插件需要知道网站上有哪些页面。但您也可以向页面添加导航小部件 部分/潜在解决方案: 我们认为每个插件应该完全独立于其他插件,但可以通过消息从其他插件获取信息并与之通信。这些消息可以分为两种基本类型在应用程序的不同插件之间进行通信的最佳c#架构/模式,c#,design-patterns,plugins,architecture,C#,Design Patterns,Plugins,Architecture,我目前正在从头开始设计一个系统,我们遇到了一个架构设计场景,我不确定解决这个问题的最佳方法,但我相信其他人已经解决了,甚至可能有一个模式 到目前为止的故事: 我们有一个多tenent网站,我们在其中实现各种插件功能,我们的客户将选择他们希望在其应用程序中使用的插件。每个插件都可以有用户可以添加到页面的各种“小部件”。(例如,类似于Android应用程序通常附带小部件,您可以将其添加到主屏幕) 插件可以依赖于其他插件来启用(例如,电子商务插件需要支付插件)。此外,插件还可以使用其他插件来增强其功能
- 从其他插件请求信息(请求/响应消息)
- 事件通知(事件消息)
PS-我在一个公共项目中也会有一个IWidget,它具有一些基本属性-因此Pages插件可以请求实现IWidget的所有类添加到一个页面您的问题有很多不同的方法;但我可能会建议采用面向服务的体系结构。主要是因为它可以以一种非常快速和敏捷的方式向业务屈服。此体系结构提供了许多好处:
- 轻量级
- 敏捷的
- 代码可重用性
- 互操作性
- 保安
- 演出
- 坚持
Ask not the Elves for counsel, as they both say yes and no.