Web应用程序的连接或虚拟目录?
-
24-10-2019 - |
题
我看到连接是在许多项目中引用共享代码的一种常见方法。但是,我以前从未见过它们在Web应用程序中使用过。
我们的团队正在探索放弃虚拟目录以简化我们的构建过程的可能性。我的目标是汇编一份利弊清单,以便就此更改做出明智的决定。
在Web应用程序项目上使用连接或虚拟目录更合适吗?
环境为ASP.NET,IIS6/IIS7,vs.net。
解决方案
虚拟目录与交界处就像将苹果与梨进行比较:它们都创建了目录的虚拟副本,以及苹果和梨都是水果,但比较结束了。
首先,由于Windows Vista,新事物是符号链接(与结构基本相同,但也可以指向文件或远程SMB路径)。
符号链接使您能够例如,除了其web.config和样式表外,都可以共享Web应用程序的每个部分。这是虚拟目录永远无法做到的。
此外,虚拟目录还参与ASP.NET的更改监视。如果您尝试从应用程序内部删除(文件或)目录,例如,ASP.NET在请求完成后杀死您的应用程序,从而导致会话丢失等。如果代替使用虚拟目录,则使用符号链接,不会注意到更改,您的应用程序将继续搅动。
重要的是要记住,符号链接不是Windows中的日常功能。是的,您可以看到在Explorer中链接了文件或目录,但是它与链接的内容并不可见。另外,从代码来看,很难查看是否链接了文件,因此,如果您不小心删除要从一百万个符号链接链接到的文件,则所有这些符号链接突然“停止现有”。
符号链接还加快了同一应用程序的多个实例的部署,因为您唯一要做的就是复制一些实际文件,然后为所有其余的所有内容创建符号链接到源文件。
其他提示
如果使用虚拟文件夹,则需要在每个环境上安装IIS。但是,对于两种方法,您都需要在每次更改后手动维护所有参考(例如,当有人添加了另一种参考时),这不是令人信服的。
考虑将VC与引用系统一起使用。例如SVN与 外部. 。在这种情况下,您将有:
- 自动更新每个环境上的参考。
- 能够在不同版本的外部代码中具有参考。这将避免在需要更改每个外部代码后需要更改所有相关应用程序时的情况。