2011-02-10 10 views
10

Dzień dobry - mam dziś dość ogólne pytanie - zadanie polegało na stworzeniu aplikacji internetowej do zarządzania podstawowymi informacjami o klientach. Jest to bardzo prosta aplikacja, ale nie wiem, o czym należy pamiętać, aby stworzyć witrynę wspierającą wielu użytkowników w ich własnych domenach lub subdomenach naszego adresu URL?O czym należy pamiętać przy tworzeniu aplikacji MVC dla wielu klientów korzystających z asp.net?

W jaki sposób ograniczyć użytkownikom możliwość logowania się do każdej innej części aplikacji?

Widziałem wzmiankę o zakresie bazy danych w podobnych pytaniach na temat przepełnienia stosu, czy ktokolwiek mógłby opracować najlepsze praktyki dla takiej implementacji?

Czy są jakieś nowe funkcje w MVC3 do obsługi wielu dzierżawców? Mam do czynienia z tym problemem z MVC2 i moją witryną eCommerce, gdzie zdecydowaliśmy, że chcemy, aby była ona oznaczona na biało i dostosowywana dla wielu właścicieli sklepów, i nie wiemy, od czego zacząć wdrażanie tych funkcji w istniejącej aplikacji. Dowolne wejście jest doceniane.

edit

Wypracowanie na multi-najmu, co mam na myśli - w kontekście sklepie na przykład wielu użytkowników założyć własny sklep na www.mystore.com i każdy dali unikalna subdomena, aby uzyskać dostęp do własnej instancji sklepu, na stronie user1.mystore.com, user2.mystore.com itd. Każdy sklep miałby klientów z historią zamówień, a klienci mieliby loginy. Musiałbym ograniczyć klientów user1.mystore.com do logowania się na user2.mystore.com bez nowego konta, a także zapobiec dostępowi user2.mystore.com do historii klientów user1.mystore.com.

Odpowiedz

20
+0

Świetne linki, dzięki! Zamierzam go przekonać do zainstalowania osobnych instancji sklepu dla każdego klienta i uniknięcia bólu głowy w usuwaniu aplikacji. – Gallen

+0

Dla MVC 4 jest teraz inna możliwość: widoki mogą być przekierowane za pomocą niestandardowego trybu DisplayMode. Na przykład. do Index.TenantName.cshtml i Index.TenantName.Iphone.cshtml – bushed

7

Najprawdopodobniej masz zamiar spędzić sporo czasu na restrukturyzacji bazy danych.

Pierwszym krokiem jest utworzenie stołu do przechowywania listy "Lokatora". Następnie musisz dodać ten TenantId do niemal każdej tabeli w systemie, aby upewnić się, że nikt się nie nawzajem nie podoła. Możesz pominąć wszystkie tabele o charakterze globalnym. Jednym z przykładów może być lista kodów stanu.

Jednak wszystko od użytkowników po dane, które mają itp., Będzie musiało mieć ten identyfikator. Zmodyfikuj także wszystkie swoje indeksy, aby wziąć na siebie lokatora.

Gdy już to zrobisz, będziesz musiał zmodyfikować wszystkie swoje zapytania, aby uwzględnić najemcę.

Jedna kolumna tabeli najemców powinna być adresem URL portalu. Na przykład customername.oursite.com lub cokolwiek innego. W ten sposób możesz skierować wiele adresów URL do dokładnie tego samego kodu. Gdy witryna musi korzystać z aktualnej najemcy, po prostu sprawdź ją na podstawie podanego adresu URL.

Gdybym to robił, planowałbym spędzić około 1 do 2 godzin na tabeli w bazie danych, aby "multi-tenant". Oczywiście niektóre tabele (i ich zapytania) będą działały szybciej; inne potrwają dłużej.

Nawiasem mówiąc, nie obejmuje to np. Dostosowywania interfejsu użytkownika (wyglądu/stylu) na dzierżawcę lub czegokolwiek podobnego. Jeśli musisz to zrobić, musisz utworzyć katalog na serwerze dla każdego lokatora, aby przechowywać arkusze stylów lub załadować go bezpośrednio z bazy danych (która ma własne problemy z pamięcią podręczną).

Zazwyczaj projektuje się to na początku projektu. Przystąpienie do już (lub prawie) kompletnego projektu to PITA.

Na koniec przetestuj, przetestuj, przetestuj i wykonaj więcej testów.Będziesz musiał upewnić się, że każde pojedyncze zapytanie pobiera tylko te dane, których absolutnie potrzebuje.

+1

W tym artykule omówiono kilka projektów baz danych: http://msdn.microsoft.com/en-us/library/aa479086.aspx – rboarman

+0

@rboarman: dobry link. Zapomniałem o tym. – NotMe

Powiązane problemy