WCF兼容WebAPI输出Json格式数据,从此WCF一举两得
2020-12-13 15:44
标签:style blog http io color ar os 使用 for 问题起源: 很多时候为了业务层调用(后台代码),一些公共服务就独立成了WCF,使用起来非常方便,添加服务引用,然后简单配置就可以调用了。 如果这个时候Web站点页面需要调用怎么办呢? 复杂的XML , 使用不方便 ,而且通信成本也比较高。 这时候有人受不了了, 于是就新建了一套WebAPI , Web页面调用爽了。但是维护起来又麻烦了,一会儿WCF , 一会儿WebAPI 一段时间过后,可以想象已经相差甚远了。 某一天同事A , 在业务层需要调用一个接口 ,发现它是WebAPI方式的 ,被迫没办法 , 去写了一个DoRequest(..)的方法来封装调用WebAPI , 感觉比较痛苦,无端端增加了程序复杂度和工作量,同时还增加程序的风险点。 问题分析: 其实就是WCF不能兼容WebAPI输出Json格式数据 , 如果可以写一套接口就搞定了。 有没有一个办法能让WCF服务又可以在业务层添加服务的方式调用,又可以在网页上通过jQuery调用返回简洁的Json数据呢? 如何解决: WCF可以使用多个Endpoint,能不能再这个上面做文章呢? 首先,让你的WCF接口支持Web请求,返回Json , System.ServiceModel.Web , 下有一个WebGetAttribute 可以帮我们实现: 然后,修改服务配置: Web调用地址:http://ip:port/xxx.svc/yyy/id Wcf服务地址会变为:http://ip:port/xxx.svc/Wcf 如此一来,前台后台的使用方式都不变,从此WCF一举两得,少了重复造轮子的时间与烦恼,省心不少。 WCF兼容WebAPI输出Json格式数据,从此WCF一举两得 标签:style blog http io color ar os 使用 for 原文地址:http://www.cnblogs.com/DanielChow/p/4076599.html[OperationContract]
[WebGet(UriTemplate = "/yyy/{id}", ResponseFormat = WebMessageFormat.Json)]
Product[] yyy(string id);
system.serviceModel>
services>
service name="xxx" behaviorConfiguration="Default">
endpoint address="" behaviorConfiguration="web" binding="webHttpBinding" bindingConfiguration="basicTransport" contract="Ixxx"/>/*提供WebGet服务用*/
endpoint address="Wcf" binding="basicHttpBinding" contract="Ixxx"/>/*提供WCF服务 , 注意address=‘Wcf‘,为了区分开与WebGet的地址,添加引用之后会自动加上的*/
endpoint contract="IMetadataExchange" binding="mexHttpBinding" address="mex"/>/*元数据endpoint*/
service>
services>
behaviors>
serviceBehaviors>
behavior name="Default">
serviceMetadata httpGetEnabled="true" httpsGetEnabled="true"/>
serviceDebug includeExceptionDetailInFaults="true"/>
behavior>
behavior name="">
serviceMetadata httpGetEnabled="true"/>
serviceDebug includeExceptionDetailInFaults="true"/>
behavior>
serviceBehaviors>
endpointBehaviors>
behavior name="web">
webHttp helpEnabled="true"/>
behavior>
endpointBehaviors>
behaviors>
bindings>
webHttpBinding>
binding name="basicTransport"/>
webHttpBinding>
bindings>
serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
system.serviceModel>
上一篇:Java集合
文章标题:WCF兼容WebAPI输出Json格式数据,从此WCF一举两得
文章链接:http://soscw.com/essay/35361.html