Chinese Simplified (简体中文)

进程外服务器实施

这种加载方法可让您将 ABBYY FineReader Engine 作为进程外服务器载入到单独进程中。如果使用该加载方法,那么所有的 ABBYY FineReader Engine 对象都会是线程安全的。每个 FineReader Engine 实例会与其它实例同时在单独进程中运行。您可以创建一个处理器池,并充分利用可用的 CPU 算力。因此,这种方法  对于服务器应用程序特别合适。

若要将 Engine 作为进程外服务器载入到单独进程中,请使用分发中提供的文件:

  • OutprocEngineLoader.h 文件声明了 Engine 对象的初始化和取消初始化方法(对于 C++来说,则使用该标头文件中声明的 InitializeEngine ExplicitlyUnload 函数)。
  • FREgnineOutproc.h 文件包含在 OutprocEngineLoader.h 中。它是对适用于多线程解决方案的 FREngine.h 文件的模拟,支持同样的方法和接口,参考计数方法和带有 SAFEARRAY 参数的方法除外。
  • FREngineOutproc.h 中声明的方法不处理引用循环。因此,SafePtr 的具体实施是在OutprocSafePtr.h 文件中展示,您可以在某类代码示例中找到此文件,此类代码示例的标志为将加载描述为进程外服务器。您可以添加该标头的文件或自行新建。
  • 每次加载Engine到单独进程均需要一个 TCP 端口。配置文件 OutprocConfig.ini 包含进程间通信可用端口的间隔。
  • 如果您的应用程序可处理 С++,则在项目中还要链接 libOutprocClientLib.so 库。
  • 如果处理 Java 包装,则需通过 com.abbyy.Outproc.FREngine.jar 而不是 com.abbyy.FREngine.jar。文件包括在 ABBYY FineReader Engine 分发包中

请参见 Hello (Outproc)Multithreading 代码示例,它们展示了将 Engine 作为进程外服务器进行加载的方法,并为 C++ 和 Java 的多线程应用程序提供了可重复使用的解决方案。

作为进程外服务器加载的 Engine 对象在使用 ABBYY FineReader Engine 对象和方法时具有以下特性:

  • 您必须通过将 MultiProcessingParams 对象的 MultiProcessingMode 属性设为 MPM_Sequential 来指定文档处理的序列模式。
  • 对于源自 IUnknown 的参数,必须传递 NULL。这些参数普遍用于导出方法中。若要 用另一种方式传递导出参数,则用所需设置创建 用户配置文件
  • 作为进程外服务器加载的 Engine对象不支持处理:
    • 回调以及带有回调派生参数的方法
    • 用于从内存打开图像的接口和方法

另可参见处理布局和块中描述的方法来加速文档布局的循环访问。

12.12.2022 20:26:04

Usage of Cookies. In order to optimize the website functionality and improve your online experience ABBYY uses cookies. You agree to the usage of cookies when you continue using this site. Further details can be found in our Privacy Notice.