> ## Documentation Index
> Fetch the complete documentation index at: https://docs.abbyy.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Implementierung eines Out-of-Process-Servers

> Laden Sie ABBYY FineReader Engine unter Linux als Out-of-Process-Server für threadsichere Serveranwendungen mit OutprocEngineLoader.h, FREngineOutproc.h und OutprocSafePtr.h.

<Note>
  Dieses Thema gilt für FRE unter Linux.
</Note>

Mit dieser Lademethode können Sie ABBYY FineReader Engine als Out-of-Process-Server in einen separaten Prozess laden. Wenn diese Lademethode verwendet wird, sind alle ABBYY FineReader Engine-Objekte vollständig threadsicher. Jede FineReader Engine-Instanz läuft gleichzeitig mit den anderen Instanzen in einem separaten Prozess. So können Sie einen Pool von Prozessoren erstellen und die verfügbare CPU-Leistung optimal nutzen. Daher eignet sich diese Methode besonders für Serveranwendungen.

Verwenden Sie zum Laden von Engine als Out-of-Process-Server in einen separaten Prozess die in der Distribution enthaltenen Dateien:

* Die Datei OutprocEngineLoader.h deklariert die Initialisierungs- und Deinitialisierungsmethoden des Engine-Objekts (für C++ verwenden Sie die in dieser Header-Datei deklarierten Funktionen [InitializeEngine](/de/fine-reader/engine/api-reference/functions/initializeengine-function) und ExplicitlyUnload).
* Die Datei FREgnineOutproc.h ist in OutprocEngineLoader.h eingebunden. Sie ist das Gegenstück zur Datei FREngine.h für Multithreading-Lösungen und unterstützt dieselben Methoden und Schnittstellen, mit Ausnahme der Methoden zur Referenzzählung und der Methoden mit SAFEARRAY-Parametern.
* Die in FREngineOutproc.h deklarierten Methoden behandeln keine Referenzzyklen. Deshalb ist in der Datei OutprocSafePtr.h eine spezielle Implementierung von SafePtr enthalten, die Sie in den Codebeispielen zum Laden als Out-of-Process-Server finden. Sie können diese Header-Datei einbinden oder eine eigene erstellen.
* Jedes Laden von Engine in einen separaten Prozess erfordert einen TCP-Port. Die Konfigurationsdatei OutprocConfig.ini enthält den Bereich verfügbarer Ports für die Interprozesskommunikation.
* Wenn Ihre Anwendung mit C++ arbeitet, binden Sie zusätzlich die Bibliothek libOutprocClientLib.so in Ihr Projekt ein.
* Wenn Sie mit dem Java-Wrapper arbeiten, verwenden Sie com.abbyy.Outproc.FREngine.jar anstelle von com.abbyy.FREngine.jar. Diese Dateien sind im ABBYY FineReader Engine-[Distributionspaket](/de/fine-reader/engine/distribution/distribution-windows/distribution-kit) enthalten.

Siehe die Codebeispiele [Hello (Outproc)](/de/fine-reader/engine/guided-tour/samples#hello_outproc) und [Multithreading](/de/fine-reader/engine/guided-tour/samples#multithreading), die das Laden von Engine als Out-of-Process-Server demonstrieren und eine wiederverwendbare Lösung für Multithreading-Anwendungen in C++ und Java bereitstellen.

Das als Out-of-Process-Server geladene Engine-Objekt weist bei der Verwendung von ABBYY FineReader Engine-Objekten und -Methoden folgende Besonderheiten auf:

* Sie müssen den sequenziellen Modus der Dokumentverarbeitung festlegen, indem Sie die Eigenschaft [MultiProcessingMode](/de/fine-reader/engine/api-reference/parameter-objects/multiprocessingparams#multiprocessingmode) des Objekts [MultiProcessingParams](/de/fine-reader/engine/api-reference/parameter-objects/multiprocessingparams) auf MPM\_Sequential setzen.
* Sie müssen für Parameter, die von IUnknown abgeleitet sind, NULL übergeben. Diese Parameter werden üblicherweise in Exportmethoden verwendet. Um die Exportparameter auf andere Weise zu übergeben, erstellen Sie ein [Benutzerprofil](/de/fine-reader/engine/guided-tour/advanced-techniques/working-with-profiles#user_profiles) mit den gewünschten Einstellungen.
* Das als Out-of-Process-Server geladene Engine-Objekt unterstützt nicht die Arbeit mit:
  * Callbacks und Methoden mit Parametern, die von Callbacks abgeleitet sind
  * Schnittstellen und Methoden zum Öffnen von Bildern aus dem Speicher

Sie können die Iteration des Dokumentlayouts auch mit dem in [Working with Layout and Blocks](/de/fine-reader/engine/guided-tour/advanced-techniques/working-with-layout-and-blocks) beschriebenen Verfahren beschleunigen.
