2009-09-01 3 views
9

Einleitung: Jetzt weiß ich, diese Frage sehr breit sein könnte, und es wäre zu schwer zu beantworten, ohne ich etwas Bestimmtes zu fragen. 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.Wie für ASP.NET eine Plugin-Architektur zu entwerfen, mit MVC Web-Anwendung

Details zu meiner Frage: Meine Absicht ist, würde Ich mag eine Plug-in-Architektur für ein neues Haustier-Projekt erstellen, die ich in ASP.NET MVC bin Gebäude.

Ich möchte es so entwerfen, dass es eine Art Plug-in-Fähigkeit für alle oder zumindest die meisten der Anwendungskomponenten hat.

Der Grund, warum ich dies tun möchte, ist, damit ich Bereitstellungen mit fast Null Ausfallzeit 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.

Zum Beispiel, sagen wir, ich füge eine neue "Kontakte" -Funktion zu meiner Webanwendung, wo Benutzer Kontakte suchen, hinzufügen und löschen können. Ich möchte das über Plugins bereitstellen können.

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

+0

Ich habe über die gleiche Sache nachgedacht, und habe mehrere Ideen. Kontaktieren Sie mich direkt unter spurious.thought [at] gmail –

Antwort

3

Es ist definitiv möglich.

Sie müssen eine ziemlich umfassende Schnittstelle definieren, die alles darstellt, 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 Reflektion aufgelistet, indem nach Assemblys gesucht wird, die die Plugin-Schnittstelle implementieren.

Nur zur Ermutigung haben wir dies mit einem Enterprise-Produkt getan, das ein generisches Framework für "Management" -Schnittstellen für Websites bietet. 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 lediglich um ihre eigene Domänenlogik kümmern.

1

Es gibt immer die DLL-Art, wo Sie einige Schnittstellen definieren, die Plugins folgen.

Aber für Web-Anwendung, 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. Einige Inspiration für eingebetteten Code (oder db) Inhalt: Haacked about that

ASP.NET MVC Version 2 unterstützt Bereiche, in denen Sie einige Teile der Anwendung in verschiedenen Ordnern innerhalb der App platzieren 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

0

PS: Ich fand eine andere Person hier auf S.O. die gleiche Frage stellen wie ich: Plug-in architecture for ASP.NET MVC Es könnte nützlich sein für jemanden, der das gleiche Thema erforscht.

Verwandte Themen