处理ASP.net Web API 2服务中的长时间运行进程

时间:2015-01-16 15:59:01

标签: c# asp.net rest

我使用ASP.net Web API 2创建了一个REST服务。该服务允许客户端POST记录存储在SQL Server数据库中的记录。此时其他一些进程需要从数据库中提取记录,处理它们,并将结果发送到另一个单独的REST服务。

由于处理记录非常耗时,我不想在POST操作中执行此步骤,但我正在尝试找出设计此其他进程的最佳方法

有没有办法将此功能集成到ASP.net REST API项目中,还是像Windows服务这样的最佳解决方案?

2 个答案:

答案 0 :(得分:0)

您可以异步编写Web服务。那就是,

public async Task<HttpResponseMessage> PostRecords(Records records)
{
    await [POST data to db]

    // process records asynchronously without awaiting

}

您还可以同步执行后期操作,同时跟踪数据库中帖子的完成情况。正如您所提到的,让工作或Windows服务单独处理已完成的帖子。

答案 1 :(得分:0)

您可以在asp.net mvc或Web api中使用Quartz.NET调度库。定义一个执行查询的作业,并从发布操作中触发该作业。