W Node.js udało mi się stworzyć klan WordPressa z łatwością za pomocą EventEmitter'a, aby zreplikować i zbudować system hooks w rdzeniu CMS, do którego wtyczki mogłyby następnie dołączyć.Wydarzenia Golang: EventEmitter/dispatcher dla architektury wtyczek
Potrzebuję teraz tego samego poziomu rozszerzalności i izolacji rdzenia dla mojego CMS napisanego i przeniesionego do Go. Zasadniczo mam już gotowy rdzeń, ale aby uczynić go naprawdę elastycznym, muszę być w stanie wstawiać zdarzenia (haki) i mieć wtyczki dołączone do tych haków z dodatkową funkcjonalnością.
Nie dbam o rekompilację (łączenie dynamiczne/statyczne), o ile nie trzeba modyfikować jądra, aby załadować wtyczki - rdzeń CMS nigdy nie powinien być modyfikowany. (Jak WP, Drupal itp)
zauważyłem jest kilka raczej nieznanych projektów, starając się realizować wydarzenia w szukać nieco podobny do EventEmitter w node.js:
https://github.com/CHH/eventemitter
https://github.com/chuckpreslar/emission
Ponieważ te dwa projekty powyżej nie zyskały dużej popularności i uwagi, jakoś czuję, że ten sposób myślenia o wydarzeniach może być teraz taki, jak powinniśmy to robić w Go? Czy to znaczy, że Go może nie jest przystosowany do tego zadania? Aby tworzyć naprawdę rozszerzalne aplikacje za pomocą wtyczek?
Wygląda na to, że Go nie ma wbudowanych w jądro wydarzeń, a RPC nie wydaje się być prawidłowym rozwiązaniem do integracji wtyczek z główną aplikacją, ponieważ zostały one wbudowane natywnie i tak jakby były częścią głównej sama aplikacja.
Jaki jest najlepszy sposób na bezproblemową integrację wtyczki z podstawową aplikacją, na nieograniczone punkty rozszerzeń (w rdzeniu) bez manipulowania rdzeniem za każdym razem, gdy trzeba podłączyć nową wtyczkę?
Zobacz pakiety database/sql i database/sql/driver na przykładzie architektury wtyczki. W tej architekturze wtyczki [register] (http://godoc.org/database/sql#Register) z funkcji init() i implementują interfejsy zdefiniowane przez pakiet sterowników. –