ASP.NET MVC 5 Modulare Web-Anwendung-Architektur?

Das Unternehmen wo ich derzeit beschäftigt ist, kämpft mit einer architektonischen Entscheidung für unsere Palette von Anwendungen. Im moment haben wir ein paar Anwendungen, für die gemeinsamen Teile (denken Sie wie ein Kalender-Modul). Bis jetzt hielten wir uns auf das kopieren von code von anderen vorhandenen Anwendung, sondern in der Zukunft wollen wir entwickeln unsere Anwendungen, um ein mehr Modulares design:

ASP.NET MVC 5 Modulare Web-Anwendung-Architektur?

Wie Sie, in sehen können das Bild oben, das es möglich ist, verschiedene Versionen der Module pro Anwendung.

Sind wir in Erwägung ziehen, um mögliche Lösungen:

  • Aufbau einer core-Applikation-framework, wo wir können, installieren Sie unsere
    Module. Wir denken, ein tool wie Nuget, dies zu erreichen.
  • Aufbau einer Anwendung, bei dem alle Module enthalten sind (=eine code-Basis), aber der Kunde bekommt nur die Funktionen, die aktiviert wird, für ihn. Wir sind forseeing einige Probleme mit der Versionierung hier.

Irgendwelche Vorschläge dazu? Wir können nicht die erste Firma, die Kämpfe mit diesem problem?Alle unsere Anwendungen sind ASP.NET MVC 4/5, web-Anwendungen, gebaut mit Razor-Templates oder JavaScript-Vorlagen (knockout.js). Alle unsere Anwendungen bereitgestellt werden, die auf Microsoft Azure und wir haben umfangreiches inhouse-wissen buildscripts (MSBuild), CI-Servern...

  • Ich habe gearbeitet, in einer früheren position mit einem ähnlichen setup. Was wir Taten, war eine umfassende Lösung, die enthält alle Projekte. Die wiederverwendbare Elemente Ihrer Anwendungen würde Leben in einem gemeinsamen Projekt, in der Lösung verwiesen wird, die von jedem Ihrer web-Anwendungen. Die eine Sache, dass dies nicht die Adresse ist, die verschiedenen Versionen der Module, warum ist das der Fall? Ich denke, es ist nur zu führen, dass Sie Kopfschmerzen auf lange Sicht. Wie für den Zugriff auf verschiedene Module für jeden client, das wäre geregelt, die von Ihren Berechtigungen/security-Struktur in Ihrer Anwendung.
  • Man könnte auch für jedes Modul ein eigenes Projekt, und importieren Sie die Projekte in jedem größeren Projekt. Ich bevorzuge diese an die große Lösung, die umfasst alles, einfach, weil ich hasse die Suche durch eine große Struktur. Beide erzielen das gleiche Ergebnis, obwohl. Dies ermöglicht Ihnen auch die alten Versionen der Module, und fügen Sie diese in den größeren Projekt -/
  • wir arbeiten mit zahlenden Kunden. Es ist möglich, dass wir vermeiden möchten, dass ein bestimmter Kunde (=Anwendung) auf version 1.x, weil er will es so oder weil er nicht zahlen wollte für die neue version 2.0...
  • Ah stimmt ich sehe, aber technisch einschränkenden Funktionen verwaltet werden können innerhalb des Moduls selbst. Zum Beispiel, wenn Sie hinzufügen wollte eine Funktion Erinnerungen zu Ihrem Kalender, den Sie einschränken würde, dass die neue Funktion innerhalb das Modul nur Ihre zahlenden Kunden. Dies ist genau das, was wir getan haben, in meinem alten Arbeitsplatz. Das ist, wie die meisten Anwendungen, die ich gearbeitet habe, mit verwalten, Sachen wie diese.
Schreibe einen Kommentar