2012-02-03 29 views

Odpowiedz

6

Tworzenie oddzielnych projektów dla jednego klienta będzie kłopotliwe w utrzymaniu, podczas gdy pojedynczy projekt dla wszystkich klientów może być trudny do dostosowania. To cienka linia, a twoje potrzeby będą decydować o tym, jak zbudujesz swoje rozwiązanie.

Jednym z moich ostatnich projektów, w których wykonujemy SAS (Software as a Service), udało się zbudować naszą aplikację MVC przy użyciu architektury wtyczek, aby każdy klient mógł mieć własną bibliotekę DLL wdrożoną w BIN, która umożliwiłaby dostosowywanie do tylko ten klient (do widoków, zasobów lub nawet kontrolerów). Jesteśmy w stanie wykorzystać jedną podstawę kodu i mieć wielu klientów, większość bez dostosowań, a niektórzy z drobnymi i ciężkimi dostosowaniami.

Każdy klient ma unikatowy adres URL dla ich „Portal” i najczęściej mają sferze prywatnej, więc http://app.mycompany.com lub http://mycompanyapp.com a niektóre są nawet gościł na naszej własnej stronie, http://hostingcompany.com/client/.

Budując aplikację, która może ustalić, który klient jest oparty na adresie URL, z łatwością poradziliśmy sobie z tymi wszystkimi przypadkami. Kiedy wdrażamy, mamy jedną bazę kodu (wdrożoną tylko RAZEM do jednego folderu), a wszystkie witryny używają tego samego wdrożenia kodu.

Prowadzimy farmę internetową, w której mamy wiele serwerów sieci web .NET i skonfigurowaliśmy równoważenie obciążenia, a strony mają wszystkie strony ping, z którymi nasze moduły równoważenia obciążenia wchodzą w interakcje, aby określić ich stan.

Tak jak powiedziałem, twoje potrzeby określą najlepsze rozwiązanie dla ciebie.

0

Nick, a co z bazą danych, czy powinniśmy używać jednej bazy danych dla każdego klienta, czy też mieć osobną bazę danych dla każdego klienta? W moim scenariuszu nasza aplikacja jest bardziej skoncentrowana na bazie danych, więc dla każdego klienta wprowadzono wiele zmian zgodnie z rolami biznesowymi.

+1

Niestety nie widziałem Twojego pytania, ponieważ nie było ono odpowiedzią na mój wpis. Może przebiegać tak długo, jak długo twoja struktura bazy danych jest zbudowana w taki sposób, aby obsługiwała współużytkowane bazy danych (użyj CompanyID do podziału danych lub czegoś). Dzięki odpowiedniej strukturze możesz łatwo przenieść klientów indywidualnych do ich własnych instalacji. W naszym przypadku mamy zarówno pojedynczą bazę danych MASTER, która przechowuje pewną główną konfigurację, taką jak mapowanie klienta do bazy danych, listę domen, na które aplikacja odpowiada itp. W dowolnym momencie możemy przenosić klientów (z dzielonego na dedykowany lub dedykowany do udostępniony). –

Powiązane problemy