Different Ways to Load the Engine Object
There are three ways to load the Engine object in ABBYY FlexiCapture 12 SDK. Each of the loading methods has its own specifics affecting the use of the object in different circumstances. The first two methods are most suitable for use in interactive applications which are not intended for simultaneous processing of multiple requests. The third method is most suitable for server solutions.
Loading FCEngine.dll manually and working with “naked” interfaces
This is the standard method to load the Engine object that was also used in old versions of ABBYY FlexiCapture Engine. To get a reference to the Engine object, you should do the following:
- call the GetEngineLoader exported function to create the EngineLoader object
- set up all the necessary parameters using the EngineLoader object properties
- call the GetEngine method of the EngineLoader object and receive the reference to the Engine object.
This object loading method is described in detail in the Tutorial, Step 1: Load FlexiCapture SDK.
Advantages | Limitations |
---|---|
|
|
Loading the Engine object by means of COM into the current process
The Engine is loaded as an in-process server into the same process where the application is running. The Engine object is loaded using the InprocLoader object, which implements the IEngineLoader interface.
Please note that you must keep the reference to the loader object until you finish working with the Engine. You can then call the Unload method of the loader object to deinitialize the Engine, and then destroy the loader object.
Advantages | Limitations |
---|---|
|
|
C# code
Note:
To register FCEngine.dll when installing your application on an end-user computer, use the following command line:
regsvr32 /s /n /i:"<path to the Inc folder>" "<path to FCEngine.dll>"
Loading the Engine object by means of COM into a separate process
The Engine is loaded as an out-of-process server into a separate process. The Engine object is loaded by means of the OutprocLoader object, which implements a IEngineLoader interface.
Please note that you must keep the reference to the loader object until you finish working with the Engine. You can then call the Unload method of the loader object to deinitialize the Engine, and then destroy the loader object.
Advantages | Limitations |
---|---|
|
|
C# code
Notes:
-
Account permissions can be set up using the DCOM Config utility (either type DCOMCNFG in the command line, or select Control Panel > Administrative Tools > Component Services). In the console tree, locate the Component Services > Computers > My Computer > DCOM Config folder, right-click ABBYY FlexiCapture 12 SDK Loader (Local Server), and click Properties. A dialog box will open. Click the Security tab. Under Launch Permissions, click Customize, and then click Edit to specify the accounts that can launch the application.
Note that on a 64-bit operating system the registered DCOM-application is available in the 32-bit MMC console, which can be run using the following command line:
"mmc comexp.msc /32"
- To register FCEngine.dll when installing your application on an end-user computer, use the following command line:
regsvr32 /s /n /i:"<path to the Inc folder>" "<path to FCEngine.dll>"
-
We recommend that you use a Network license both for debugging your server application and for running it.
Additionally you can manage the priority of work processes and control whether their parent process is alive and terminate if it is not. Use the IWorkProcessControl interface.
Comparison table
The table below sums up the characteristics of the three loading methods:
Characteristics | Naked interfaces | In-process server | Out-of-process server |
---|---|---|---|
Works without proxy (no marshalling losses) | Yes | There are limitations | No |
Works in multi-threaded applications | There are limitations | Yes | Yes |
Parallel running processes are possible (for server solutions) | No | No | Yes |
No registration of FCEngine.dll required | Yes | No | No |
No running permissions must be set up | Yes | Yes | No |
Objects can be created using the new operator. Works from scripts. | No | Yes | Yes |
Ability to access a page image as HBITMAP | Yes | Yes | No |
Works in a separate process (fail-proof, recycling) | No | No | Yes |
Using from a 64-bit process
If you are going to use ABBYY FlexiCapture SDK from a 64-bit process (e.g. ASP.NET on 64-bit servers), we recommend that you use the way of loading FlexiCapture SDK into a work process.
See also
Using ABBYY FlexiCapture SDK in Multi-Threaded Server Applications
8/15/2023 1:19:30 PM