- 是否需要使用 RESTful
能够制作ajax的服务
调用 wcf 服务(例如:通过使用
WebInvoke
操作属性 契约(Contract)) - 通过添加
webHttp
将服务设为 RESTful 后绑定(bind)在服务主机上,主机是否也可以有其他端点? (wsHttp
或netTcp
) - 是否需要
aspNetCompatibilityEnabled
对于具有 webHttp 绑定(bind)的服务设置为 true(并且此设置可以与其他端点共存) - 我知道我可以使用 JQuery 和
ScriptManager
用于在客户端上进行 WCF 调用。为什么我应该使用其中一种而不是另一种?
最佳答案
答案
没有。
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。我想有时这不是一个选择。是
WCF 服务可以有多个端点,并且它们可以监听相同或不同的传输,例如 HTTP、net.tcp、net.pipe 或 net.msmq。没有。
aspNetCompatibilityEnabled
只是在服务器上启用一些类似 ASMX 的功能。它影响服务的设计方式,并且独立于消息签名。它确实排除了非 HTTP 协议(protocol)的使用。有关详细信息,请参阅Wenlong Dong's article .至于在客户端使用哪个框架 - 哪个更容易?我没有使用 ScriptManager 的经验,但决策标准非常简单。 jQuery 工作得很好,如果您已经使用 jQuery,那么它是合适的。如果您没有或不需要 jQuery,则可以使用 XmlHttpRequest 发送 SOAP 或 REST 请求。如果这些不合适,请使用其他东西。
关于asp.net - 使用 AJAX 进行 WCF 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2434199/