Der Entwickler der den Fehler programmiert hat, ist nicht mehr bei uns angestellt.
Solange ich hier arbeite kann ich schon sicherstellen, dass die Software gewisse Tests besteht. Allerdings kann man nicht immer alle Fälle Testen und vorallem möchte ich sicherstellen, das auch wenn ein Plugin von einem externen Entwickler kommt, dieses nicht das ganze System beeinträchtigen kann. Ausserdem kann man, wenn das Plugin in einem eigenen Prozess abläuft den Prozess abschiessen und neu starten, falls es sich nach einem bestimmten Timeout nicht meldet. Mach das mal mit einem Thread der gerade in einer
DLL steckt. (Es sei gesagt: Das ist nicht zu empfehlen)
Ich kann die Software immer noch so erweitern, dass es auch Plugin-Dlls gibt, falls ich für gewisse Aufgaben mehr Performance benötige und eine enge Kopplung bevorzuge. Das habe ich auch schon gemacht und ich weiss wie man das realisieren kann.
Die Schwierigkeit liegt eben darin, dass ich gewisse Aufgaben in andere Prozesse auslagern möchte ohne das Gesamtsystem zu gefährden (Stichwort lose Kopplung). Ursprünglich wollte ich die ganze Kommunikation mit
TCP/
IP realisieren, aber dort ist der Aufwand gross, weil man
a) alle Funktionsaufrufe serialisieren und deserialisieren muss.
b) wehr viele Verbindungen benötigt. Mindistens eine pro Plugin.
c) wenn das ganze auch noch Multi-Threaded ist noch mehr Verbindungen benötigt oder eine sehr ausgeklügelte duplexfähige Kommunikation benötigt (mit Empfänger-Thread, Sender-Thread und entsprecheden Queues - und das jeweils pro Verbindungsendpunkt)
COM scheint mir im Moment die beste Lösung zu sein.