【发布时间】:2010-05-02 03:42:17
【问题描述】:
我正在开发一个(较大的)内部 Web 应用程序,该应用程序具有多个模块(安全、执行、功能、报告等)。应用程序中的所有页面共享导航、CSS、JS、控件等。我想做一个“Web 应用程序”项目,其中包括应用程序的所有页面,然后引用将具有数据库和业务逻辑的各种项目在他们中。但是,项目中的一些人希望每个模块的页面都有单独的项目。
为了更清楚地说明这一点,这就是我提倡的项目。
/WebInterface*
/SecurityLib
/ExecutionLib
etc...
这就是他们所提倡的:
/SecurityInterface*
/SecutiryLib
/ExecutionInterface*
/ExecutionLib
etc...
*项目将发布到 IIS 的虚拟目录
基本上我正在寻找的是这两种方法的优点。以下是我目前能想到的:
单一虚拟目录
优点
- 模块可以共享一个 MasterPage
- 模块可以共享用户控件(这很常见)
- 指向其他模块的链接位于同一虚拟目录中,因此不需要完全限定。
- 将不兼容的模块版本放在一起的可能性较小。
多个虚拟目录
优点
- 可以在不中断其他模块的情况下发布单个模块的新版本
- 模块更加分隔。更改破坏其他模块的可能性较小。
不过,我不认同这些论点。
首先,使用负载平衡服务器(我们将拥有)我们应该能够以零停机时间发布项目的新版本,假设没有破坏性的数据库更改。
其次,如果某些东西“破坏”了另一个模块,那么当开发人员复制最新版本的 UserControl、MasterPage 或 dll 时,要么存在不正确的依赖关系,要么破坏最终会出现在另一个模块中。
作为参考,该项目大约有 10 名开发人员投入了大约 50% 的时间。初步开发大约需要 9 个月。
【问题讨论】:
标签: asp.net