Соединения или виртуальные каталоги для веб-приложений? - PullRequest
1 голос
/ 07 июня 2010

Я вижу, что соединения являются распространенным способом ссылки на общий код во многих проектах. Тем не менее, я не видел их раньше в веб-приложениях.

Наша команда изучает возможность отказа от виртуальных каталогов в пользу переходов, чтобы упростить процесс сборки. Моя цель - составить список плюсов и минусов, чтобы принять обоснованное решение относительно этого изменения.

Правильнее ли использовать в проектах веб-приложений соединения или виртуальные каталоги?

Среда - ASP.NET, IIS6 / IIS7, VS.NET.

Ответы [ 2 ]

2 голосов
/ 18 июня 2010

Виртуальные каталоги и соединения похожи на сравнение яблок с грушами: они оба создают своего рода виртуальную копию каталога, а яблоки и груши - это фрукты, но сравнение на этом заканчивается.

Сначалаoff, начиная с Windows Vista, новая вещь - это символические ссылки (которые, по сути, такие же, как соединения, но могут также указывать на путь к файлу или удаленному SMB).

Символьные ссылки позволяют, например, совместно использовать каждую часть веб-приложения, кроме его Web.config и таблицы стилей.Это то, что виртуальные каталоги никогда не могут делать.

Кроме того, виртуальные каталоги участвуют в мониторинге изменений ASP.NET.Если вы попытаетесь удалить (например, файл или) каталог из вашего приложения, ASP.NET убьет ваше приложение после завершения запроса, что приведет к потере сеанса и т. Д. Если вместо использования виртуального каталога вы используете символическийссылка, изменение не будет замечено, и ваше приложение будет продолжать работать.

Важно помнить, что символические ссылки не являются повседневной функцией в Windows.Да, вы можете видеть, что файл или каталог связан в Проводнике, но не сразу видно, с чем он связан.Кроме того, из кода гораздо сложнее увидеть, связан ли файл, поэтому, если вы случайно удалите файл, на который ссылается, из миллиона символических ссылок, все эти символические ссылки внезапно «перестанут существовать».

Символьные ссылки также ускоряют развертывание нескольких экземпляров одного и того же приложения, поскольку единственное, что вам нужно сделать, это скопировать несколько реальных файлов, а затем создать символические ссылки на исходные файлы для всех остальных.

1 голос
/ 15 июня 2010

В случае с виртуальными папками IIS должен быть установлен в каждой среде. Однако для обоих подходов необходимо вручную поддерживать все ссылки после каждого изменения (например, ситуация, когда кто-то добавил еще одну ссылку), что не удобно.

Рассмотрите возможность использования VCS с системой ссылок. Например SVN с внешними . В этом случае у вас будет:

  1. Автоматическое обновление ссылок на каждую среду.
  2. Возможность иметь ссылки в разных версиях внешнего кода. Это позволит избежать ситуаций, когда необходимо менять все зависимые приложения после каждого изменения внешнего кода.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...