메인 콘텐츠로 건너뛰기
이 항목은 Linux용 FRE에 적용됩니다.
이 로드 방식을 사용하면 ABBYY FineReader Engine을 Out-of-Process 서버로 별도의 프로세스에 로드할 수 있습니다. 이 방식을 사용하면 모든 ABBYY FineReader Engine 객체가 완전히 스레드 안전해집니다. 각 FineReader Engine 인스턴스는 다른 인스턴스와 동시에 별도의 프로세스에서 실행됩니다. 따라서 프로세서 풀을 만들고 사용 가능한 CPU 성능을 최대한 활용할 수 있습니다. 이런 이유로 이 방식은 특히 서버 애플리케이션에 적합합니다. 엔진을 Out-of-Process 서버로 별도의 프로세스에 로드하려면 배포 패키지에 포함된 다음 파일을 사용합니다.
  • OutprocEngineLoader.h 파일에는 엔진 객체의 초기화 및 종료 메서드가 선언되어 있습니다(C++에서는 이 헤더 파일에 선언된 InitializeEngine 함수와 ExplicitlyUnload 함수를 사용).
  • FREgnineOutproc.h 파일은 OutprocEngineLoader.h에 포함됩니다. 이 파일은 다중 스레드 솔루션용 FREngine.h 파일의 대응 버전으로, 참조 카운팅 메서드와 SAFEARRAY 매개변수가 있는 메서드를 제외하면 동일한 메서드와 인터페이스를 지원합니다.
  • FREngineOutproc.h에 선언된 메서드는 참조 순환을 처리하지 않습니다. 따라서 SafePtr의 전용 구현이 OutprocSafePtr.h 파일로 제공되며, 이 파일은 Out-of-Process 서버 로드를 설명하는 코드 샘플에서 확인할 수 있습니다. 이 헤더 파일을 포함해서 사용하거나 직접 구현할 수도 있습니다.
  • 엔진을 별도의 프로세스에 로드할 때마다 TCP 포트 하나가 필요합니다. OutprocConfig.ini 구성 파일에는 프로세스 간 통신에 사용할 수 있는 포트 범위가 포함되어 있습니다.
  • 애플리케이션이 C++로 작성된 경우에는 프로젝트에 libOutprocClientLib.so 라이브러리도 추가로 링크해야 합니다.
  • Java wrapper를 사용하는 경우 com.abbyy.FREngine.jar 대신 com.abbyy.Outproc.FREngine.jar를 사용하십시오. 이 파일들은 ABBYY FineReader Engine distribution package에 포함되어 있습니다.
엔진을 Out-of-Process 서버로 로드하는 방법을 보여 주고, C++ 및 Java용 다중 스레드 애플리케이션에서 재사용할 수 있는 솔루션을 제공하는 Hello (Outproc)Multithreading code samples도 참조하십시오. Out-of-Process 서버로 로드된 엔진 객체를 사용할 때는 ABBYY FineReader Engine 객체 및 메서드와 관련해 다음과 같은 특이사항이 있습니다.
  • MultiProcessingParams 객체의 MultiProcessingMode 속성을 MPM_Sequential로 설정하여 문서 처리의 순차 모드를 지정해야 합니다.
  • IUnknown에서 파생된 매개변수에는 NULL을 전달해야 합니다. 이러한 매개변수는 일반적으로 Export 메서드에서 사용됩니다. Export 매개변수를 다른 방식으로 전달하려면 원하는 설정으로 user profile을 생성하십시오.
  • Out-of-Process 서버로 로드된 엔진 객체에서는 다음 작업이 지원되지 않습니다.
    • callbacks 및 callbacks에서 파생된 매개변수가 있는 메서드
    • 메모리에서 이미지를 여는 인터페이스 및 메서드
또한 Working with Layout and Blocks에 설명된 방식을 사용하면 문서 layout을 순회하는 속도를 높일 수도 있습니다.