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

StackOverflow https://stackoverflow.com/questions/2992112

Вопрос

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

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

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

Окружающая среда ASP.NET, IIS6/IIS7, VS.Net.

Это было полезно?

Решение

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

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

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

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

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

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

Другие советы

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

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

  1. Автоматическое обновление ссылок в каждой среде.
  2. Возможность иметь ссылки в разных версиях внешнего кода. Это будет избежать ситуаций, когда необходимо изменить все зависимые приложения после каждого внешнего изменения кода.
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top