如何构造更复杂的API控制器

时间:2019-06-10 11:15:58

标签: asp.net-mvc asp.net-web-api

我有一个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())
                };
            }
        }

0 个答案:

没有答案