Um State halten zu können, sollte das Ganze schon bbject-Orient, und nicht nur plattgedrückte C-kompatible exportierte Funktionen, sein (Sonst gibt es das Problem, was Hoika ansprache, dass zu oft Verbidnungen geöffnet/geschlossen werden).
Aber wie ich in letzter Zeit immer und immer wieder geschrieben habe, lässt sich das mit Interfaces ganz gut lösen, gänzlich ohne
COM.
Gerade bei Datenbankschnittstellen könnte man so Teile der Logik zum Beispiel in .Net schreiben und dadurch auch Zugriff auf die unzähligen kostenlosen DataProvider bekommen.
Du überlegst dir also was du tatsächlich auslagern musst, und das verpackst du dann in ein paar Interfaces.
Die PlugIns registrieren dann solche "Datenzugriffsstrategien", wodurch deine App plötzlich ihre Daten aus verschiedenste Quellen aggregieren könnte.