加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-web-api – ASP.NET Web API中的回调方法

发布时间:2020-12-16 04:37:47 所属栏目:asp.Net 来源:网络整理
导读:我有一个ASP.NET Web API服务器,必须与不同平台上的不同应用程序通信.现在我想创建一个类似回调的方法:客户端应用程序订阅它并等待服务器触发消息. 例: 许多用户都在等待新产品在商店中出售 – 他们订阅了这个“活动”.当产品到达商店时 – 每个客户都会收
我有一个ASP.NET Web API服务器,必须与不同平台上的不同应用程序通信.现在我想创建一个类似回调的方法:客户端应用程序订阅它并等待服务器触发消息.

例:
许多用户都在等待新产品在商店中出售 – 他们订阅了这个“活动”.当产品到达商店时 – 每个客户都会收到一条消息,在某些情况下必须处理.

>用户发送请求“订阅”
>服务器收到“产品可用!”的请求
>服务器向每个用户发送包含产品详细信息的消息
>用户的应用程序处理消息

我试图在ASP.NET Web API中找到有关回调或双工的一些信息,但是一个建议 – 最好使用WCF来实现这种方法.

解决方案

>在每个客户端应用程序中创建类似计时器的东西,每N秒发送一个请求“产品是否可用?”直到得到“假”.当响应为真时 – 发送消息“获取产品详细信息”.这会导致很多流量,如果有很多客户端使用这些定时器 – 那会很糟糕,不是吗?
>创建一个小型回调服务器(可能是WCF).但在这种情况下,这个服务器和不同平台上的应用程序之间的通信会遇到很多问题.
>也许ASP.NET Web API中有一些解决方案,我错过了.

如果您对如何解决这个问题有一些想法,请给我一个建议.

感谢帮助.

解决方法

看起来您需要来自服务器的推送通知 – 在这种情况下,可以通过将SignalR与Web API相结合来实现.

布拉德威尔逊有一个很好的例子:

>代码在这里 – https://github.com/bradwilson/WebstackOfLove
> NDC奥斯陆谈话解释所有这些 – http://vimeo.com/43603472

简而言之,每当您向Web API添加新项目时,您都可以通知所有已连接(订阅)的客户端:

public void PostNewItem(ToDoItem item)
        {
            lock (db)
            {
                // Add item to the database
                db.Add(item);

                // Notify the connected clients
                Hub.Clients.processItem(item);
            }
        }

SignalR将在客户端上调用processItem函数.

或者,您可能希望查看JavaScript SSE和Web API PushStreamContent,但这是更低级别,SignalR为您提取了大量此类内容,因此处理起来可能会更复杂.

我在http://www.strathweb.com/2012/05/native-html5-push-notifications-with-asp-net-web-api-and-knockout-js/这里写了关于这种方法的博客

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读