使用 javascript (AJAX) 的双工 WCF 服务调用

Posted

技术标签:

【中文标题】使用 javascript (AJAX) 的双工 WCF 服务调用【英文标题】:Duplex WCF Service call using javascript (AJAX) 【发布时间】:2016-04-27 10:02:18 【问题描述】:

现在我正在使用 WCF 休息服务

现在我正在 WCF REST 服务中尝试 WCF 双工通信

目前我正在通过 jquery AJAX 调用服务并得到响应

像这样:

 $.ajax(
        type: varType, //GET or POST or PUT or DELETE verb
        url: varUrl, // Location of the service
        data: varData, //Data sent to server
        contentType: varContentType, // content type sent to server
        dataType: varDataType, //Expected data format from server
        processdata: varProcessData, //True or False
        crossDomain: true,
        cache: varCache,
        timeout: 200000,
        success:  function (response) // When Service call success
                 var names = response.d;
                 alert(names);
             ,
        error: function (xhr) // When Service call fails
          alert(xhr.responseText);
        
    );

但在双工通信中,服务中有一个回调合约,该服务稍后会与客户端通信。

如何在 jquery ajax 中获得回调合约的响应?

我还有一个疑问,webHttpbinding 会支持双工通信吗?

【问题讨论】:

我回答你的问题了吗? 【参考方案1】:

如何在 jquery ajax 中获得回调合约的响应?

恕我直言,应该使用通过 HTTP SignalR 从您的服务接收到客户端的调用。它使用推技术、长拉技术和其他技术来实现这一点。另一种方法是通过重复调用服务进行更改来模拟这一点。

通过支持双工通信的WSDualHttpBinding 似乎很难做到这一点。请参阅 Juval Lowy 在“Programming WCF”一书中对这种绑定的说明:“双工回调是非标准的,因为没有行业参考说明客户端端点地址如何传递给服务或服务如何发布首先是回调合约。”

我还有一个疑问,webHttpbinding 会支持双工通信吗?

我相信那里不支持它。 WebHttpBinding 不支持会话(ReliableSession 属性),这是双工通信所必需的(请参阅System-Provided Bindings)。

顺便说一句,WebHttpBinding 被 ASP.NET WebApi 取代。

【讨论】:

WSDualHttpBinding 的答案可能是正确的,但我必须使用webHttpBinding 实现双工通信,我使用了 HATEOAS 概念来实现这一点。

以上是关于使用 javascript (AJAX) 的双工 WCF 服务调用的主要内容,如果未能解决你的问题,请参考以下文章

websocket与ajax的区别浅析

(chap9 基于HTTP的功能追加协议) WebSocket使用浏览器进行全双工通信

反向Ajax:WebSocket

框架基础:ajax设计方案---集成轮询技术

JavaScript之Ajax-2 Ajax(使用Ajax发送get请求使用Ajax发送post请求)

框架基础:ajax设计方案---集成轮询技术