Ich bin ziemlich anständig mit MVC3 und genieße es, meine Seiten damit zu erstellen, aber ich muss mich noch überlegen und eine vernünftige Methode eines "Plugin" -Systems implementieren.
Grundsätzlich möchte ich ein generisches "blog-type" CMS haben, das ich auf meinen Seiten verteilen kann, aber mit der Option bestimmte Dinge als Plugins zu haben.
Zum Beispiel:
Generischer Build:
Plugins: (Kann für eine oder zwei Seiten benötigt werden, aber nicht für alle)
Momentan würde ich alles machen und Dinge über eine Konfigurationsdatei deaktivieren, aber es wäre schön, wenn ich einfach einen Ordner in meinen FTP-Ordner lege und eine MVC-Seite habe, die ihn automatisch aufnimmt!
Ich nehme an, ich müsste mit dem Durchsuchen des Verzeichnisses "/ plugins" beginnen und eine Datei "plugin.config" (oder eine ähnliche Datei) aufnehmen, die die grundlegenden Details enthalten würde.
Aber wie sollte ich mein Hauptsystem dazu bringen, diese Dinge aufzugreifen und sie tatsächlich zu benutzen?!
Lesen Sie dieses großartige Tutorial: Tutorial zur ASP.NET MVC2-Plugin-Architektur
Es hilft mir, eine Plugin-Architektur mit MVC3 zu erstellen.
Bereiche lösen das Problem für Sie, vorausgesetzt, Sie haben alles im ursprünglichen Projekt / der ursprünglichen Baugruppe. Sie könnten Ihr Plugin-System schreiben, damit die Plugins ihre eigenen Bereiche registrieren können, oder Sie könnten auch neue Suchpfade in einer benutzerdefinierten Razor-View-Engine registrieren.
Ich entschied mich für Letzteres für ein aktuelles OS-Projekt namens Spruce , das eine ganze Plugin-Architektur verwendet, die Sie als nützlich finden könnten Referenz.
Sie können beim Start alle Assemblys im bin-Verzeichnis scannen, um anhand von Reflektionen nach Plugins zu suchen. Normalerweise suchen Sie nach Typen, die eine Schnittstelle implementieren oder von einer Klasse erben, und verwenden diese zusammen mit einem IoC-Container wie TinyIoc, NInject, StructureMap oder Unity. Ich würde TinyIoC empfehlen, das von NancyFX verwendet wird.
Tags und Links asp.net-mvc asp.net-mvc-3 c# razor asp.net