asp.net - 使用 AJAX 进行 WCF 调用

标签 asp.net jquery ajax wcf .net-4.0

  1. 是否需要使用 RESTful 能够制作ajax的服务 调用 wcf 服务(例如:通过使用 WebInvoke操作属性 契约(Contract))
  2. 通过添加 webHttp 将服务设为 RESTful 后绑定(bind)在服务主机上,主机是否也可以有其他端点? ( wsHttpnetTcp )
  3. 是否需要 aspNetCompatibilityEnabled对于具有 webHttp 绑定(bind)的服务设置为 true(并且此设置可以与其他端点共存)
  4. 我知道我可以使用 JQuery 和 ScriptManager用于在客户端上进行 WCF 调用。为什么我应该使用其中一种而不是另一种?

最佳答案

答案

  1. 没有。
    AJAX 通常用于发送简单的 HTTP GET(“REST”)请求。事实并非一定如此。您还可以使用 SOAP 信封格式化有效负载,并将其 POST 到端点。在这种情况下,WCF 服务至少必须是 wsHttp 或 basicHttpBinding。这是an example of using VBScript to create and send a SOAP request ,但你也可以在 Javascript 中做同样的事情。您无法使用更高级的 SOAP 扩展,例如 WS-Security、XML DigSig 等。嗯,你可以但是这是不切实际的。例如,我不知道 Javascript 中有任何 XML 规范化库,而这对于进行 WS-Security 或数字签名至关重要。类似的障碍还有17个。结果:从 Javascript 调用时无法使用更高级的 SOAP 扩展。
    .
    如果您使用 jQuery ajax,则需要在 ajax 请求上使用 beforeSend 回调来设置 SOAPAction header 。
    .
    话虽如此,在 Javascript 程序中处理 json 比遍历 XML 文档的 DOM 容易得多。换句话说,从 Javascript 连接到 WCF 时,最好使用 JSON/REST,而不是 SOAP。我想有时这不是一个选择。


  2. WCF 服务可以有多个端点,并且它们可以监听相同或不同的传输,例如 HTTP、net.tcp、net.pipe 或 net.msmq。

  3. 没有。 aspNetCompatibilityEnabled 只是在服务器上启用一些类似 ASMX 的功能。它影响服务的设计方式,并且独立于消息签名。它确实排除了非 HTTP 协议(protocol)的使用。有关详细信息,请参阅Wenlong Dong's article .

  4. 至于在客户端使用哪个框架 - 哪个更容易?我没有使用 ScriptManager 的经验,但决策标准非常简单。 jQuery 工作得很好,如果您已经使用 jQuery,那么它是合适的。如果您没有或不需要 jQuery,则可以使用 XmlHttpRequest 发送 SOAP 或 REST 请求。如果这些不合适,请使用其他东西。

关于asp.net - 使用 AJAX 进行 WCF 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2434199/

相关文章:

javascript - div 内的滚动 div 出现在具有较高 z-index 的 div 上

javascript - JQuery 滚动到 Bootstrap Modal 的顶部

jquery - sibling 和 child 有什么区别

jQuery $.POST 仅当某些函数在其之后执行时才有效。

javascript - CKEditor 的配置文件没有任何效果

javascript - 需要用于 ASP.NET 的良好 HTML 内容编辑器

javascript - 过滤谷歌地图范围内的标记

javascript - 如何在运行时将带有点击事件的元素添加到 Angular 范围

javascript - 使用 Ajax 加载 html 后调用 jquery 插件

javascript - 通过ajax发送json对象