【问题标题】:ASP.NET Web Application: use 1 or multiple virtual directoriesASP.NET Web 应用程序:使用 1 个或多个虚拟目录
【发布时间】:2010-05-02 03:42:17
【问题描述】:

我正在开发一个(较大的)内部 Web 应用程序,该应用程序具有多个模块(安全、执行、功能、报告等)。应用程序中的所有页面共享导航、CSS、JS、控件等。我想做一个“Web 应用程序”项目,其中包括应用程序的所有页面,然后引用将具有数据库和业务逻辑的各种项目在他们中。但是,项目中的一些人希望每个模块的页面都有单独的项目。

为了更清楚地说明这一点,这就是我提倡的项目。

/WebInterface*
/SecurityLib
/ExecutionLib
etc...

这就是他们所提倡的:

/SecurityInterface*
/SecutiryLib
/ExecutionInterface*
/ExecutionLib
etc...

*项目将发布到 IIS 的虚拟目录

基本上我正在寻找的是这两种方法的优点。以下是我目前能想到的:

单一虚拟目录

优点

  1. 模块可以共享一个 MasterPage
  2. 模块可以共享用户控件(这很常见)
  3. 指向其他模块的链接位于同一虚拟目录中,因此不需要完全限定。
  4. 将不兼容的模块版本放在一起的可能性较小。

多个虚拟目录

优点

  1. 可以在不中断其他模块的情况下发布单个模块的新版本
  2. 模块更加分隔。更改破坏其他模块的可能性较小。

不过,我不认同这些论点。
首先,使用负载平衡服务器(我们将拥有)我们应该能够以零停机时间发布项目的新版本,假设没有破坏性的数据库更改。 其次,如果某些东西“破坏”了另一个模块,那么当开发人员复制最新版本的 UserControl、MasterPage 或 dll 时,要么存在不正确的依赖关系,要么破坏最终会出现在另一个模块中。

作为参考,该项目大约有 10 名开发人员投入了大约 50% 的时间。初步开发大约需要 9 个月。

【问题讨论】:

    标签: asp.net


    【解决方案1】:

    我认为没有太多理由使用多个虚拟文件夹。

    将功能分离到单独的模块中是一个好主意。但这与虚拟文件夹无关。模块可以是单独的库项目并使用单独的程序集发布。然后可以单独对它们进行单元测试并单独部署。这就是我通常自己做的事情。

    【讨论】:

    • 所以你可以在一个虚拟目录下拥有多个 Web 应用程序项目?虽然这仍然存在一些缺点(不能共享 MasterPage 或 UserControls),但是,这将解决链接问题。
    • 多个项目引用多个 library 项目,然后将它们用作大型 Web 应用程序项目中的引用。这也有利于测试和关注点分离。大型项目的一大优势。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-28
    • 2011-01-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多