【转】WCF、WebAPI、WCFREST、WebService之间的区别

在.net平台下,有大量的技术让你创建一个HTTP服务,像Web Service,WCF,现在又出了Web API。在.net平台下,你有很多的选择来构建一个HTTP Services。我分享一下我对Web Service、WCF以及Web API的看法。

  Web Service

  1、它是基于SOAP协议的,数据格式是XML

  2、只支持HTTP协议

  3、它不是开源的,但可以被任意一个了解XML的人使用

  4、它只能部署在IIS上

 

  WCF

  1、这个也是基于SOAP的,数据格式是XML

  2、这个是Web Service(ASMX)的进化版,可以支持各种各样的协议,像TCP,HTTP,HTTPS,Named Pipes, MSMQ.

  3、WCF的主要问题是,它配置起来特别的繁琐

  4、它不是开源的,但可以被任意一个了解XML的人使用

  5、它可以部署应用程序中或者IIS上或者Windows服务中

 

  WCF Rest

  1、想使用WCF Rest service,你必须在WCF中使用webHttpBindings

  2、它分别用[WebGet]和[WebInvoke]属性,实现了HTTP的GET和POST动词

  3、要想使用其他的HTTP动词,你需要在IIS中做一些配置,使.svc文件可以接受这些动词的请求

  4、使用WebGet通过参数传输数据,也需要配置。而且必须指定UriTemplate

  5、它支持XML、JSON以及ATOM这些数据格式

 

  Web API

  1、这是一个简单的构建HTTP服务的新框架

  2、在.net平台上Web API 是一个开源的、理想的、构建REST-ful 服务的技术

  3、不像WCF REST Service.它可以使用HTTP的全部特点(比如URIs、request/response头,缓存,版本控制,多种内容格式)

  4、它也支持MVC的特征,像路由、控制器、action、filter、模型绑定、控制反转(IOC)或依赖注入(DI),单元测试。这些可以使程序更简单、更健壮

  5、它可以部署在应用程序和IIS上

  6、这是一个轻量级的框架,并且对限制带宽的设备,比如智能手机等支持的很好

  7、Response可以被Web API的MediaTypeFormatter转换成Json、XML 或者任何你想转换的格式。

  

  WCF和WEB API我该选择哪个?

  1、当你想创建一个支持消息、消息队列、双工通信的服务时,你应该选择WCF

  2、当你想创建一个服务,可以用更快速的传输通道时,像TCP、Named Pipes或者甚至是UDP(在WCF4.5中),在其他传输通道不可用的时候也可以支持HTTP。

  3、当你想创建一个基于HTTP的面向资源的服务并且可以使用HTTP的全部特征时(比如URIs、request/response头,缓存,版本控制,多种内容格式),你应该选择Web API

  4、当你想让你的服务用于浏览器、手机、iPhone和平板电脑时,你应该选择Web API

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/437447.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Idea打可执行jar包

前些日子试了下idea打包,有些细节没太注意所以经常打包失败,要不然就是显示没有主清单属性,所以一直用eclipse打包,今天又重新捣鼓了一下,写下过程: 1. 先添加需要打jar包的主入口 第三步一定不要放在main…

正则表达式:获取一串字符串中,某个字符串到某个字符串之间的字符串,不包含左右,只取中间

表示取出"EventType":" 到 "之间的字符串&#xff0c;非贪婪匹配 (?<"EventType":").*?(?")如果后面"也换成字符串的话&#xff0c;就把?换成?<即可 例子如下&#xff1a; public String getPattern(String str,Str…

安卓系统挂载NTFS格式硬盘_Mac 读写 NTFS硬盘管理开源工具NTFSTool

NTFSTool是Mac OS 下一款开源的 NTFS 磁盘格式读写工具&#xff0c;基于Electron和VUE编写。遵守MIT开源协议。支持 NTFS 磁盘读写、挂载&#xff0c;退出、管理等功能。系统检测到插入移动硬盘后&#xff0c;会自动弹出 NTFSTool 界面&#xff0c;并自动挂载硬盘。安装NTFSToo…

【转】刨根究底字符编码之九——字符编码方案的演变与字节序

字符编码方案的演变与字节序 一、字符编码方案的演变 1. 根据前面的介绍&#xff0c;对于字符编码方案的演变&#xff0c;我们大致上可简单地划分为三个阶段&#xff1a; ① ASCII编码方案阶段 → ② ANSI编码方案阶段 → ③ Unicode/UCS编码方案阶段。 在第一个阶段的ASCII…

python人工智能_人工智能人才缺口千万!学Python抓住风口机会

前不久教育界的一个消息&#xff0c;引发了广泛的关注。今年9月&#xff0c;浙江三到九年级信息技术课将替换新教材&#xff0c;八年级将新增Python课程内容。新高一信息技术编程语言由VB替换为Python&#xff0c;大数据、人工智能、程序设计与算法按照教材规划五六年级开始接触…

【转】刨根究底字符编码之十——Unicode字符集的字符编码方式

一、字符编码方式CEF的选择 1. 由于Unicode字符集非常大(并且作为开放字符集还在不断扩展之中)&#xff0c;有些字符的编号(即码点值)需要两个或两个以上字节来表示&#xff0c;而要对这样的编号进行编码&#xff0c;也必须使用两个或两个以上字节。 比如&#xff0c;汉字“…

ip和端口正则表达式

ip&#xff1a;来自站长工具 ^(25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d)\.(25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d)\.(25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d)\.(25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d)$MAC地址&#xff1a; ^[A-F0-9]{2}(-[A-F0-9]{2}){5}$|^[A-F0-9]{2}…

【转】刨根究底字符编码之十一——UTF-8编码方式与字节序标记BOM

一、UTF-8编码方式 1. 接下来将分别介绍Unicode字符集的三种编码方式&#xff1a;UTF-8、UTF-16、UTF-32。这里先介绍应用最为广泛的UTF-8。 为满足基于ASCII、面向字节的字符处理的需要&#xff0c;Unicode标准中定义了UTF-8编码方式。UTF-8应该是目前应用最广泛的一种Unic…

流水灯verilog实验原理_IC设计实例解析之“流水线技术”

源自&#xff1a;微信公众号 “数字芯片实验室”在IC设计中&#xff0c;如果寄存器之间的组合逻辑延时过大&#xff0c;可能会称为设计中的关键路径&#xff0c;从而降低整个电路的工作频率。如下图所示&#xff0c;是一个输入和输出寄存的算术计算逻辑。在set_input_delay和se…

【转】刨根究底字符编码之十二——UTF-8究竟是怎么编码的

UTF-8究竟是怎么编码的 1. UTF-8编码是Unicode字符集的一种字符编码方式(CEF)&#xff0c;其特点是使用变长字节数(即变长码元序列或称变宽码元序列)来编码。目前一般是1到4个字节&#xff0c;当然&#xff0c;也可以更长。 为什么要变长呢&#xff1f;这可以理解为按需分配…

记录今天写的几个正则,数字范围的校验

3到30的整数 ([3-9]|[1-2]\d|30)0到1460的整数 ^([0-9]|[1-9]\d{1,2}|1[0-3]\d{2}|14[0-5]\d{1}|1460)$0-99的整数 ([1-9]|[1-9]\d)//一个判断输入数字是整数的方法&#xff0c;不是整数会被删除掉&#xff0c;复制的内容也可以解决 //因为好几个地方用到了&#xff0c;所以…

iphone闪退修复工具_升级 iOS 14.2 微信闪退?iPhone 12 维修贵

原标题&#xff1a;升级 iOS 14.2 微信闪退&#xff1f;iPhone 12 维修贵昨天&#xff0c;苹果推出 iOS 14.2 正式版系统&#xff0c;我相信你们都知道了&#xff0c;主要新增几点功能&#xff0c;并没有针对性解决耗电问题&#xff0c;而对 AirPods Pro 充电进行优化&#xff…

【转】刨根究底字符编码之十三——UTF-16编码方式

1. UTF-16编码方式源于UCS-2(Universal Character Set coded in 2 octets、2-byte Universal Character Set)。而UCS-2&#xff0c;是早期遗留下来的历史产物。 UCS-2将字符编号直接映射为字符编码(CEF&#xff0c;而非CES&#xff0c;详见前文中对现代字符编码模型的解释)&a…

angular判断两个对象值是否相等,包含对象深层判断,深拷贝的两个对象

angular public isEqual(obj1:any,obj2:any):boolean{if(!(obj1 instanceof Object) || !(obj2 instanceof Object)){/* 判断不是对象 */return obj1 obj2;}if(Object.keys(obj1).length ! Object.keys(obj2).length){return false;//Object.keys() 返回一个由对象的自身可枚…

java xml 默认名称空间 xpath_创意产业园办公空间设计

你说想要的样子永远不是现在你的样子&#xff0c;桃花源或许永远在每个人的心底。桃花源办公空间整体外观入口前厅及走廊空间天花板细节桃花源其实是我们每个人或者一群人的乌托邦&#xff0c;一座苏联式的厂房是心中桃花源的开端&#xff0c;光、空、间、穿、行、高、纵、新、…

【转】刨根究底字符编码之十四——UTF-16究竟是怎么编码的

1. 首先要注意的是&#xff0c;代理Surrogate是专属于UTF-16编码方式的一种机制&#xff0c;UTF-8和UTF-32是不用代理的。 如前文所述&#xff0c;为了让UTF-16能继续编码基本平面后面的增补平面中的码点值&#xff0c;于是扩展了UTF-16编码方式。 具体的扩展方法就是为其增…

linux下java程序实现重启功能

今天有个需求要实现java程序重启的功能&#xff0c;类似界面上有个重启按钮点击一下实现程序重启。 一开始网上找了一些方法&#xff0c;都不能实现自己重启&#xff0c;类似新建进程之类的nohup &&#xff0c;ProcessBuilder之类的都测试了全部都是程序只是结束了并没有再…

java环境_配置java环境变量

1.找到此电脑我的电脑右键属性。2.点击高级系统设置。3.点击环境变量。4.点击新建。5.创建变量名JAVA_HOME必须是大写&#xff0c;变量值找到你的jdk的根目录复制下来&#xff0c;然后粘贴进去&#xff0c;点击确定。6.再次点击新建7.创建变量名为path、变量值&#xff0c;找到…

idea+JRebel实现项目热部署

今天发现这个插件&#xff0c;简直神了&#xff0c;太爽了&#xff0c;每次改完代码重启都要等半天&#xff0c;回不去了 第一步&#xff1a;安装插件 第二步&#xff1a;在线生成GUID 网址&#xff1a;在线GUID地址 第三步&#xff1a;打开jrebel 如下所示面板&#xff0c;选…