Sé que este hilo es antiguo, pero he trabajado mucho con la API de Domino y los objetos Lotus Notes típicos a través de la API COM de Domino.
El problema con Domino API es que su administración de memoria a través de COM es horrible (si usa la API en C#, VB, etc.) y causará fugas de memoria y eventualmente causará toda la API y el cliente de Notes bloquearse (incluso si no tiene el cliente abierto, no podrá iniciarlo después de que la API falle sin reiniciar su computadora o llamar a "nsd -kill"). Divertido.
He encontrado que al usar la API de Notes C dentro de C# a través de P/Invoke, puede administrar mejor los recursos de memoria para que la API no provoque pérdidas y fallos de memoria horribles. Escribí un contenedor parcial en C#, usando P/Invoke, que accede a Notes C API desde notes.dll. El uso que hago no tiene nada que ver con intentar trabajar en un entorno de Domino, sino con el uso del ensamblado de Notas para tener acceso a archivos NSF y extraer información DXL dentro de un entorno C#. Obviamente, necesitaría tener el cliente de Notes instalado para tener acceso a notes.dll y la API de C. Pero mi envoltorio de C# de la API de Notes C funciona muy bien y es más estable que la API COM de Domino que se proporciona al instalar el cliente de Notes.
Las clases que he implementado en C# (que sólo he necesitado) de la API de Notes C son:
NotesSession (como NotesRuntime) NotesDatabase NotesNote NotesItem NotesDXLExporter NotesNoteCollection
así como algunas otras clases provisionales, enumeraciones y estructuras para manejar la traducción de la API C a C#.
Las clases que he implementado hasta ahora han cumplido los propósitos que necesitaba de la API de Notes C. Definitivamente se pueden ampliar, pero no intenté encapsular toda la API dentro del contenedor C# P/Invoke. También tuve que crear controladores para tratar con objetos incrustados OLE que pueden almacenarse en documentos Notes, y obtener los datos almacenados de esos objetos OLE, utilizando objetos Windows IStorage.
Nota: puedo proporcionar algunas muestras más tarde (tengo que cambiar el nombre de los espacios de nombres y generalizar el código, por razones de propiedad), pero creé las clases contenedoras C# utilizando Lotus Lotus Notes/Domino 8.5.2 Reference "NSF proporcionado por IBM/Lotus (como NSF descargable). Usando las definiciones C y las referencias de clase, pude traducirlas a C# P/invocar llamadas y envolverlas en clases C# más amigables, que luego se comportaban más como llamadas de clases de LotusScript, pero dentro de C# y las clases implementadas administran y eliminan su memoria que todo no se cuelga después de haber accedido a cientos de miles de documentos de un programa C#. :)
¿Alguna idea de si esto se puede utilizar para obtener elementos en un formato "nativo" como .dxl (sin tener que producir el XML nosotros mismos)? –