Отдельное приложение ASP для каждого клиента на IIS или Single? - PullRequest
0 голосов
/ 22 июня 2011

Привет Разработчики / Архитекторы,

Это больше архитектурный вопрос:

У меня есть веб-приложение. Приложение использует ASP Membership API (от аутентификации) для управления пользователями / ролями.

Мы размещаем отдельное приложение для каждого из наших клиентов. Таким образом, в основном каждый клиент имеет имя приложения в базе данных ASP Membership. Затем этот клиент создает свои роли / пользователей в соответствии со своими потребностями.

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

поэтому у каждого клиента есть отдельный URL-адрес, например: http://mysite/client1., а затем client1 имеет своих собственных пользователей, роли. Базовая база данных приложения, используемая приложением, является клиентом.

Веб-приложение и схема базы данных одинаковы для всех клиентов.

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

Но я хочу изменить подход к размещению отдельного приложения для каждого клиента. Я хочу разместить одно приложение для всех клиентов:

это вызывает некоторые вопросы:

Q1. как бы мне создать эти URL: http://mysite/client1, http://mysite/client2 (так как я не могу разместить имена всех клиентов на главной странице входа в систему, а затем, как только пользователь выбирает имя клиента, предоставляет имя пользователя / пароль .. .. я не могу этого сделать из-за характера бизнеса) *

Q2. Я не могу создать одно приложение (на уровне IIS и на уровне членства ASP), а затем разделить клиентов по ролям, потому что все клиенты имеют роли внутри себя, и, кроме того, 2 или более клиентов могут иметь пользователя с одинаковым именем; поэтому userX для client1 и userX для client2. Эти пользователи разные, но у них одинаковые имена.

* Одним из решений Q1 может быть то, что я создаю новое приложение пересылки, которое размещается для каждого клиента отдельно в IIS в виртуальном каталоге клиента. И когда клиент открывает свой URL (например, http://mysiteforworder/client1), они перенаправляются на (http://mysite/Default.apsx?app=hjuk98jkio8), где (hjuk98jkio8) - зашифрованное имя клиента, которое мы используем внутри.

это разрешит Q1, но не Q2.

дайте мне знать, какие у меня есть варианты ...

1 Ответ

1 голос
/ 22 июня 2011

Вот идея, которую я использовал несколько раз раньше.

В IIS можно настроить несколько веб-приложений / виртуальных каталогов, например / client1 и / client2, которые указывают на один и тот же физический путь веб-приложения на диске. Таким образом, код остается одинаковым для всех клиентов, все управляются централизованно, но для разных клиентов существуют разные URL.

Используя WMI, вы даже можете создавать сценарии или автоматизировать создание / обслуживание webapps / vdirs в IIS.

Чтобы определить, к какой БД подключиться или какое приложение запущено, вы можете посмотреть URL-адрес, к которому обращаетесь, и использовать первую часть пути в качестве ключа в словаре конфигурации для этого клиента.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...