>是否需要使用RESTful
服务能够制作ajax
调用wcf服务(例如:通过使用
“操作”上的WebInvoke属性
合同)
>通过在服务主机上添加webHttp绑定使服务成为RESTful,主机是否也可以拥有其他端点? (wsHttp或netTcp)
>对于具有webHttp绑定的服务,是否需要将aspNetCompatibilityEnabled设置为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头.
.
话虽如此,在Javascript程序中处理json比处理XML文档的DOM要容易得多.换句话说,在从Javascript连接到WCF而不是SOAP时,最好使用JSON / REST.我想有时它不是一种选择.
>是的
WCF服务可以有多个端点,它们可以侦听相同或不同的传输,例如HTTP,net.tcp,net.pipe或net.msmq.
>否.aspNetCompatibilityEnabled只是在服务器上启用了一些类似ASMX的功能.它会影响服务的设计方式,并且与邮件签名无关.它确实排除了使用非HTTP协议.有关详细信息,请参阅Wenlong Dong’s article.
>至于在客户端使用哪个框架 – 哪个更容易?我没有使用ScriptManager的经验,但决策标准非常简单. jQuery工作正常,如果你已经使用jQuery,它是合适的.如果您没有或不想要jQuery,可以使用XmlHttpRequest发送SOAP或REST请求.如果这些不合适,请使用其他东西.