WebScriptServiceHostFactory与WebServiceHostFactory

时间:2013-03-01 16:45:24

标签: asp.net wcf

有人可以解释两者之间的区别,何时使用WebScriptServiceHostFactory vs WebServiceHostFactory?我知道在使用时他们在端点上设置了某些默认行为,所以我不必这样做。否则就是差异,只是WebScriptServiceHostFactory默认为JSON消息,而WebServiceHostFactory默认为XML(soap消息)?使用WebGet和WebInvoke,两者都可以使用它们,还是不允许它?我也可以使用UriTemplates来构建REST服务吗?

1 个答案:

答案 0 :(得分:4)

WebScriptServiceHostFactory几乎专门用于定义ASP.NET AJAX框架将使用的服务(它为JS客户端提供了一个“代理”,可以用来调用服务)。如果您正在进行通用WCF Web(REST)编程,则应该坚持使用WebServiceHostFactory

一些差异:

  • 正如您所提到的,默认的响应格式是不同的(WScriptSHF中的JSON,WSHF中的XML)
  • WSHF完全支持UriTemplates,而不是WScriptSHF
  • WebGet和WebInvoke同时适用于两者,但在WScriptSHF上,唯一支持的正文样式为WrappedRequest
  • 对WScriptSHF创建的端点的调用的响应是 wrap 在JSON对象中;如果对操作的响应(在JSON中)为[1,2,3],则端点将其返回为{"d":[1,2,3]}

可能还有其他人,但基本上,只有当您使用ASP.NET AJAX框架(使用<asp:ScriptManager>)和WSHF执行其他任何操作时,指导才会使用WScriptSHF。