Соединения или виртуальные каталоги для веб -приложений?
-
24-10-2019 - |
Вопрос
Я вижу, что перекрестки являются общим способом ссылки на общий код во многих проектах. Тем не менее, я раньше не видел их в веб -приложениях.
Наша команда изучает возможность отказа от виртуальных каталогов в пользу перекрестков, чтобы упростить наш процесс сборки. Моя цель - составить список плюсов и минусов, чтобы принять обоснованное решение относительно этого изменения.
Уместно ли использовать соединения или виртуальные каталоги в проектах веб -приложений?
Окружающая среда ASP.NET, IIS6/IIS7, VS.Net.
Решение
Виртуальные каталоги и развязки похожи на сравнение яблок с грушами: они оба создают своего рода виртуальную копию каталога, а яблоки и груши являются фруктами, но сравнение заканчивается там.
Во -первых, поскольку Windows Vista, новая вещь - это символические ссылки (которые, по сути, такие же, как соединения, но также могут указывать на файл или удаленный путь SMB).
Символические ссылки позволяют, например, делиться каждой частью веб -приложения, кроме его web.config и таблицы стилей. Это то, что виртуальные каталоги никогда не могут сделать.
Кроме того, виртуальные каталоги участвуют в мониторинге изменений ASP.NET. Если вы попытаетесь удалить (файл или) каталог из вашего приложения, например, ASP.NET убивает ваше приложение после завершения запроса, что приводит к потере сеанса и т. Д. Если вместо использования виртуального каталога вы используете символический Ссылка, изменение не будет замечено, и ваше приложение будет продолжать взбивать.
Важно иметь в виду, что символические ссылки не являются повседневными функциями в окнах. Да, вы можете видеть, что файл или каталог связаны в Explorer, но он не виден с тем, что он связан. Кроме того, из кода гораздо сложнее увидеть, связан ли файл, поэтому, если вы случайно удаляете файл, который связан с миллионами символических ссылок, все эти символические ссылки внезапно «прекращают существовать».
Символические ссылки также ускоряют развертывание нескольких экземпляров одного и того же приложения, поскольку единственное, что вам нужно сделать, это скопировать несколько фактических файлов, а затем создать символические ссылки на исходные файлы для всех остальных.
Другие советы
В случае, если с виртуальными папками вам нужна IIS, установленная в каждой среде. Однако с обоими подходами вам необходимо вручную поддерживать все ссылки после каждого изменения (например, ситуация, когда кто -то добавил еще одну ссылку), что не является убедительным.
Рассмотрите возможность использования VCS с системой рефератов. Например, SVN с внешние. Анкет В этом случае у вас будет:
- Автоматическое обновление ссылок в каждой среде.
- Возможность иметь ссылки в разных версиях внешнего кода. Это будет избежать ситуаций, когда необходимо изменить все зависимые приложения после каждого внешнего изменения кода.