Datalab Software GmbH
Für Notes/Domino gibt es seit der Einführung von Lotus Script (Release 4, 1996) eine C++ Class Library welche die zugrunde liegende C API in Objekte kapselt.
Im Lotus Script finden sich diese C++ Klassen 1:1 wieder. Die Jahre später hinzugefügte Java Library basiert ebenfalls darauf.
Warum also das Rad neu erfinden?
 Managed Code
Die Motivation für das Projekt bedingt sich überwiegend aus den Vorzügen des Managed Code im DotNet.
Nicht zuletzt spielen Debug Möglichkeiten und konrete Schnittstellen vorhandener Projekte eine Rolle.
Natürlich war die Vorstellung diese Class Library 'mal eben schnell' umzusetzen nicht wirklich realistisch...
Inzwischen umfasst sie einige KLOC, obgleich Bereiche bislang noch nicht implementiert sind...
Domino Server Addin
Das Session Handling unterstützt reine Windows Anwendungen, wie auch das Domino Server Environment als sog. Server Addin Program.
Vorrausgesetzt man hat alle nötigen Informationen im Speicher, kann man nun mit einem Domino Server zeitkritische Aufgaben erfüllen.
Diese Vorraussetzung rührt von der in weiten Teilen nicht gegeben reentrance Fähigkeit der C-API seit diese von 16 auf 32 Bit 'aufgelasen' wurde.
Die Buffer der Core API sind oft noch auf 64kb beschränkt (16 Bit).
Damit sich nun größere Chunks transferrieren lassen, gibt ein sog. 'more to do' Flag.
D.h. man ruft die Funktion so oft auf, bis das Flag nicht mehr gesetzt ist -> damit ist die API nicht mehr zustandslos (re-entrant)...
Sprich, die geneigte Anwednung muss alle Anfragen seiner Threads an die API via Queues sequentialisieren.
Im Domino Server Addin gibt es schliesslich eine 'Main Loop' welche im Sekundentakt vom Domino Server aufgerufen wird.
diverse Unzulänglichkeiten der C++ Library...
Nicht zuletzt haben mich diverse Unzulänglichkeiten im Lotus Script bzw. Java schon lange geärgert.
Mit etwas Re-Engeniering der Strukturen der Notesdatenbank und den darin enthaltenen Notes (Dokumente) konnten diese lästigen 'Krücken' schliesslich zuverlässig und elegant gelöst werden.
Code Base
Wie auch (bzw. besonders) bei Java lockt im DotNet Umfeld eine grosse Basis vorhandener Libraries in nahezu jedem Bereich...