【发布时间】:2013-04-25 08:11:17
【问题描述】:
我正在尝试在 asp.net 项目中实现模块化设计,将应用程序划分为不同的模块,如 HR、库存管理系统等。由于我试图保持不同的模块相互独立,因此我将这些模块分开每个模块都是一个单独的 Visual Studio 解决方案,具有 UI、BLL、DAL 甚至是单独的数据库架构。
到目前为止,我认为这是开发管理系统和 ERP 的常见做法,但我在网上搜索了过去三天,但几乎没有找到任何有关开发模块化应用程序的完整内容。我发现的大部分只是解释内聚和耦合概念的理论,而不是现实世界的场景。所以我想知道
- 分离模块的方法是否正确?
- 现实世界的模块化应用程序是如何开发的?
- 不同的模块应该如何相互通信,同时又保持相互独立。
- 我认为应该有一个使用这些模块的核心应用程序,核心应用程序应该如何与这些模块通信?
- 每个模块都有一些数据,实体,对象,我应该将它们放在核心模块中以便其他模块使用它们(我认为这将使模块耦合到核心)还是应该每个模块维护自己的数据副本 + 定义这些对象,(我认为这会破坏 DRY)
热烈欢迎任何想法和链接。
【问题讨论】:
-
听起来您可能已经准备好使用基于消息传递的解决方案了。也许阅读《企业集成模式》一书并查看 NServiceBus。
-
这里的一个关键问题是,您的独立组件是否仅仅是单个 ASP.NET 应用程序中功能上的区别,还是具有自己的生命周期和部署计划的不同项目。这一切都将部署为一个网站吗?
-
@MattDavey 是的,它将被部署为单个网站。我想要实现的是假设如果客户想要带有模块 x 的核心应用程序,而另一个客户想要不带模块 x 的核心应用程序,作为服务提供商我应该是打开或关闭模块
-
啊,在那种情况下,这可能根本不是一个架构问题。在这种情况下,feature toggles 可用于向不同的客户端提供不同的功能。
标签: asp.net architecture module