In Node.js konnte ich mit dem EventEmitter einen WordPress-Klon relativ einfach replizieren und ein Hooks-System in den CMS-Kern einbauen, an den sich dann Plugins anhängen konnten.Goleg-Ereignisse: EventEmitter/Dispatcher für Plugin-Architektur
Ich brauche jetzt die gleiche Erweiterbarkeit und Core-Isolation für mein CMS geschrieben und portiert nach Go. Im Grunde habe ich den Kern jetzt fertig, aber um es wirklich flexibel zu machen, muss ich in der Lage sein, Ereignisse (Hooks) einzufügen und Plugins mit zusätzlichen Funktionen an diese Hooks anzuhängen.
I kümmern sich nicht um (dynamisch/statische Linken) neu zu kompilieren, solange man den Kern laden Plugins nicht ändern müssen - das CMS Kern sollte nie geändert werden. (Wie WP, Drupal etc.)
Ich habe bemerkt, es gibt ein paar eher unbekannte Projekte, versuchen Ereignisse in Go zu implementieren suchen etwas ähnlich EventEmitter in Node.js:
https://github.com/CHH/eventemitter
https://github.com/chuckpreslar/emission
Da diese 2 Projekte oben nicht viel Popularität und Aufmerksamkeit gewonnen haben, denke ich, dass diese Art des Nachdenkens über Ereignisse nun so sein könnte, wie wir es in Go machen sollten? Heißt das Go ist vielleicht nicht auf diese Aufgabe ausgerichtet? Um wirklich erweiterbare Anwendungen durch Plugins zu machen?
Scheint nicht, dass Go Ereignisse in seinen Kern eingebaut hat, und RPC scheint keine gültige Lösung für die Integration von Plugins in Ihre Kernanwendung zu sein, als wären sie nativ integriert und als wären sie Teil des Hauptprogramms Anwendung selbst.
Was ist der beste Weg für die nahtlose Plugin Integration in Ihr Kern-App, für unbegrenzte Erweiterungspunkte (in Kern) ohne Kern Manipulation jedes Mal, müssen Sie ein neues Plugin anschließen?
Ein Beispiel für eine Plugin-Architektur finden Sie in den Paketen database/sql und database/sql/driver. In dieser Architektur funktioniert plugins [register] (http://godoc.org/database/sql#Register) von init() und implementiert Schnittstellen wie vom Treiberpaket definiert. –