WCF与Web API:为您的项目选择什么

WCF与Web API:为您的项目选择什么
2018年02月05日 08:00 帅的相对论

如果您正在为组织的Intranet开发,请查看WCF。如果您有兴趣为更大的Web创建应用程序,请尝试Web API。

比较WCF和Web API时,确实很难做出选择。这些框架通常在功能和方法上相互重叠。不言而喻,这些技术之间的最终决策将长期对项目产生重大影响。在本文中,我们将探讨WPF和Web API的主要特性和用例,以帮助您确保所选技术最适合您的开发需求。

Web API基础

框架ASP.NET Web API用于开发可供使用手机,浏览器和平板电脑的客户端使用的HTTP服务。它与ASP.NET MVC类似,因为它由MVC功能(如路由,控制器,过滤器,操作结果,IOC容器,模型绑定器和依赖注入)组成。不过,这不是MVC框架的一部分。这是ASP.NET核心平台的一个方面,可以与MVC和类似的Web应用程序(如ASP.NET WebForms)一起使用。它也可以作为一个单独的Web服务应用程序。

  • 这个新的框架很容易构建HTTP服务。

  • Web API是开源的,使其成为通过.NET Framework创建RESTful服务的完美平台。

  • 与WCF Rest服务相反,它使用HTTP的完整功能(例如响应/请求标头,URI,缓存,版本控制和多种内容格式)。

  • MVC功能支持控制器,路由,过滤器,动作结果,IOC容器,模型绑定器或依赖注入,以及单元测试,从而简化它并使其更加强大。

  • 它可以托管在IIS上或应用程序中。

  • 其轻巧的设计使其成为最小带宽设备的理想选择。

  • 回复由Web API的MediaTypeFormatter格式化为XML,JSON或您希望作为MediaTypeFormatter添加的任何其他格式。

为什么ASP.NET Web API?

如今,基于网络的应用程序不足以瞄准新客户。人是聪明的;他们正在定期使用移动设备。这些设备有大量的应用程序来简化用户的生活。事实上,我们正在越来越多地从网络走向应用程序。

如果您想快速轻松地向浏览器和现代设备应用展示服务数据,则必须具有与所有设备和浏览器兼容的API。例如,Facebook,Twitter和Google API用于开发电话应用程序和Web应用程序。

如果直接比较WCF和Web API,Web API是向各种设备展示数据和服务的理想框架。此外,Web API是开源的,使其成为通过.NET Framework创建RESTful服务的完美平台。与WCF Rest服务相反,它使用HTTP的完整功能(例如响应/请求标头,URI,版本控制,缓存和众多内容格式)。此外,与WCF Rest服务相反,您无需为单个设备建立任何其他配置设置。

WCF简而言之

Windows Communication Foundation(WCF)用于生成可互操作的分布式应用程序。WCF应用程序是在.NET 3.0中引入的。面向服务的应用程序是用这个框架创建的。其他用途包括:

  • 只支持HTTP协议。

  • 它基于XML格式的返回数据和SOAP。

  • 只有IIS可以托管它。

  • 任何了解XML的客户都可以使用它,但不是开源的。

  • 它通过[WebInvoke]和[WebGet]属性支持HTTP POST和GET动词。

  • 如果需要使用WCF作为WCF Rest服务,则必须启用webHttpBindings。

  • 使用WebGet通过参数发送数据保证配置。UriTemplate必须是特定的。

  • 要允许其他HTTP动词,您需要将IIS配置为接受.svc文件请求。

  • 支持JSON,XML和ATOM数据格式。

为什么WF?

如果你有几个客户,并且希望使用一个Web服务,它使用HTTP协议通过网络传输数据,并且想要以XML格式进行响应,我们将开发一个Web服务。

我们也可以使用TCP协议通过网络使用Web服务传输数据,并以二进制格式进行响应。我们将使用TCP协议来实现远程Web服务。

在这种情况下,我们必须为几个独立的客户端开发几个单独的服务。WCF解决了这个问题,因为它允许一对个人客户端使用一个服务,不管他们想要一个不同的协议还是同一个客户端。我们解决协议名称和Web服务的端点属性。所有这些因素都为WCF和Web API竞争提供了WCF优势。

WCF与Web API

选择Microsoft堆栈作为开发定制软件的主要套件技术,我们经历了许多决定WCF与Web API之间的艰难决策。根据常见的类别,这里有几个例子可以让你更容易。

安全

在比较WCF和Web API时,两个框架都已经接受了安全标准。对于WCF,熟练的安全专家和框架可以在企业级提供保护,其中包括符合WS-I(Web服务互操作性组织)准则的安全性。在Web API中,除了像OAuth这样更复杂的Web标准之外,通用Web标准还被用于安全性,如令牌和基本认证。如果正确执行,两个框架的安全性将与另一个框架一样有效,同时牢记几个组织有时需要精确的保护措施。但是,RESTful服务比SOAP更具适应性,在对Google,Windows Live ID,Twitter或Facebook等外部服务进行身份验证时可能会有帮助。

用途/功能

如前所述,SOAP服务必须是面向操作的,OData / REST必须非常面向资源。虽然所有面向操作的服务都可以更改为面向资源的服务,但有几个实例可能会导致多个REST调用;这会在调用服务时产生额外的开销,使客户端的代码更加复杂,并且可能会导致系统开发不良。正确开发的REST服务必须能够通过间接步骤来缓解这一点。例如,为消费者购买产品的SOAP调用可以:

  • 产生一个订单。

  • 最大限度地减少项目的库存数量。

  • 生成一个新的航运工作。

  • 更新客户的订单历史记录和详细信息。

这个单独的SOAP调用可能导致四个独立的REST调用更新所有这些资源,或者在正确开发的系统中,产生(POST)PurchaseOrder调用,激发动作以根据需要更新剩余资源。简而言之,RESTful服务必须是基础的,原子的,而SOAP服务则具有复杂和庞大的适应性。

因为可以在URL中自由访问,所以REST服务比SOAP服务更容易找到。此外,适当的REST服务足够聪明,只要幂等性和端点被关心。

例如,www.domainname.com/api/Employees/1为员工提供了1的ID,那么可以很简单地确定www.domainname.com/api/Employee/2给员工一个ID为2的ID。只要您了解该服务也是由客户组成的,那么建立www.domainname.com/api/Client/1为客户提供的ID为1是很简单的。就像智能一样,使用HTTP操作可以表示呼叫在REST服务中的幂等性。例如,PUT操作必须是幂等的,因为你使用精确的值来更新字段。在SOAP服务中类似的调用可能不是简单的建立,不管它是否是幂等的。

开销编码

在客户端,很容易使用HTTP来调用RESTful服务,但是反序列化和序列化项目,硬编码资源端点以及复制个性化的可返回类可能会很麻烦;与Web服务的最低级别的参与在SOAP服务中自动抽象。就服务方面而言,WCF由许多配置组成,并保证细致的XML工作来正确配置它。另一方面,Web API具有更为常见的即用型设置,对于大多数服务都是有效的,并提供延长基本服务的个性化服务,例如在需要时处理序列化的媒体类型格式化程序。

客户端互操作性

RESTful服务以及Web API集中于易用性和轻量级。使用相同的HTTP调用,所有可以访问网站的应用程序也可以访问RESTful服务。如果直接比较WCF和Web API,则这与SOAP不同,因为客户端在使用WSDL文件时需要了解Web服务的内部和外部。WSDL配置补充了一些复杂性,并保证了某些设备(智能电视,手机等)以及框架和编程语言可能无法访问的额外细节。

带宽/速度

由于RESTful服务只使用基本的HTTP,因此响应和请求数据包通常小于SOAP响应和请求数据包,它们将对象,参数,元数据等封装在XML有效负载中。在处理低带宽或移动设备时,这是至关重要的。简单的HTTP响应/请求通常比SOAP响应/请求更易于人们阅读;虽然这不是那么重要,因为这些服务往往是程序化的消费。

如何在WCF和Web API之间进行选择

  • 选择WCF,当你想产生一个服务,将有利于特定的情况,如单向信息,消息队列,双工通信,消息队列等

  • 如果要生成使用快速传输通道的服务(如命名管道,TCP或甚至UDP(在WCF 5中)),请选择WCF。其他传输通道不可用时,您还需要支持HTTP。

  • 如果要通过HTTP生成资源相关服务(利用HTTP的完整功能(如响应/请求标头,URI,版本控制,缓存和众多内容格式),请选择Web API。

  • 当您想要使用手机,浏览器和平板电脑将服务展示给各种客户端时,请选择Web API。

在WCF和Web API竞争中选择一个胜利者是不可能的,并且说明一个选项比另一个更好。在开发新的Web服务时,有一个简单的方法来确定哪个框架最适合。如果是互联网/外部Web服务,则使用Web API;如果是Intranet /内部Web服务,请使用WCF。

财经自媒体联盟更多自媒体作者

新浪首页 语音播报 相关新闻 返回顶部