2013-01-09 27 views
6

Moja firma posiada kilkanaście stron internetowych i izolowanych baz danych (identyczne schematy). każdy klient ma własną stronę internetową (inna pula aplikacji) i DB.najlepsza praktyka dla DAL i konfiguracji dla wielu najemców izolowanych DB

każda strona ma własną konfigurację, kilka ciągów połączenia, ale wszystkie mają ten sam schemat dla konfiguracji.

cust1.domain.com

cust2.domain.com

cust3.domain.com

Chcielibyśmy połączyć wszystkie strony internetowe do jednego (pojedyncza aplikacja basen) i pozostać z izolowanym DB ze względów bezpieczeństwa i dużej ilości danych.

co jest najlepszą praktyką projektowania DAL i konfigurację tego? jakie są tego konsekwencje, jeśli duża ilość najemcy będzie w tym samym czasie? czy jedna pula aplikacji może zarządzać tą sytuacją lub może być zarządzana w jakiś sposób?

BTW, używamy ASP przynależność do uwierzytelniania użytkowników.

Dzięki z góry, Eddie

+0

starać się unikać sprawę, że użytkownik A, miejsce na web.config baza B Użytkownik - prawidłowa? – Aristos

+0

tak, jednym z celów. każdy klient ma swoje własne połączenia szeregowe i inne ustawienia. –

+0

Co do każdego klienta ma swoje osobiste konto użytkownika i bazę danych, która musi być używana do połączenia - przez web.config – Aristos

Odpowiedz

0

Zastosowanie Application_PostAuthenticate wydarzenie w global.asax załadować poprawną bazę danych, a następnie zamknąć połączenie w Application_EndRequest

+0

Brakuje części, w której mogę zidentyfikować whitch DB z ładowaniem aspemem, które należy załadować. Załóżmy, że chcę połączyć wszystkie powiązania z pojedynczą witryną, a gdy tylko klient (grupa użytkowników w określonej firmie) jest połączony, to iis (lub jak za to odpowiedzialna) przekieruje się do konfiguracji klienta (np. connectionStrings). –

0

Jedną opcją jest użycie profile w członkostwa i przechowywać informację to pozwoli ci określić, z której z rzeczywistych baz danych mają się łączyć. Minusem jest to, że będziesz musiał przechowywać tę informację na czas sesji użytkowników, więc albo plik cookie lub zmienna sesji będzie potrzebna.

Implikacje jednym miejscu vs wiele zależy wiele od środowiska i stosowania, czy obecnie mają wiele stron na jednym polu lub masz farmę internetowej? czy znasz liczbę równoczesnych użytkowników dla każdej witryny, ilość ruchu? Monitor wydajności może Ci pomóc zobaczyć, jak duża jest każda strona, ale możesz potrzebować bardziej inwazyjnego rejestrowania w celu określenia danych, takich jak współbieżni użytkownicy. Znalazłem this pytanie o błąd serwera wokół wydajności IIS 7, które może być pomocne:

+0

Obecnie mamy wiele witryn na jednym pudełku (w przyszłości przeniesiemy to wszystko do Amazona i może stworzymy kilka serwerów internetowych). każda firma ma od 10 do 20 użytkowników. większość systemu opiera się na raportach, więc większość, jeśli czas na maszynie zajęty jest wykonywaniem serwera sql. –

+0

przy tych poziomach użytkowania nie powinieneś mieć żadnych problemów z usługami IIS, możesz na to spojrzeć wykorzystując internetowy ogród. sprawdź [link] (http://www.codeproject.com/Articles/114910/What-is-the-difference-between-Web-Farm-and-Web-Ga), aby uzyskać szczegółowe informacje na temat konfigurowania usług IIS. Jeśli twoje aplikacje nie próbują otworzyć setek połączeń, nie wierzę, że będziesz mieć jakieś problemy, ale oczywiście nie znam twojej bazy kodu ani środowiska, więc nie mogę zagwarantować niczego – Nathan

+0

dzięki @Nathan. Większość naszej aplikacji internetowej wykonuje manipulację sql na dużej ilości danych (na podstawie raportów). czy mogę przypisać każdemu klientowi (grupie użytkowników w określonej firmie) do innego działającego procesu? jak odizolować klientów, aby utrzymać wysoki poziom bezpieczeństwa? –

0

Możesz wypróbować "Shared DataBase with Different Schema" z architektury danych dla wielu dzierżawców. W DAL możesz wybrać konkretny schemat, który jest pertyczny dla bieżącego użytkownika. Prosty i bezpieczny w ten sposób

kontynuować czytanie http://msdn.microsoft.com/en-us/library/aa479086.aspx