我有一个Web API,该API从现场的一个遥测硬件中接受一个简单的逗号分隔的数据字符串。然后,需要进行处理以确定是否执行各种动作,然后执行这些动作。这些就是将数据存储在数据库中或触发电子邮件警报。 API只需要回应说已经接收到数据,然后所有工作就可以在服务器上进行,而API继续接受其他请求。每几秒钟就会有来自数千个硬件的数千个请求。
由于我是ASP.NET MVC的新手,所以我不确定执行此操作的最佳方法。我希望api控制器进行一些基本检查,然后回复成功响应(当前显示“已处理”消息)。它需要将数据发送到其他进程以在后台进行工作。发布帖子的硬件对后续工作的成功不感兴趣,因为它需要快速断开连接,直到下一次报告为止。由于存在许多硬件报告,因此实时连接需要尽快完成和关闭。
这些额外的函数应该是单独类中的Asynch函数吗?如果是这样的话,它们是否应该对它们无效,以便它们可以在http请求完成后即在后台进行,即无需等待它们?由于有太多可能要执行的子例程,因此API控制器变得非常code肿。
public class MyApiController : ApiController
{
public class RecievedPost
{
public string Data { get; set; }
}
private BaseContext db = new BaseContext();
public HttpResponseMessage PostResponse([FromBody] RecievedPost recievedPost)
{
try
{
string[] dataArray = recievedPost.Data.Split(',');
//run various checks and trigger various other processes based on the results.
}
return new HttpResponseMessage()
{
Content = new StringContent("Processed")
};
}
catch (Exception ex)
{
return new HttpResponseMessage()
{
Content = new StringContent("API Error - " + ex.ToString())
};
}
}