Saltar al contenido principal
Este tema se aplica a FRE para Windows.
El uso de ABBYY FineReader Engine en aplicaciones de servidor tiene ciertas particularidades:
  • varias solicitudes independientes deben procesarse simultáneamente en varios hilos dentro de un mismo proceso
  • el motor se ejecuta en un sistema operativo de servidor en un equipo multiprocesador de alto rendimiento
  • uso con cuentas especiales (Network Service, Local Service, ASPNET)
Al desarrollar ABBYY FineReader Engine 12, se tuvieron en cuenta las particularidades anteriores y se incluyeron herramientas en la API que le permiten obtener objetos de FineReader Engine seguros para entornos multihilo, ya sea como parte de un proceso de servidor o en procesos independientes. El uso de FineReader Engine en varios procesos le permite crear un pool de objetos que funcionan simultáneamente y aprovechar toda la potencia de CPU del servidor. Este es el enfoque óptimo en la mayoría de los escenarios de servidor.

Carga del objeto Engine en una aplicación de servidor

La forma óptima de cargar Engine en una aplicación de servidor es hacerlo mediante COM en un proceso independiente como servidor fuera del proceso. Este método elimina automáticamente todas las dificultades relacionadas con el multihilo: todas las operaciones con los objetos de ABBYY FineReader Engine se serializan mediante COM, lo que le permite crear varias instancias de Engine en varios procesos y trabajar con ellas simultáneamente desde el proceso del servidor. Además, este método es fácil de usar. El objeto Engine se carga mediante el objeto OutprocLoader, que implementa la interfaz IEngineLoader.
IEngineLoader engineLoader = new FREngine.OutprocLoader();
IEngine engine = engineLoader.InitializeEngine( customerProjectId, licensePath, licensePassword, "", "", false );
// Hemos obtenido Engine en un proceso independiente
try {
 ...
} finally {
 engineLoader.ExplicitlyUnload(); // Podemos descargarlo cuando deje de ser necesario
}
Sin embargo, este método tiene un inconveniente importante. Al usarlo con cuentas especiales, es posible que se requieran permisos para ejecutar OutprocLoader con dichas cuentas. No obstante, esto, así como la necesidad de registrar FREngine.dll, no es especialmente crítico en productos de servidor, ya que las aplicaciones de servidor suelen ser instaladas por administradores experimentados en un número reducido de equipos.
  • Los permisos de la cuenta pueden configurarse con la utilidad DCOM Config (escriba DCOMCNFG en la línea de comandos o seleccione Panel de control > Herramientas administrativas > Servicios de componentes). En el árbol de la consola, busque la carpeta Servicios de componentes > Equipos > Mi PC > Configuración DCOM, haga clic con el botón derecho en ABBYY FineReader Engine 12.5 Loader (Servidor local) y seleccione Propiedades. Se abrirá un cuadro de diálogo. Haga clic en la pestaña Seguridad. En Permisos de inicio, haga clic en Personalizar y luego en Editar para especificar las cuentas que pueden iniciar la aplicación.
Tenga en cuenta que, en un sistema operativo de 64 bits, la aplicación DCOM registrada está disponible en la consola MMC de 32 bits, que puede ejecutarse mediante la siguiente línea de comandos:
"mmc comexp.msc /32"
  • Para registrar FREngine.dll al instalar su aplicación en el equipo del usuario final, use la utilidad regsvr32. Si está en un sistema operativo de 64 bits, la versión de 64 bits de regsvr32 se ejecutará de forma predeterminada. Use la siguiente línea de comandos:
regsvr32 /s /n /i:"<path to the Inc folder>" "<path to FREngine.dll>"
  • Recomendamos usar una licencia de red tanto para depurar la aplicación de servidor como para ejecutarla.
Además, puede administrar la prioridad de un proceso anfitrión y controlar si sigue activo mediante la interfaz IHostProcessControl. También hay otros métodos disponibles para cargar ABBYY FineReader Engine. Sin embargo, presentan ciertas características que limitan considerablemente su uso en aplicaciones de servidor.
  • ABBYY FineReader Engine puede cargarse mediante COM como un servidor en proceso dentro del proceso actual. Este método también elimina automáticamente todas las dificultades relacionadas con el multihilo (todas las operaciones con los objetos de ABBYY FineReader Engine se serializan mediante COM) y es fácil de usar. Sin embargo, no permite organizar el procesamiento simultáneo con varias instancias del objeto Engine, lo que limita en gran medida el rendimiento del servidor. Otro inconveniente de este método es que requiere registrar FREngine.dll al instalar la aplicación en el equipo del usuario final.
  • FREngine.dll puede cargarse manualmente. Este es el método estándar para cargar la biblioteca. Este método requiere que todas las operaciones con el objeto Engine se realicen en el mismo hilo en el que se inicializó el objeto Engine. Además, no permite inicializar más de un objeto Engine por proceso. Esto limita considerablemente el rendimiento del servidor. Por este motivo, no recomendamos usar este método. Una ventaja de este método es que no requiere registrar FREngine.dll al instalar la aplicación en el equipo del usuario final.
Para obtener descripciones detalladas de los tres métodos de carga disponibles en ABBYY FineReader Engine, consulte Diferentes formas de cargar el objeto Engine.

Ejemplos

El ejemplo de código EnginesPool ofrece una implementación de un pool de procesadores en una aplicación multihilo, y puede empezar a desarrollar su propia aplicación modificando este ejemplo para adaptarlo a sus necesidades.

Consulte también

Diferentes formas de cargar el objeto Engine