Golang events: EventEmitter / Dispatcher für Plugin-Architektur

In Node.js konnte ich mit dem EventEmitter ziemlich einfach einen WordPress-Klon erstellen, um ein Hooks-System in den CMS-Kern zu replizieren und zu erstellen, an das sich dann Plugins anhängen ließen.

Ich benötige jetzt das gleiche Maß an Erweiterbarkeit und Core-Isolation für mein CMS, das in Go geschrieben und portiert wurde. Grundsätzlich habe ich den Kern jetzt fertiggestellt, aber um ihn wirklich flexibel zu machen, muss ich in der Lage sein, Ereignisse (Hooks) einzufügen und Plugins mit zusätzlichen Funktionen an diese Hooks anhängen zu lassen.

Ich kümmere mich nicht um das Neukompilieren (dynamische / statische Verknüpfung), solange Sie den Core nicht ändern müssen, um Plugins zu laden - der CMS-Core sollte niemals geändert werden. (wie WP, Drupal etc.)

Mir ist aufgefallen, dass es einige eher unbekannte Projekte gibt, die versuchen, Ereignisse in Go zu implementieren, die EventEmitter in Node.js ähneln:

https: //github.com/CHH/eventemitte

https: //github.com/chuckpreslar/emissio

Da diese beiden oben genannten Projekte nicht sonderlich an Popularität und Aufmerksamkeit gewonnen haben, denke ich, dass diese Art des Denkens über Ereignisse jetzt so sein könnte, wie wir es in Go machen sollten? Bedeutet dies, dass Go möglicherweise nicht auf diese Aufgabe ausgerichtet ist? Um wirklich erweiterbare Anwendungen über Plugins zu erstellen?

Sieht nicht so aus, als ob Go Ereignisse in seinen Kern integriert hat, und RPC scheint keine gültige Lösung für die Integration von Plugins in Ihre Kernanwendung zu sein, als wären sie von Haus aus integriert und als wären sie Teil der Hauptanwendung.

Was ist der beste Weg für die nahtlose Integration von Plugins in Ihre Kern-App, für unbegrenzte Erweiterungspunkte (im Kern), ohne den Kern jedes Mal zu manipulieren, wenn Sie ein neues Plugin anschließen müssen?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage