我看到联结是在许多项目中引用共享代码的常用方法。但是,我之前没有看到它们在Web应用程序中使用过。
我们的团队正在探索放弃虚拟目录以支持联结以简化构建过程的可能性。我的目标是编制一份利弊清单,以便就这一变化做出明智的决定。
在Web应用程序项目中使用联结或虚拟目录更合适吗?
环境是ASP.NET,IIS6 / IIS7,VS.NET。
答案 0 :(得分:2)
虚拟目录与交叉点就像比较苹果和梨:它们都创建了一个目录的虚拟副本,苹果和梨都是结果,但比较结束了。
首先,从Windows Vista开始,新的东西是符号链接(基本上与联结相同,但也可以指向文件或远程SMB路径)。
例如,符号链接使您可以共享Web应用程序的每个部分,除了它的Web.config和样式表。这是虚拟目录永远不会做的事情。
此外,虚拟目录参与ASP.NET的变更监控。例如,如果您尝试从应用程序中删除(文件或)目录,则ASP.NET会在请求完成后终止您的应用,从而导致会话丢失等。如果不使用虚拟目录,则使用符号链接,更改将不会被注意到,您的应用程序将继续搅拌。
重要的是要记住,符号链接不是Windows中的日常功能。是的,您可以看到文件或目录在资源管理器中链接,但它不会立即显示链接的内容。此外,从代码中查看文件是否链接要困难得多,因此如果您意外删除了从一百万个符号链接链接到的文件,所有这些符号链接突然“停止存在”。
符号链接还可以加速同一应用程序的多个实例的部署,因为您唯一需要做的就是复制一些实际文件,然后为所有其他文件创建指向源文件的符号链接。
答案 1 :(得分:1)
如果是虚拟文件夹,则需要在每个环境中安装IIS。但是,对于这两种方法,您需要在每次更改后手动维护所有引用(例如,当有人添加一个引用时的情况),这是不方便的。
考虑将VCS与参考系统配合使用。例如带有externals的SVN。在这种情况下,您将拥有: