8

Zastanawiam się, jak najlepiej to zrobić przez kilka dni i zastanawiałem się, co myślą inni.ASP.NET MVC 3 - Obsługa wielu domen i współużytkowanie pojedynczej bazy kodowej

Chcemy przebudować i zaktualizować wszystkie strony naszych firm do ASP.NET MVC 3 i używać wspólnego szablonu dla wszystkich (w większości); mamy już jedną witrynę w MVC 3, która będzie stroną donatora dla pozostałych.

Na początku miałem zamiar po prostu skopiować/wkleić projekt, zamienić całą zawartość na treść związaną z każdą witryną i zrobić to, ale to w przyszłości utrudniłoby aktualizowanie szablonów/arkuszy stylów/pomocników - my tylko mieć garstkę stron internetowych, więc nie jest to duży problem.

Idea 1

Co myślę chciałbym zrobić byłoby mieć jeden projekt zawierający wszystkie strony internetowe, ewentualnie podzielić się obszary, aby utrzymać je rozdzielić, a następnie korzystać z trasy do wysyłania żądania do różne domeny we właściwym miejscu i budować linki wskazujące właściwą domenę.

To by pasowało do tego, jak planujemy połączyć wszystkie witryny razem - zasadniczo z menu wspólnym dla wszystkich stron internetowych z listą różnych firm, te linki do domeny firm zawierającej podmenu pozycji związanych z tym konkretnym firma.

To gdzie staje się trudne, w które byłyby potrzebne do trasy na poziomie domeny - więc zamiast routingu do kontrolera company2 na bieżącej domenie (np http://www.groupcompany.ex/company2) Chcę żądań company2 własnej domenie tras - http://www.company2.ex/{controller}/{action}/{id}.

Idea 2

Ewentualnie mogę tworzyć projekty dla każdej witryny w jednym roztworze i mają wspólny projekt, który gospodarze pomocników, CSS i JavaScript itd

jakieś przemyślenia na którą stronę powinienem robić to i czy moje sugestie są całkowicie szalone? (co prawdopodobnie nastąpi).

+1

Mamy to działa dla naszego zestawu pewnych ograniczeń tutaj: http://stackoverflow.com/questions/490963/can-have-part-of-the-domain-name-as-a-parameter-in-my -routing-rules/499688 # 499688 – schmidty

Odpowiedz

7

Jest to typowa prośba. To, o co pytasz, nazywa się Multi-tenancy. Do tej pory nie znam żadnego konsensusu co do tego, jak osiągnąć Multi-tenancy w MVC. Istnieje prawdopodobnie tyle rozwiązań, ile pytań na ten temat.

Nie rozwiąłem tego problemu także dla mojej satysfakcji. Istnieje jednak wiele wpisów na blogu na ten temat. Przykłady obejmują:

http://weblogs.asp.net/zowens/archive/2010/05/26/multi-tenant-asp-net-mvc-introduction.aspx

http://codeofrob.com/archive/2010/02/01/multi-tenancy-in-asp.net-mvc-why-do-we-want-to.aspx

To jest coś, co myślę, że musi być zbudowany w ramy w pewnym momencie. Mam nadzieję, że tak się stanie, a przynajmniej ktoś wymyśli eleganckie rozwiązanie.

+0

Dziękuję za odpowiedź - wiele umów najmu często pojawia się, gdy tego szukam.Od przeczytania drugiego linka wygląda na to, że prawie rozwiązuje on nasz problem, ale nie jestem pewien, czy w pełni działa - wydaje się, że skupia się głównie na dostosowywaniu pojedynczego produktu dla różnych użytkowników, podczas gdy my chcemy w większości całkowicie odrębnej witryny, z różnymi widokami i kontrolerami dla wszystkich (wspólne cechy baru, takie jak formularze kontaktowe itp.). Widzę wiele pytań dotyczących routingu na poziomie subdomeny, ale nie na poziomie całej domeny. Wyszukiwanie jest kontynuowane. – akiller

+0

@akiller Czy Twoje "wyszukiwanie" sprawiło, że cokolwiek dobrego? Pierwsze łącze jest trochę stare (i koncentruje się na MVC1/MVC2 - chociaż podejrzewam, że nie jest trudno przekonwertować na MVC3). Drugie ogniwo, które autor blogu porzucił dla innej struktury (prowadząc mnie do podejrzeń, że jego rozwiązanie i/lub potrzeby nie działają). – REMESQ

+0

@REMESQ Poddałem się w końcu i właśnie dodałem wspólny projekt pomocnika MVC dla funkcji użyteczności i dodałem udostępnione pliki CSS/image w naszej głównej domenie i połączone z nimi z każdej strony naszego układu stron. W przypadku plików układu jest jeszcze sporo powtórzeń, ale wymaga to dużej ilości czynności konserwacyjnych. Może spojrzeć na komentarz Schmidty'ego pod moim pierwotnym pytaniem? – akiller