早在1996年Gartner就前瞻性地提出了面向服务架构的思想(SOA),SOA 的走红在很大程度上归功于 Web Service 标准的成熟和应用的普及。

Service Oriented Ambiguity 中文一般理解为:面向服务架构,简称SOA,这个概念算得上微服务的鼻祖了。

SOA 的提出是在企业计算领域,就是要将紧耦合的系统,划分为面向业务的、粗粒度、松耦合、无状态的服务。服务发布出来供其他服务调用,一组互相依赖的服务就构成了SOA架构下的系统。

SOA 本质上是服务的集合。

在分布式通信技术选型中,就本人曾经使用过的基于微软平台的分布式通信进行概述,先明确一下分布式框架的三个基本需求:

  • 客户端:Web、Android、IOS、跨平台(Java 开发的系统和.NET 开发的系统可以通信)

  • 服务端:部署在Windows、Linux

  • 合约(Contract):传递的格式(REST,Json、SOAP、XML)、通信协议(HTTP、XML-RPC、TCP)、消息超时设置、消息包大小

要打造分布式平台,各家技术栈多有不错的实践,这里重点说一下微软技术栈下,丰富的技术选型:

  • .NET Remoting (15年前技术,目前已经失传)

  • Web Service (ASMX, ASP .NET Web Services,15年前技术,维护项目依然存在)

  • WCF (Windows Communication Foundation,10年前技术,维护项目中比较多)

  • Web API (5年前技术开始火起来,和跨平台需求密不可分,最近3年的新需求大部分迁移在这里了)

下面展开来说:

.NET Remoting

是2.0时代的产物, 即2004年的技术,我还没有机会实战过。在微软Roadmap中已被WCF取代(.NET Remoting做得到的事,理论上WCF都可以实现) 依据微软一份,WCF在效能上比ASP.NET Web Service快了25%-50%,比.NETRemoting快25%,弃.NET Remoting改用WCF将有性能能上的突破。详见报告链接。

Web Service

在很早前开发WebForm ASP.NET中用的比较多,因此可以将 Web Service 理解为一个基于 HTTP 协议开发的上层应用程序

Web service 是一个平台独立的,低耦合的,自包含的、基于可编程的 Web 的应用程序,可使用开放的 XML(标准通用标记语言下的一个子集)标准来描述、发布、发现、协调和配置这些应用程序,用于开发分布式的互操作的应用程序。Simple Object Access Protocol,中文为简单对象访问协议,简称 SOAP。

1、它是基于SOAP协议的,数据格式是XML (SOAP )2、只支持HTTP协议3、它不是开源的,但可以被任意一个了解XML的人使用4、它只能部署在IIS上

SOA 不是 Web Service,Web Service 是当年最适合实现SOA的技术。

WCF

WCF是取代Web Service及.NET Remoting的接班人,我记得这个是微软2010年开始力推的技术。

我第一次是用WCF是2012年,做一个电信级项目,结合微软吹水的Silverlight技术(Silverlight技术,2013年底该技术被微软安乐死了,again!)

1、这个也是基于SOAP的,数据格式是XML2、这个是Web Service(ASMX)的进化版,可以支持各种各样的协议,像TCP,HTTP,HTTPS,Named Pipes, MSMQ.3、WCF的主要问题是,它配置起来特别的繁琐!!!(此处特别强调了3个感叹号 )4、它不是开源的,但可以被任意一个了解XML的人使用5、它可以部署应用程序中或者IIS上或者Windows服务中

WCF门槛有些太高,仅仅在Windows平台开发,而且配置文件比较复杂(WCF 客户端\WCF 服务器端,仅Binding、Behavior的复杂度就能单独写一篇文章,踩过不少坑,都是泪。)

众所周知,微软.net技术未来是.netCore,成熟的.NetCore3 2019年底就可以应用于生产系统了, 但多年来微软一直拒绝将WCF 的服务器端移植到.NET Core, 导致这个分布式技术,面临的极大的技术瓶颈,即若干年后几无可用人才来维护WCF项目,所以大约3年前开始,我知道周围朋友公司的新项目大都避而不谈WCF了。

随着SOAP 逐渐淡出,RESTful大行其道, Web API火了起来。

微软技术栈的工程实现是 ASP.NET Web API,而且微软建议使用 ASP.NET Core Web API 或 gRPC,它们提供基于跨平台和跨编程语言的 RPC,也能使用 gRPC 来编写代码,并替换掉一些 WCF 服务器服务。

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,而且微软2014年推出开源.NetCore中就有ASP.Net Core Web API,可见重视程度。

分布式技术这么多,我该选谁?

都2019年了,新项目肯定是WebAPI,原因如下:

WebAPI只要有能力发送HTTP Request跟解析JSON,比较符合微服务要求, 跨平台支持。创建一个基于HTTP的面向资源的服务并且可以使用HTTP的全部特征时(比如URIs、request/response头,缓存,版本控制,多种内容格式),你应该选择WebAPI让你的服务用于浏览器、手机、iPhone和平板电脑时,你应该选择Web API双工消息模式,过SignalR和WebSockets整合(创建一个支持消息、消息队列、双工通信的服务时)

原文链接:https://www.jianshu.com/p/54192c6df483


.NET社区新闻,深度好文,欢迎访问公众号文章汇总 http://www.csharpkit.com

关于WCF、WebAPI、WebService之间的区别总结 分布式通信技术相关推荐

  1. .NET 的 WCF 和 WebService 有什么区别?(转载)

    .NET 的 WCF 和 WebService 有什么区别?(转载) [0]问题: WCF与 Web Service的区别是什么? 和ASP.NET Web Service有什么关系? WCF与ASP ...

  2. 请问WCF 跟 WebService之间异同

    From: http://tommyhu.cn/wcf-WebService-qu-bie/ 问题: WCF与 Web Service的区别是什么? 和ASP.NET Web Service有什么关系 ...

  3. WCF、WebAPI、WCFREST、WebService之间的区别

    注明:转载 在.net平台下,有大量的技术让你创建一个HTTP服务,像Web Service,WCF,现在又出了Web API.在.net平台下,你有很多的选择来构建一个HTTP Services.我 ...

  4. 关于WCF、WebAPI、WCFREST、WebService之间的区别总结

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

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

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

  6. WCF、WebAPI、WebService之间的区别

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

  7. WCF和webservice的区别

    微软论坛的斑竹回答如下: 脑内:果然是高大上啊 1.WebService:严格来说是行业标准,不是技术,使用XML扩展标记语言来表示数据(这个是夸语言和平台的关键).微 软的Web服务实现称为ASP. ...

  8. WCF与 Web Service的区别

    [0]问题: WCF与 Web Service的区别是什么? 和ASP.NET Web Service有什么关系? WCF与ASP.NET Web Service的区别是什么? 这是很多.NET开发人 ...

  9. Remoting和Webservice有什么区别

    REMOTING和WEBSERVICE有什么区别 其实现的原理并没有本质的区别,在应用开发层面上有以下区别: 1.Remoting可以灵活的定义其所基于的协议,如果定义为HTTP,则与Web Serv ...

最新文章

  1. JAVA应用小程序(Applet)
  2. JS中获得窗口属性的方法
  3. Python-函数和代码复用
  4. Spring Boot——AbstractWebSocketMessageBrokerConfigurer已过时解决方案
  5. 架构之Nginx(负载均衡/反向代理)
  6. Pat乙级1011题:A+B和C
  7. HDU1856_More is better
  8. 力扣-复制带随机指针的链表
  9. python绘制汉字_OpenCV Python 绘制中文字
  10. Springboot+JasperReport报表打印
  11. 原生JS实现一个无缝轮播图插件(支持vue)
  12. 2. Mysql 升级 与 升级后 mysql --version 和 select version() 不一致问题
  13. swc反编译工具_JPEXS Free Flash Decompiler(Flash反编译工具)v11.3.0 中文免费版-ucbug软件站...
  14. Python 实现控制一阶惯性系统
  15. 【渝粤教育】电大中专液压与气动技术 (2)作业 题库
  16. 机器人行业毕业相关小结
  17. Linux -- 搜狗输入法安装完成之后的设置
  18. 克拉默法则的理解记忆方法
  19. 用SAPI做一个聊天模拟器
  20. 我知道的几个免费的API数据接口

热门文章

  1. 大师之路-GoLive 视频教程
  2. 【python】-- Django 中间件、缓存、信号
  3. 用Vue搭建一个应用盒子(二):datetime-picker
  4. Python的MySQLdb模块安装
  5. 构建iscsi网络存储服务
  6. 这一新的可视化方法教你优雅地探索相关性
  7. DOM 事件深入浅出(二)
  8. [Linux程序设计][调试][ElectricFence]
  9. 【贯穿】.NET6结合Docker傻瓜式实现容器编排
  10. Visual Studio 远程调试正在运行的进程