我目前所在的公司正在为我们的一系列应用程序的架构决策而苦苦挣扎。目前,我们有两个具有公共部分的应用程序(就像日历模块一样)。到目前为止,我们一直在复制其他现有应用程序的代码,但在未来,我们希望将我们的应用程序发展为更模块化的设计:
正如您在上图中所看到的,每个应用程序可以有不同版本的模块。
我们正在考虑可能的解决方案:
对此有什么建议吗?我们不可能是第一家在这个问题上苦苦挣扎的公司--我们所有的应用程序都是使用ASP.NET模板或JavaScript模板(knockout.js)构建的RazorMVC4/5 web应用程序。我们所有的应用程序都部署在Microsoft Azure上,并且我们对构建脚本(MSBuild)、CI服务器有丰富的内部知识……
发布于 2015-02-04 22:08:19
每个模块都有单独的项目/程序集,并以Nuget包的形式交付,这绝对是一个好策略。
优势:
挑战:
选项1:相同的开发人员继续进行更改,创建新的软件包,并在其应用程序中安装新版本。必须授权更改,因为它是关键代码。
选项2:指定的团队负责修复框架代码中的问题或更改请求。
发布于 2015-02-04 22:37:15
您也可以尝试使用插件架构,只需将组成应用程序的不同模块构建为插件,然后将每个应用程序所需的模块构建为单个代码库。在这种情况下,为任何特定的用户安装组件,将是一个添加或取出插件的问题。许多大型项目使您可以使用这种特殊的架构,因为它减少了复制和粘贴,增加了重用,并加快了开发速度。您可以查看nopcommerce,这是一个开放源码项目,了解它是如何实现的。
https://stackoverflow.com/questions/28321807
复制相似问题