C# WCF与ASP.NET Web API
我花了几个月的时间试图掌握WCF背后的概念,最近我开发了我的第一个WCF服务应用程序 我很难理解配置文件中的所有设置。C# WCF与ASP.NET Web API,c#,wcf,asp.net-web-api,C#,Wcf,Asp.net Web Api,我花了几个月的时间试图掌握WCF背后的概念,最近我开发了我的第一个WCF服务应用程序 我很难理解配置文件中的所有设置。 我不相信环境,但似乎你可以用它做令人惊奇的事情 前几天,我发现微软推出了一款新产品,名为ASP.NET Web API 据我所知,它是一个RESTful框架,非常易于使用和实现 现在,我正试图找出这两个框架之间的主要区别,以及我是否应该尝试用新的API转换我的旧WCF服务应用程序 有人能帮我了解一下它们的区别和用法吗?新的是以前项目的延续(尽管有些是新的) WCF最初是为了支持
我不相信环境,但似乎你可以用它做令人惊奇的事情 前几天,我发现微软推出了一款新产品,名为ASP.NET Web API 据我所知,它是一个RESTful框架,非常易于使用和实现 现在,我正试图找出这两个框架之间的主要区别,以及我是否应该尝试用新的API转换我的旧WCF服务应用程序 有人能帮我了解一下它们的区别和用法吗?新的是以前项目的延续(尽管有些是新的)
WCF最初是为了支持基于SOAP的服务而创建的。对于更简单的RESTful或RPCish服务(想想像jQuery这样的客户机),ASP.NET Web API应该是不错的选择。ASP.NET Web API完全是关于HTTP和基于REST的GET、POST、PUT、DELETE以及众所周知的ASP.NET MVC编程风格和JSON可返回的;WebAPI适用于所有轻量级进程和纯HTTP组件。对于一个继续使用WCF的人来说,即使是简单或最简单的单一web服务,它也会带来所有额外的负担。对于ajax或动态调用的轻量级简单服务,WebApi只是解决了这一需要。这是对ASP.net MVC的巧妙补充或帮助
查看Scott Hanselman提供的详细信息。在下面列出的场景中,您应该选择WCF:
HTTP服务头指定如何保护服务、如何缓存信息、消息正文的类型,HTTP正文可以将HTML等任何类型的内容指定为SOAP服务,而不仅仅是XML。对于我们来说,WCF用于SOAP,Web API用于REST。我希望Web API也支持SOAP。我们没有使用WCF的高级功能。以下是来自以下方面的比较:
WCF将为您提供如此多的开箱即用,它甚至比不上任何东西。除非您想自己实现(仅举几例)身份验证、授权、加密、排队、节流、可靠消息传递、日志记录、会话等等。WCF不仅仅是web服务;WCF是一个面向SOA的开发平台。从业务角度讲,WebApi缺少WSDL,因此开发人员应该手动记录所有这些内容。例如,如果WebApi操作返回一个对象列表,那么客户端应该手动创建对象,即WebApi很容易出现定义错误 Webapi的pro比WCF更轻量级。关于“Webapi缺少WSDL”的说法,有几种方法可以生成Rest客户端。一种流行的方法是大摇大摆的用户界面(Swashbukkle Nuget)。这为理解REST端点的输入和输出模式提供了丰富的界面,并提供了测试端点的在线工具
JSON LD(JSON链接文档)是另一个新兴的标准,它将通过以更好的语义公开JSON模式来进一步改善基于JSON的REST开发人员体验。因为到目前为止,我一直在使用这两个标准,所以我发现WCF和Web API之间存在许多差异。这两种技术栈都非常适合不同的场景,所以不可能说哪种更好,这取决于配置和场景
Properties ASP.Net Web API WCF
--------------------------------------------------------------------------------------------------
End point (mainly) Http based SOAP based
Service Type Front End Back-end
Support caching, compression, versioning No
Framework ASP.net WCF
Orientation Resource Oriented Service Oriented
Transports http http, tcp, MSMQ, Named pipe
Message pattern Request reply request Reply, one way, duplex
Configuration overhead Less Much
Security lesser than WCF (web standard security) Very high (WS-I standard)
Hosting IIS IIS, Windows Service, Self hosting
Performance Fast A bit slower than Web API
In use from .NET 4.0 .NET 3.5
注意:这些数据不仅是我的观点,还从其他官方网站收集。MSDN上对此进行了比较 对我来说,选择是关于客户是谁,他们在哪里 在公司网络和基于.NET的客户端中:使用WCF和TCP绑定(比HTTP通信更快) 在公司网络之外,使用多种技术,如PHP、Python等:将Web API与REST结合使用我的回答是: 我花了大量的时间来理解这两种技术之间的区别。我将把所有这些观点都放在这里,我想“如果我在四处寻找答案的时候有这些观点,那么我会很早就决定选择我所需要的技术。” 资料来源: Microsoft®Visual Studio®2015发布 ISBN-13:978-0-672-33736-9 ISBN-10:0-672-33736-3 为什么使用ASP.NET Web API和WCF: 在比较ASP.NET Web API和WCF技术之前,重要的是要了解创建Web服务实际上有两种样式/标准:REST(表示状态传输)和SOAP/WSDL。SOAP/WSDL是构建web服务的原始标准。但是,它很难使用,而且有大量的消息格式(如XML),这会降低性能。基于REST的服务很快成为替代方案。它们更容易编写,因为它们利用了HTTP的基本构造(GET、POST、PUT、DELETE),并且通常使用较小的消息格式(如JSON)。因此,基于REST的HTTP服务现在是编写严格针对Web的服务的标准 让我们定义ASP.NET Web API的用途 ASP.NET Web API是Microsoft用于开发基于REST的HTTP Web服务的技术。(它很早以前就取代了基于SOAP/WSDL的Microsoft ASMX。)Web API使编写基于HTTP协议的健壮服务变得容易,所有浏览器和本机设备都能理解这些协议。这使您能够创建支持您的应用程序的服务,并从其他web应用程序、平板电脑、移动电话、PC和游戏控制台调用这些服务。大多数申请都是书面的