加载 Engine 对象的不同方式
有三种在 ABBYY FineReader Engine 12 中加载 Engine 对象的方式。每种加载方法有自己的特点,影响对象在不同情形下的使用。前两种方法适用于不同时处理多个请求的交互式应用程序中。第三种方法最适用于服务器解决方案。
手动加载 FREngine.dll 和处理"裸"接口
这是加载 Engine 对象的标准方法。要获取 Engine 对象参考,可调用 InitializeEngine 功能。
优势 | 限制 |
---|---|
|
|
C# 代码
通过 COM 将 Engine 对象加载到当前进程中
作为进程内服务器,Engine 被载入运行应用程序的同一进程中。Engine 对象使用 InprocLoader 对象进行加载,后者实现了 IEngineLoader 接口。
优势 | 限制 |
---|---|
|
|
C# 代码
注:要在终端用户计算机上安装应用程序时注册 FREngine.dll,请使用以下命令行:regsvr32 /s /n /i:"<Inc 文件夹路径 >" "<FREngine.dll 的路径>"
通过 COM 将 Engine 对象加载入单独进程中
Engine 将作为一个进程外服务器载入单独进程中。Engine 对象通过 OutprocLoader 对象加载,后者实现了IEngineLoader 接口。
优势 | 限制 |
---|---|
|
|
C# 代码
这种 Engine 对象的加载方式大多在 EnginesPool 代码示例中使用,该方式为多线程应用程序提供了一个可重复使用的解决方案。
注:
-
账户权限可以通过 DCOM Config 实用工具进行设置(在命令行中键入DCOMCNFG,或者选择 控制面板 > 管理工具 > 组件服务)。在控制台树中,找到 组件服务 > 计算机 > 我的计算机 > DCOM Config文件夹,右键单击 ABBYY FineReader Engine 12.2 Loader (Local Server),然后单击 属性。屏幕上将打开一个对话框。单击 安全 选项。在 启动权限 下,单击 自定义,然后单击 编辑,指定可以启动应用程序的账户。
注意,在 64 位操作系统上,注册的 DCOM 应用程序可在32位 MMC 控制台中使用,该控制台可使用以下命令行运行:
"mmc comexp.msc /32"
-
要在终端用户计算机上安装应用程序时注册 FREngine.dll,请使用以下命令行:
regsvr32 /s /n /i:"<Inc 文件夹路径 >" "<FREngine.dll 的路径>"
-
我们建议您使用网络许可证来调试和运行服务器应用程序。
此外,您可以使用 IHostProcessControl 接口来管理主机进程的优先级并控制它是否处于活动状态。
对照表
下表总结了三种加载方法的特点:
特点 | 裸接口 | 进程中服务器 | 进程外服务器 |
---|---|---|---|
不使用代理(无封送处理系统开销) | 是 | 有限制 | 否 |
在多线程应用程序中工作 | 有限制 | 是 | 是 |
可平行运行进程(适合服务器解决方案) | 否 | 否 | 是 |
不需要注册 FREngine.dll | 是 | 否 | 否 |
非必须设置运行权限 | 是 | 是 | 否 |
对象可以使用 新 运算符进行创建。从脚本工作。 | 否 | 是 | 是 |
可以将页面图像作为 HBITMAP 进行访问 | 是 | 是 | 否 |
在单独进程中工作(防止出故障、回收) | 否 | 否 | 是 |
可以同可视化组件一同使用 | 是 | 是 | 否 |
在64位进程中运行
如果要在64位进程中(例如,64位服务器上的 ASP.NET)使用 ABBYY FineReader Engine,您可以手动加载 FREngine.dll 并使用"裸"接口。
另请参阅
17.09.2024 15:14:41