Plugin-System mit MVC3, Razor und C #

8

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:

  • Benutzerbereich
  • Basic blog / Nachrichtenbearbeitung

Plugins: (Kann für eine oder zwei Seiten benötigt werden, aber nicht für alle)

  • Chatroom-Plugin
  • Statistiken
  • und so weiter ...

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?! ​​

    
JustAnotherDeveloper 24.11.2011, 10:22
quelle

4 Antworten

2

Sie können dies möglicherweise mithilfe von MVC-Bereichen tun, hier sind einige Links zu ihnen:

Korich 29.03.2012, 02:23
quelle
2

Probieren Sie den Assembly-Scan mit der Injektion von StructureMap-Abhängigkeiten aus.

    
Clive 21.04.2012 23:11
quelle
1

Lesen Sie dieses großartige Tutorial: Tutorial zur ASP.NET MVC2-Plugin-Architektur

Es hilft mir, eine Plugin-Architektur mit MVC3 zu erstellen.

    
artisonus 18.05.2012 12:03
quelle
1

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.

    
Chris S 18.05.2012 12:21
quelle