我看到,连接是在许多项目中引用共享代码的常用方式。不过,我之前从未在Web应用程序中看到过它们。Web应用程序的连接或虚拟目录?
我们的团队正在探索为了简化构建过程而放弃虚拟目录的可能性。我的目标是编制一份正反两方面的名单,以便对这一变化作出明智的决定。
在Web应用程序项目中使用连接点或虚拟目录更合适吗?
环境是ASP.NET,IIS6/IIS7,VS.NET。
我看到,连接是在许多项目中引用共享代码的常用方式。不过,我之前从未在Web应用程序中看到过它们。Web应用程序的连接或虚拟目录?
我们的团队正在探索为了简化构建过程而放弃虚拟目录的可能性。我的目标是编制一份正反两方面的名单,以便对这一变化作出明智的决定。
在Web应用程序项目中使用连接点或虚拟目录更合适吗?
环境是ASP.NET,IIS6/IIS7,VS.NET。
虚拟目录与连接点就像比较苹果和梨:它们都创建一种目录的虚拟副本,以及苹果和梨都是成果,但比较结束于此。
首先,自Windows Vista以来,新事物是符号链接(实质上与连接点相同,但也可指向文件或远程SMB路径)。
符号链接使您能够共享Web应用程序的每个部分,但Web.config和样式表除外。这是虚拟目录永远无法做到的事情。
此外,虚拟目录参与ASP.NET的更改监视。如果您尝试从应用程序中删除(文件或)目录,例如,ASP.NET在请求完成后会杀死您的应用程序,导致会话丢失等。如果不是使用虚拟目录,而是使用符号链接,更改将不会被注意到,您的应用程序将继续搅动。
请务必记住,符号链接不是Windows中的日常功能。是的,你可以看到一个文件或目录在资源管理器中被链接,但它不能即时链接到它。另外,从代码中很难看出文件是否被链接,所以如果您意外删除了从一百万个符号链接链接到的文件,那么所有这些符号链接将突然“停止存在”。
符号链接也加速了同一应用程序的多个实例的部署,因为您唯一要做的就是复制一些实际文件,然后为所有其他文件创建符号链接。
您可以在IIS7中运行虚拟目录作为应用程序(不知道确切的术语),这是我们所做的工作,并且工作得很好。这解决了你提到的一些问题。 – Kevin 2010-06-18 18:55:58
另一个抱怨与连接/符号链接是它导致IDE中的重复。例如,如果我有一个“admin”web项目的符号链接,它将显示两次。由于参考文献,它仍然需要存在于项目中。总的来说,路口看起来像是一个额外的步骤,不会给网络开发带来很多好处。例如:http://kevinx.net/images/repeat1.png – Kevin 2010-06-18 19:11:49
@Kevin:很明显,但只有当你部署100%完全相同的实例时才有效,这几乎从不是。例如,如果您希望每个实例都具有唯一的Web.config,则您需要连接点或符号链接。 – ErikHeemskerk 2013-05-17 14:41:00