WebService,WCF,WebApi区别与特点

article/2025/10/5 14:18:01

WebService,WCF,WebApi区别与特点

于 2019-06-10 10:11:00 发布7872 收藏 32

文章标签: c# 测试 操作系统

版权

在.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服务中

 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

鞋垫无关的!!!但是对理解有帮助的!!

什么是WebService?

W3C组织对其的定义如下,它是一个软件系统,为了支持跨网络的机器间相互操作交互而设计。Web Service服务通常被定义为一组模块化的API,它们可以通过网络进行调用,来执行远程系统的请求服务。简单的说:WebService即Web服务,它是一种跨编程语言和跨操作系统平台的远程调用技术。

所谓跨编程语言和跨操作平台,就是说服务端程序采用Java编写,客户端程序则可以采用其他编程语言编写,反之亦然!跨操作系统平台则是指服务端程序和客户端程序可以在不同的操作系统上运行。

所谓远程调用,就是一台计算机a上的一个程序可以调用到另外一台计算机b上的一个对象的方法。譬如从天气预报系统中获取某个城市的天气数据在自己系统中进行展示;从证券交易系统中获取某只股票的交易信息在自己的系统中进行展示;又譬如一个商城系统中能够展示快递的跟踪信息,而这些信息就是通过webservice从具体的快递公司的系统中获取的数据。

其实可以从多个角度来理解WebService,从表面上看,WebService就是一个应用程序向外界暴露出一个能通过Web进行调用的API,也就是说能用编程的方法通过Web来调用这个应用程序。我们把调用这个WebService的应用程序叫做客户端,而把提供这个WebService的应用程序叫做服务端。从深层次看,WebService是建立可互操作的分布式应用程序的新平台,是一个平台,是一套标准。它定义了应用程序如何在Web上实现互操作性,你可以用任何你喜欢的语言,在任何你喜欢的平台上写Web service ,只要我们可以通过Web service标准对这些服务进行查询和访问。

Web Service = SOAP + HTTP + WSDL

SOAP Simple Object Access Protocol)协议是web service的主体,它通过HTTP或者SMTP等应用层协议进行通讯,自身使用XML文件来描述程序的函数方法和参数信息,从而完成不同主机的异构系统间的计算服务处理。这里的WSDL(Web Services Description Language)web 服务描述语言也是一个XML文档,它通过HTTP向公众发布,公告客户端程序关于某个具体的 Web service服务的URL信息、方法的命名,参数,返回值等。

WebService三要素:

1.SOAP (Simple Object Access Protocol):简易对象访问协议,soap用来描述传递信息的格式。

2.WSDL (WebServices Description Language):Web服务描述语言,用来描述WebService、以及如何访问WebService

3.UDDI (Universal Description Discovery and Integration):通用描述、发现及整合,用来管理、分发、

查询webService。

什么是WCF?

Windows Communication Foundation(WCF)是由微软开发的一系列支持数据通信的应用程序框架,可以翻译为Windows 通讯开发平台。整合了原有的windows通讯的 .net Remoting,WebService,Socket的机制,并融合有HTTP和FTP的相关技术。是Windows平台上开发分布式应用最佳的实践方式。

简单的归结为四大部分:

1>.网络服务的协议,即用什么网络协议开放客户端接入。

2>.业务服务的协议,即声明服务提供哪些业务。

3>.数据类型声明,即对客户端与服务器端通信的数据部分进行一致化。

4>.传输安全性相关的定义。

它是.NET框架的一部分,由 .NET Framework3.0 开始引入,与Windows Presentation Foundation及Windows Workflow Foundation并行为新一代 Windows操作系统以及 WinFX 的三个重大应用程序开发类库。在 .NET Framework2.0 以及前版本中,微软发展了 Web Service(SOAP with HTTP communication),.NET Remoting (TCP/HTTP/Pipeline communication) 以及基础的 Winsock 等通信支持。由于各个通信方法的设计方法不同,而且彼此之间也有相互的重叠性,对于开发人员来说,不同的选择会有不同的程序设计模型,而且必须要重新学习,让开发人员在使用中有许多不便。同时,面向服务架构(Service-Oriented Architecture) 也开始盛行于软件工业中,因此微软重新查看了这些通信方法,并设计了一个统一的程序开发模型,对于数据通信提供了最基本最有弹性的支持,这就是 Windows Communication Foundation。

Windows通信基础(Windows Communication Foundation,WCF)是基于Windows平台下开发和部署服务的软件开发包(Software Development Kit,SDK)。WCF为服务提供了运行时环境(Runtime Environment),使得开发者能够将CLR类型公开为服务,又能够以CLR类型的方式使用服务。理论上讲,创建服务并不一定需要WCF,但实际 上,使用WCF却可以使得创建服务的任务事半功倍。WCF是微软对一系列产业标准定义的实现,包括服务交互、类型转换、封送(Marshaling)以及 各种协议的管理。

正因为如此,WCF才能够提供服务之间的互操作性。WCF还为开发者提供了大多数应用程序都需要的基础功能模块,提高了开发者的效率。WCF的第一 个版本为服务开发提供了许多有用的功能,包括托管(Hosting)、服务实例管理(Service Instance Management)、异步调用、可靠性、事务管理、离线队列调用(Disconnected Queued Call)以及安全性。同时,WCF还提供了设计优雅的可扩展模型,使开发人员能够丰富它的基础功能。事实上,WCF自身的实现正是利用了这样一种可扩展 模型。本书的其余章节会专注于介绍这诸多方面的内容与特征。WCF的大部分功能都包含在一个单独的程序集System.ServiceModel.dll 中,命名空间为System.ServiceModel。

WCF是.NET 3.0的一部分,同时需要.NET 2.0的支持,因此它只能运行在支持它的操作系统上。目前,这些操作系统包括Windows Vista(客户端和服务器)、Windows XP SP2和Windows Server 2003 SP1以及更新的版本。


什么是Web API?

官方解释: 

ASP.NET Web API is a framework that makes it easy to build HTTP services that reach a broad range of clients, including browsers and mobile devices. ASP.NET Web API is an ideal platform for building RESTful applications on the .NET Framework. 

    

在图上可以看出来,Web API 与SignalR一起同为构建Service的框架。Web API负责构建http常规服务,而SingalR主要负责的是构建实时服务,例如股票,聊天室,在线游戏等实时性要求比较高的服务。 

  

为什么要用Web API?

Web API最重要的是可以构建面向各种客户端的服务。另外与WCF REST Service不同在于,Web API利用Http协议的各个方面来表达服务(例如 URI/request response header/caching/versioning/content format),因此就省掉很多配置。

WebApi 功能简介:

1.支持基于Http verb (GET, POST, PUT, DELETE)的CRUD (create, retrieve, update, delete)操作。

2.通过不同的http动作表达不同的含义,这样就不需要暴露多个API来支持这些基本操作。

3.请求的回复通过Http Status Code表达不同含义,并且客户端可以通过Accept header来与服务器协商格式,例如你希望服务器返回JSON格式还是XML格式。

5.请求的回复格式支持 JSON,XML,并且可以扩展添加其他格式。

6.原生支持OData。

7.支持Self-host或者IIS host。

8.支持大多数MVC功能,例如Routing/Controller/Action Result/Filter/Model Builder/IOC Container/Dependency Injection。

什么地方需要用Web API?

当你遇到以下这些情况的时候,就可以考虑使用Web API了。

需要Web Service但是不需要SOAP

需要在已有的WCF服务基础上建立non-soap-based http服务

只想发布一些简单的Http服务,不想使用相对复杂的WCF配置

发布的服务可能会被带宽受限的设备访问

希望使用开源框架,关键时候可以自己调试或者自定义一下框架

Web API 与MVC的区别

MVC主要用来构建网站,既关心数据也关心页面展示,而Web API只关注数据

Web API支持格式协商,客户端可以通过Accept header通知服务器期望的格式

Web API支持Self Host,MVC目前不支持

Web API通过不同的http verb表达不同的动作(CRUD),MVC则通过Action名字表达动作

Web API内建于ASP.NET System.Web.Http命名空间下,MVC位于System.Web.Mvc命名空间下,因此model binding/filter/routing等功能有所不同 最后,

Web API非常适合构建移动客户端服务

WebService,WCF,WebApi区别与特点

转载于:https://www.cnblogs.com/Freedom0221/p/10996245.html


http://chatgpt.dhexx.cn/article/dQhlhjhB.shtml

相关文章

WCF入门讲解

一、简单WCF服务TCP和HTTP传输协议 二、实例管理 1、实例管理-单调服务 介绍:单调服务的一个实例创建于每个方法调用之前,调用完成后会立即销毁该服务实例。 2、实例管理-会话 介绍:一个配置了私有会话的服务通常无法支持多达几十个&#x…

关于WCF服务的使用(非常详细的步骤)

(附上一篇对WCF基础讲解挺详细的一篇文章http://www.cnblogs.com/wayfarer/archive/2008/04/15/1153775.html) WCF是.NET提供的一种服务,可以将自己写的程序(完成特定功能,比如从数据库中读取数据操作等&#xff09…

WebService、WCF、WebAPI之间的区别

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

WCF 简介

一、WCF概述 1) 什么是WCF? Windows Communication Foundation (WCF) 是用于构建面向服务的应用程序的框架。借助 WCF,可以将数据作为异步消息从一个服务终结点发送至另一个服务终结点。服务终结点可以是由 IIS 承载的持续可用的服务的一部分…

网络编程之WCF编程:WCF服务和客户端的建立,回调

1.概念 Windows Communication Foundation(WCF)是由微软发展的一组数据通信的应用程序开发接口,可以翻译为Windows通讯接口。它是.NET框架的一部分,由 .NET Framework 3.0 开始引入。 WCF的终结点有三个要素组成,分别是地址(Add…

WCF 学习总结2 -- 配置WCF

前面一篇文章《WCF 学习总结1 -- 简单实例》一股脑儿展示了几种WCF部署方式,其中配置文件(App.config/Web.config)都是IDE自动生成,省去了我们不少功夫。现在回过头来看看IDE提供的Wcf Service Library项目模板中的默认服务端配置文件——App.config里面…

[老老实实学WCF] 第一篇 Hello WCF

老老实实学WCF 第一篇 Hello WCF WCF(Windows Communication Foundation)是微软公司推出的面向服务技术的集大成者,涵盖继承了其之前发布的所有的分布式应用程序的编程模型,涉及面之广,技术之复杂,结构之零散,让我们…

WCF入门教程(一)

WCF入门教程(一) 一、 概述二、基于Asp.net 的应用程序开发与面向服务开发三、第一个WCF程序IUser代码:User代码 四、场景五、将WCF程序寄宿在B服务器的IIS之上六、在客户端[A服务器]创建服务的引用七、使用WCF的方法九、代码下载 一、 概述 Windows Co…

WCF简介

WCF是Windows Communication Foundation的缩写,是MS为SOA(Service Oriented Architecture 面向服务架构)而设计的一套完整的技术框架。WCF是Microsoft为构建面向服务的应用提供的分布式通信编程框架,使用该框架,开发人员可以构建跨…

无废话WCF入门教程一[什么是WCF]

一、概述 Windows Communication Foundation(WCF)是由微软发展的一组数据通信的应用程序开发接口,可以翻译为Windows通讯接口,它是.NET框架的一部分。由 .NET Framework 3.0 开始引入。 WCF的最终目标是通过进程或不同的系统、通过本地网络或是通过Inter…

C# WCF入门

目录标题 一、什么是WCF二、第一个WCF程序三、WCF服务的使用 一、什么是WCF WCF是使用托管代码建立和运行面向服务(Service Oriented)应用程序的统一框架。它使得开发者能够建立一个跨平台的、安全、可信赖、事务性的解决方案,且能与已有系统兼容协作。WCF是微软分…

wcf学习--建立最简单的WCF服务

在VS2010里建立一个最简单的WCF服务,基本流程如下: 一:新建WCF应用 首先,新建一个WCF服务的应用(这里以framework 4.0为例),如下图所示, 建立完成之后,VS将自动生成一个最…

什么是WCF

文章目录 一、概述二、基于Asp.net 的应用程序开发与面向服务开发三、第一个WCF程序四、场景五、将WCF程序寄宿在B服务器的IIS之上六、在客户端[A服务器]创建服务的引用七、使用WCF服务端的方法 一、概述 Windows Communication Foundation(WCF)是由微软发展的一组数据通信的应…

面向服务的WCF编程(一)

第七章:WCF入门 课后习题: 1.简要介绍WCF服务的承载方式及其特点。 WCF服务的承载方式包括:利用IIS或者WAS承载、利用Windows服务承载、自承载。其特点如下: (1)用IIS或者WAS承载:这是最常用…

WCF 详解

一、什么是WCF? ​ .NET Framework 3.0 中开始引入一种专门用来构建分布式系统的API——WCF,与过去所有的其他分布式API(如DCOM,.NET Remoting,XML WebService,消息队列)有所不同,WCF提供统一的,可扩展的编…

Windows内核原理与实现之 GDI (图形设备接口)

文章摘录自《Windows内核原理与实现》一书。 图形用户界面是 Windows 操作系统的重要特色,这也是在 Windows 子系统中提供的。概括而言,Windows 的图形系统有两方面特点:首先,它提供了一套与设备无关的编程接口,即 G…

windows 驱动与内核调试 学习

概述 本文讲述笔者在学习内核和驱动开发的笔记。 驱动概述 一般驱动需要运行内核权限下运行(因为涉及硬件读取),比如Intel下的ring 0 权限下。在windwos大量病毒和杀软为了特殊目的往往都是通过将自身升级为内核驱动方式进行运作。如果病毒程序首先进入ring 0理论…

Windows内核--CPU和内核(1.7)

Windows内核支援哪些CPU? Intel x86/x86_64 IA64已不再支持. AMD amd64 ARM (Windows On Arm: WOA) ARM具备低功耗优势, 除了高通, 还有Broadcom/NXP等都支援ARM架构. 苹果自研M系列开了头,ARM不仅有低功耗,同样有性能,Windows也想分一杯羹…

windows内核驱动

内核&驱动基础 WDK(Windows Driver Kit) 内核编程需要使用WDK WDK 下载 windows xp wdk 下载地址 WDK 安装 勾选所有的安装项,避免错过一些例子 默认安装目录: C:\WinDDKfirst驱动开发 源码 first.c #include <ntddk.h>#define DEBUG/** 卸载函数*/ VOID Driver…

Windows 内核会换为 Linux 吗?

关注、星标公众号&#xff0c;不错过精彩内容 来源&#xff1a;网络 编辑整理&#xff1a;strongerHuang 如果装个纯linux&#xff0c;则一些windows软件没法用。如果用windows然后装个虚拟机&#xff0c;在虚拟机上安装linux&#xff0c;又感觉麻烦而且占用电脑资源。 现在win…