Firma, w której aktualnie jestem zatrudniony, zmaga się z decyzją architektoniczną dotyczącą naszej gamy aplikacji. W tej chwili mamy kilka aplikacji, które mają wspólne części (przypominają moduł kalendarza). Do tej pory mieliśmy na kopiowanie kodu z innej istniejącej aplikacji, ale w przyszłości chcemy rozwijać nasze aplikacje do bardziej modułową:ASP.NET MVC 5 Modularna architektura aplikacji internetowych?
Jak widać na zdjęciu powyżej, możliwe jest mieć różne wersje modułów na aplikację.
Rozważamy możliwych rozwiązań:
- Budowa rdzenia ramy aplikacji, gdzie możemy zainstalować nasze modułów Mamy myśleć o narzędzia jak Nuget to osiągnąć..
- Budowanie jednej aplikacji, w której zawarte są wszystkie nasze moduły (= jedna podstawa kodu), ale klient otrzymuje tylko funkcję, która jest dla niego aktywowana. Czekamy na niektóre problemy z wersjonowaniem tutaj.
Wszelkie sugestie na ten temat? Nie możemy być pierwszą firmą, która zmaga się z tym problemem Wszystkie nasze aplikacje to aplikacje internetowe ASP.NET MVC 4/5, zbudowane z szablonów Razor Templates lub JavaScript (knockout.js). Wszystkie nasze aplikacje są wdrażane na platformie Microsoft Azure, a my mamy rozległą wiedzę na temat buildscript (MSBuild), serwerów CI ...
Pracowałem na poprzedniej pozycji z podobną konfiguracją. To, co zrobiliśmy, miało jedno kompleksowe rozwiązanie obejmujące wszystkie projekty. Wielorazowe elementy aplikacji będą dostępne we wspólnym projekcie w rozwiązaniu, do którego odwołują się poszczególne aplikacje internetowe. Jedyną rzeczą, której nie dotyczy to różne wersje modułów, dlaczego tak się dzieje? Myślę, że to na dłuższą metę może spowodować ból głowy. Jeśli chodzi o dostęp do różnych modułów dla każdego klienta, byłby on regulowany przez twoją strukturę uprawnień/zabezpieczeń w twojej aplikacji. – mattytommo
Możesz także uczynić każdy moduł indywidualnym projektem i importować projekty do każdego większego projektu. Wolę to od dużego rozwiązania, które obejmuje wszystko proste, ponieważ nie cierpię przeszukiwania dużej struktury drzewa. Oba osiągają jednak ten sam wynik. Pozwala to również zachować stare wersje modułów i dodać je do większego projektu/ –
@mattytommo współpracujemy z płacącymi klientami. Jest możliwe, że chcemy zatrzymać określonego klienta (= aplikację) na wersji 1.x, ponieważ tego chce, lub dlatego, że nie zapłacił za nową wersję 2.0 ... – yoerideschrijver