2010-06-07 77 views
1

我看到,连接是在许多项目中引用共享代码的常用方式。不过,我之前从未在Web应用程序中看到过它们。Web应用程序的连接或虚拟目录?

我们的团队正在探索为了简化构建过程而放弃虚拟目录的可能性。我的目标是编制一份正反两方面的名单,以便对这一变化作出明智的决定。

在Web应用程序项目中使用连接点或虚拟目录更合适吗?

环境是ASP.NET,IIS6/IIS7,VS.NET。

回答

2

虚拟目录与连接点就像比较苹果和梨:它们都创建一种目录的虚拟副本,以及苹果和梨都是成果,但比较结束于此。

首先,自Windows Vista以来,新事物是符号链接(实质上与连接点相同,但也可指向文件或远程SMB路径)。

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

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

请务必记住,符号链接不是Windows中的日常功能。是的,你可以看到一个文件或目录在资源管理器中被链接,但它不能即时链接到它。另外,从代码中很难看出文件是否被链接,所以如果您意外删除了从一百万个符号链接链接到的文件,那么所有这些符号链接将突然“停止存在”。

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

+1

您可以在IIS7中运行虚拟目录作为应用程序(不知道确切的术语),这是我们所做的工作,并且工作得很好。这解决了你提到的一些问题。 – Kevin 2010-06-18 18:55:58

+0

另一个抱怨与连接/符号链接是它导致IDE中的重复。例如,如果我有一个“admin”web项目的符号链接,它将显示两次。由于参考文献,它仍然需要存在于项目中。总的来说,路口看起来像是一个额外的步骤,不会给网络开发带来很多好处。例如:http://kevinx.net/images/repeat1.png – Kevin 2010-06-18 19:11:49

+0

@Kevin:很明显,但只有当你部署100%完全相同的实例时才有效,这几乎从不是。例如,如果您希望每个实例都具有唯一的Web.config,则您需要连接点或符号链接。 – ErikHeemskerk 2013-05-17 14:41:00

1

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

考虑使用VCS和推介系统。例如,带有externals的SVN。在这种情况下,您将拥有:

  1. 自动更新每个环境的引用。
  2. 能够在不同版本的外部代码中引用。这将避免在每次外部代码更改后需要更改所有相关应用程序的情况。
+0

这是一个非常酷的功能,我会看看是否有一个相当的perforce。 – Kevin 2010-06-15 12:48:14

相关问题