Недавно я разработал приложение MVC для клиента, и они хотели бы разместить его вместе с несколькими другими приложениями на том же сервере.
Я больше разработчик, чем администратор сервера, но моим инстинктом было создать новый сайт в IIS с его собственной привязкой к субдомену.
Однако вместо этого клиент хотел бы создать виртуальный каталог на сайте по умолчанию, который указывает на приложение. Так, например, у вас будет:
COMPANY.COM/APP1
и COMPANY.COM/APP2
Скорее, чем:
APP1.COMPANY.COM
и APP2.COMPANY.COM
это сделал работай; однако он конфликтовал с относительными URL-адресами в стандартной разметке HTTP, и проблема была быстро решена.
Что лучше: разместить несколько веб-приложений на одном сервере в качестве отдельных сайтов или виртуальных каталогов на веб-сайте по умолчанию? Есть ли подводные камни в подходе к виртуальному каталогу?
Я не осуждаю подход к виртуальному каталогу, он для меня в новинку, и я хочу быть уверен, что он не вызовет проблем сейчас или в будущем.
Я всегда старался придерживаться отдельных сайтов для приложений. Вы получаете гораздо больший контроль над всем, и если вы используете ASP.NET, вы не сталкиваетесь с каскадными проблемами web.config, которые легко решить. Кроме того, у вас есть более точный контроль над пулами приложений и фактическая возможность наблюдать за производительностью каждого отдельного приложения. Это все предпочтения.
В любом случае, вероятно, лучшим ответом будет то, что вы применяете привязки на уровне веб-сайта, а НЕ на уровне приложения. Поэтому, если каждому приложению нужен собственный URL-адрес или SSL, а не без SSL, вам действительно нужно смотреть на отдельные сайты.
Кроме того, как вы упомянули, вам почти нужно программировать с учетом механизма развертывания. Поскольку любое использование относительных URL-адресов ломает многое.
Наконец: почему они не хотят использовать поддомены? Если вы спросите меня, он обеспечивает хорошее чистое разделение ресурсов RESTfulish.
Я бы сказал, это зависит от обстоятельств ... Очень ли приложения похожи друг на друга в том, что вам было бы удобно вносить одно изменение на более высоком уровне, которое каскадно переходило бы в каждый виртуальный каталог, что не повлияло бы на функциональность какого-либо отдельного приложения? Если у вас есть отдельный сайт для каждого приложения, вам нужно будет отдельно управлять настройками каждого сайта (сертификатами, IP-адресами, портами и т. Д.), Что может стать головной болью, если их много, но они являются полностью независимыми сайтами, поэтому настройка не повлияет на другое приложение. Реальная работа выполняется рабочим процессом / пулом приложений, поэтому при любой настройке вы можете использовать один и тот же пул приложений для нескольких приложений или иметь отдельный пул для каждого приложения.