Entwickeln einer Plugin-Architektur für ASP.NET mit MVC-Webanwendung

9

Einführung: Jetzt weiß ich, dass diese Frage sehr weit gefasst sein könnte, und es wäre zu schwer, sie zu beantworten, ohne dass ich etwas Bestimmtes gefragt hätte. Alles, was ich frage, ist nur eine Richtung oder eine kurze Erklärung eines Designs auf hoher Ebene, oder vielleicht gibt es bereits einen Rahmen, der mir helfen könnte, anzufangen ... Ich bin mir nicht sicher .. Ich habe noch nie ein Plugin entworfen Architektur, also vielleicht gibt es einige Ressourcen / Beispiele, auf die Sie mich im Web hinweisen könnten, die mir helfen würden, zu lernen, damit ich meine eigene Lösung finden kann.

Details meiner Frage: Meine Absicht ist, ich möchte eine Plug-in-Architektur für ein neues Haustier-Projekt erstellen, das ich in ASP.NET MVC erstellen.

Ich würde es gerne so gestalten, dass es eine Art Plug-in-Fähigkeit für alle oder zumindest die meisten der Anwendungskomponenten bietet.

Der Grund, warum ich das tun möchte, ist, dass ich Bereitstellungen mit einer Ausfallzeit von nahezu null durchführen kann. Die Idee ist, dass, wenn ich die neueste Version bereitstellen möchte, ich die neuen DLLs in einen bestimmten Ordner einfügen würde, und die Anwendung würde die neuen Plug-Ins laden, und das ist es.

Beispielsweise können wir meiner Webanwendung eine neue Funktion "Kontakte" hinzufügen, über die Benutzer Kontakte suchen, hinzufügen und löschen können. Ich möchte das über Plugins bereitstellen können.

Ist so etwas für Web-Anwendungen überhaupt möglich? Oder träume ich nur?

    
7wp 01.09.2009, 23:14
quelle

3 Antworten

3

Es ist definitiv möglich.

Sie müssen eine ziemlich umfassende Schnittstelle definieren, die alles repräsentiert, was Ihre Plugins tun müssen. Sie sollten es angehen, indem Sie unterscheiden, was "Kern" für Ihre Anwendung ist und wo die Erweiterungspunkte sind. Wo wird zum Beispiel auf die Plugins zugegriffen? Sind Tabs auf einer Seite oder Links in einer Seitenleiste? Welche Eigenschaften muss jedes Plugin haben, um in den Plugin-Container zu passen?

Im Allgemeinen werden Plugins durch Reflexion aufgelistet, indem nach Assemblys gesucht wird, die die Plugin-Schnittstelle implementieren.

Nur zur Ermutigung haben wir dies mit einem Unternehmensprodukt getan, das ein generisches Framework für "Management" -Schnittstellen für Websites bereitstellt. Entwickler müssen nur eine Plugin-DLL einfügen, die bestimmte Eigenschaftenseiten erstellt, und sie werden im Menü der Verwaltungsoberfläche angezeigt, die gesamte Navigation ist erledigt, und ihre DLLs müssen sich nur um ihre eigene Domänenlogik kümmern.

    
womp 01.09.2009, 23:38
quelle
1

Es gibt immer den DLL-Weg, wo Sie einige Schnittstellen definieren, denen Plugins folgen.

Aber für Web-Anwendungen, insbesondere ASP.NET MVC, benötigen Sie einen Controller, Ansichten und so. Wahrscheinlich können diese in einer DLL-Datei enthalten sein, die eine vorbereitete Controller-Fabrik verwendet, um das zu handhaben, aber es wäre schwierig, diese Plugins zu entwickeln. Etwas Inspiration für Code (oder db) eingebetteten Inhalt: Haacked darüber

ASP.NET MVC Version 2 unterstützt Bereiche, in denen Sie Teile der Anwendung in verschiedene Ordner innerhalb der App einfügen können. Auf diese Weise können Sie einfach einige Dateien hochladen und die App erkennt diese neuen Dateien. Lesen Sie mehr dort Haacked Blog

    
twk 01.09.2009 23:39
quelle
0

PS: Ich habe eine andere Person hier auf S.O. dieselbe Frage stellen wie ich: Plug-in-Architektur für ASP.NET MVC Es könnte nützlich sein für jemand, der dasselbe Thema erforscht.

    
7wp 04.09.2009 00:31
quelle