【发布时间】:2014-09-08 17:12:24
【问题描述】:
我有一个引擎(ABBYY FlexiCapture Engine),我想将它与 REST 服务(WebAPI 或 WCF)一起使用。 引擎启动初始化需要 30 秒。每个请求都太长了。我希望引擎加载服务启动并保持“预热”状态。 我如何使用 WebAPI 或 WCF 来做到这一点? (最好的方法是让线程与引擎保持活动状态)。 PS:对不起我的英语不好。
--来自 ABBYY 示例库
private void ProcessImages()
{
trace("Loading FlexiCapture Engine...");
IEngine engine = LoadEngine();
try
{
string samplesFolder = FceConfig.GetSamplesFolder();
trace("Creating and configuring the FlexiCapture Processor...");
IFlexiCaptureProcessor processor = engine.CreateFlexiCaptureProcessor();
processor.AddDocumentDefinitionFile(samplesFolder + "\\SampleProject\\Templates\\Invoice_eng.fcdot");
// ....
trace("Adding images to process...");
processor.AddImageFile(samplesFolder + "\\SampleImages\\Invoices_1.tif");
// ....
trace("Recognizing the images and exporting the results...");
while (true)
{
// Recognize next document
IDocument document = processor.RecognizeNextDocument();
// processing recognized document...
}
}
finally
{
UnloadEngine(ref engine);
}
}
private IEngine LoadEngine()
{
// FlexiCapture Engine can be loaded in three diffrent ways:
// 1) Directly, as in this sample
// 2) As an inproc server (using COM infrastructure)
// 3) As an out-of-proc server in a worker process (using COM infrastructure)
IEngine engine;
int hResult = InitializeEngine(FceConfig.GetDeveloperSN(), null, null, out engine);
Marshal.ThrowExceptionForHR(hResult);
return engine;
}
我想创建引擎。之后,我将创建和配置几个 FlexiCapture 处理器。 (需要很长时间,我想在服务启动时进行) 比,当用户添加图像时 - 我将使用其中一个处理器来识别它们。
启动时: 创建引擎 -> 创建几个处理器(+配置它们); 在方法调用上: 使用一个免费的处理器 -> 识别用户图像。
【问题讨论】:
-
你能贴出管理引擎生命周期的代码吗?
标签: c# wcf asp.net-web-api