1

我看到联结是在许多项目中引用共享代码的常用方式。但是,我之前没有看到它们在 Web 应用程序中使用过。

我们的团队正在探索放弃虚拟目录以支持连接以简化我们的构建过程的可能性。我的目标是编制一份利弊清单,以便就这一变化做出明智的决定。

在 Web 应用程序项目中使用联结或虚拟目录是否更合适?

环境为 ASP.NET、IIS6/IIS7、VS.NET。

4

2 回答 2

2

虚拟目录与连接就像比较苹果和梨:它们都创建了目录的虚拟副本,苹果和梨都是水果,但比较到此为止。

首先,从 Windows Vista 开始,新事物是符号链接(本质上与联结相同,但也可以指向文件或远程 SMB 路径)。

例如,符号链接使您能够共享 Web 应用程序的每个部分,但 Web.config 和样式表除外。这是虚拟目录永远做不到的。

此外,虚拟目录参与 ASP.NET 的更改监视。例如,如果您尝试从应用程序中删除(文件或)目录,ASP.NET 在请求完成后会终止您的应用程序,从而导致会话丢失等。如果不使用虚拟目录,则使用符号链接,更改将不会被注意到,您的应用程序将继续搅动。

请务必记住,符号链接不是 Windows 中的日常功能。是的,您可以在资源管理器中看到文件或目录已链接,但链接的内容不会立即可见。此外,从代码中查看文件是否已链接要困难得多,因此,如果您不小心从一百万个符号链接中删除了链接的文件,所有这些符号链接都会突然“停止存在”。

符号链接还加快了同一应用程序的多个实例的部署,因为您唯一需要做的就是复制一些实际文件,然后为其余所有文件创建指向源文件的符号链接。

于 2010-06-18T13:40:28.773 回答
1

如果使用虚拟文件夹,您需要在每个环境中安装 IIS。但是,对于这两种方法,您需要在每次更改后手动维护所有引用(例如,有人添加了一个更多引用的情况),这并不方便。

考虑将 VCS 与参考系统一起使用。例如带有externals的 SVN 。在这种情况下,您将拥有:

  1. 自动更新每个环境的引用。
  2. 能够在不同版本的外部代码中引用。这将避免在每次外部代码更改后都需要更改所有相关应用程序的情况。
于 2010-06-14T20:49:06.153 回答