Was sind die besten Praktiken, um eine Website zu erstellen, mit der Fähigkeit, Plugins dafür zu entwickeln?
Sie möchten ein Blog-Modul erstellen und möchten, dass Benutzer oder Mitentwickler Plugins hinzufügen, um diese Modulfunktionalität zu erweitern.
Aktualisierung: Danke für die Ultra-Speed-Antworten, aber ich denke, das ist für mich zu töten. Gibt es keine einfachere Lösung, wie ich Blugengine Plugin Creation System gesehen habe, musst du das Klassen-Plugin einfach mit [Extension] dekorieren.
Ich bin eine Art Mid-Core-Entwickler, also habe ich über Basisklasse, Vererbung, Schnittstellen nachgedacht, was denkst du?
Bearbeiten
Ich habe meine Antwort komplett neu geschrieben, basierend auf Ihrer Fragebearbeitung.
Lassen Sie mich Ihnen zeigen, wie einfach es ist, eine Plugin-Architektur mit nur minimalen Schritten zu implementieren.
Schritt 1: Definieren Sie eine Schnittstelle, die Ihre Plugins implementieren werden.
%Vor%Schritt 2: Erstellen Sie ein Plugin, das IPlugin implementiert.
%Vor%Schritt 3: Führen Sie das Plugin aus.
%Vor%Denken Sie daran, dies ist nur das einfachste und einfachste Beispiel für eine Plugin-Architektur. Sie können auch Dinge wie
tunAppDomain
auszuführen
wenn Ihr Design dies vorschreibt.
Es ist wertvoll, technische und architektonische Perspektiven zu trennen:
Und es ist gut, dieses Problem auf architektonischer Ebene zu sehen:
Ich denke, es ist schnell und effizient, wenn Sie einige dieser Frameworks lesen und ausprobieren. Und ofcoz lesen Sie die Quelle, wenn Sie etwas Interessantes finden.
Bearbeiten
Wenn Sie nach einer erweiterbaren Blog-Engine suchen, probieren Sie Blog-Engine aus zuerst. Es stammt aus der ASP.NET-Community.
Dies klingt wie ein Job für das Managed Extensibility Framework von Microsoft. Es ist momentan in einer Preview-Version, aber es scheint eine bessere Wette zu sein, als einen eigenen Rahmen dafür zu erstellen. Es gibt Links zu Anleitungen, wie Sie diese auf der Website dort verwenden können.
Wenn Sie eine echte Open-Source-Anwendung sehen möchten, die diese Architektur unterstützt, werfen Sie einen Blick auf DotNetNuke .