Lef*_*tyX 478 c# wcf asp.net-web-api
我花了几个月的时间试图掌握WCF背后的概念,最近我开发了我的第一个WCF服务应用程序.
我很难理解配置文件中的所有设置.
我不相信环境,但似乎你可以用它做出惊人的东西.
前几天我发现微软已经推出了一款名为ASP.NET Web API的新产品.
我可以阅读它是一个RESTful框架,非常易于使用和实现.
现在,我试图找出2个框架之间的主要区别,以及是否应该尝试使用新API 转换旧的 WCF服务应用程序.
有人可以帮我理解每个的差异和用法吗?
mar*_*ind 181
新的ASP.NET Web API是以前的WCF Web API项目的延续(尽管一些概念已经改变).
WCF最初是为了启用基于SOAP的服务而创建的.对于更简单的RESTful或RPCish服务(想想像jQuery这样的客户端),ASP.NET Web API应该是不错的选择.
Nav*_*jay 80
ASP.net Web API是基于HTTP和REST的GET,POST,PUT,DELETE,具有众所周知的ASP.net MVC编程风格和JSON可返回性; web API适用于所有轻量级进程和基于纯HTTP的组件.对于即使是简单或最简单的单一Web服务也可以继续使用WCF,它将带来所有额外的行李.对于ajax或动态调用的轻量级简单服务,WebApi总能满足需求.这与ASP.net MVC并行地完美补充或有所帮助.
看看播客:Hanselminutes Podcast 264 - 这不是你父亲的WCF - 有关更多信息,请参阅Scott Hanselman 与Glenn Block的WebAPI.
小智 66
在下面列出的场景中,您应该选择WCF:
WEB API是用于开发RESTful/HTTP服务的框架.
有很多客户端不理解像浏览器,HTML5这样的SOAP,在这些情况下,WEB API是一个不错的选择.
HTTP服务标头指定如何保护服务,如何缓存信息,消息体的类型和HTTP主体可以指定任何类型的内容,如HTML,而不仅仅是XML作为SOAP服务.
Raj*_*put 40
自从使用到现在为止,我发现WCF和Web API之间存在很多差异.两种技术都适用于不同的场景.所以不可能说哪个更好,这取决于配置和方案.
注意:数据不仅仅是我的观点,这也是从其他官方网站收集的.
tri*_*idy 34
WCF将为您提供如此多的开箱即用,它甚至无法与任何东西相提并论.除非您想要自己实现(仅举几例)身份验证,授权,加密,排队,限制,可靠消息传递,日志记录,会话等.WCF不是[仅] Web服务; WCF是SOA的开发平台.
Wiq*_*iqi 14
我花了很多时间来理解这两种技术之间的区别.我会把所有这些观点放在这里我认为"如果我在寻找这个答案的时候想到了这些点,那么我早就决定选择我所需要的技术了."
Microsoft®VisualStudio®2015Unleashed
ISBN-13:978-0-672-33736-9 ISBN-10:0-672-33736-3
在比较ASP.NET Web API和WCF的技术之前,重要的是要了解创建Web服务实际上有两种样式/标准:REST(Representational State Transfer)和SOAP/WSDL.SOAP/WSDL是构建Web服务的原始标准.但是,它很难使用并且具有笨重的消息格式(如XML),从而降低了性能.基于REST的服务很快成为替代方案.它们更容易编写,因为它们利用HTTP的基本结构(GET,POST,PUT,DELETE),并且通常使用较小的消息格式(如JSON).因此,基于REST的HTTP服务现在是编写严格针对Web的服务的标准.
ASP.NET Web API是Microsoft用于开发基于REST的HTTP Web服务的技术.(它早已取代了基于SOAP/WSDL的Microsoft ASMX.)Web API可以轻松编写基于所有浏览器和本机设备都能理解的HTTP协议的健壮服务.这使您可以创建服务以支持您的应用程序,并从其他Web应用程序,平板电脑,移动电话,PC和游戏控制台调用它们.今天编写的大多数利用现有Web连接的应用程序都以某种方式使用HTTP服务.
通过互联网进行通信并不总是最有效的手段.例如,如果客户端和服务都存在于同一技术(甚至是同一台机器)上,它们通常可以协商更有效的通信方式(例如TCP/IP).服务开发人员发现自己做出了他们试图避免的相同选择.他们现在必须在创建有效的内部服务和能够通过互联网获得广泛访问权之间做出选择.而且,如果他们必须支持两者,他们可能必须创建其服务的多个版本或至少单独的代理来访问他们的服务.这是微软用WCF解决的问题.
使用WCF,您可以创建服务而无需考虑边界.然后,您可以让WCF担心以最有效的方式运行您的服务,具体取决于调用客户端.为了管理此任务,WCF使用端点的概念.您的服务可能有多个端点(在设计时或部署后配置).每个端点都指示服务如何支持调用客户端:通过Web,通过远程处理,通过Microsoft消息队列(MSMQ)等.WCF使您可以专注于创建服务功能.它担心如何最有效地与呼叫客户交谈.通过这种方式,单个WCF服务可以有效地支持许多不同的客户端类型.
考虑这个例子:
客户数据在应用程序之间共享.每个应用程序可能写在不同的平台上,并且可能存在于不同的位置.您可以将客户界面提取到WCF服务中,该服务提供对共享客户数据的公共访问.这可以集中数据,减少重复,消除同步并简化管理.此外,通过使用WCF,您可以将服务端点配置为以对调用客户端有意义的方式工作.该图显示了之前在WCF服务中集中访问客户数据的示例.
无可否认,基于REST的HTTP服务(如使用ASP.NET Web API创建的服务)已成为构建Web服务的标准.这些服务为Web开发人员构建服务提供了一种简单,直接的方法.Web开发人员了解HTTP GET和POST,因此很好地适应了这些类型的服务.因此,如果您正在编写严格针对HTTP的服务,ASP.NET Web API是合乎逻辑的选择.
当您需要基于不同协议和消息格式支持多个服务端点时,WCF技术非常有用.Microsoft BizTalk等产品利用WCF创建可通过Web使用的强大服务以及通过不同的机器到机器配置.但是,如果您需要编写一个通过TCP/IP进行通信的应用程序连接到本地网络和网络外的HTTP工作,WCF是你的答案.
Web开发人员经常将WCF视为更难以开发和复杂的开发.因此,如果您没有预见到需要多协议服务,那么您可能会坚持使用ASP.NET Web API.
小智 12
在MSDN上对此进行了比较
对我来说,选择是关于客户是谁,他们在哪里?
在公司内部基于网络和.NET的客户端:使用带有TCP绑定的WCF(快速通信而不是HTTP)
在公司网络之外,使用PHP,Python等各种技术:使用带有REST的Web API
业务来讲,WebApi缺乏WSDL,因此开发人员应该手动记录所有文档.例如,如果WebApi操作返回对象列表,那么客户端应该手动创建对象,即WebAPI确实容易出现定义错误.
Webapi的专业版比WCF更轻量级.
关于"WebApi缺少WSDL"的声明,有几种方法可以生成Rest客户端.一种流行的方法是Swagger UI /(Swashbukkle Nuget).这提供了丰富的界面来理解REST端点的输入和输出模式以及用于测试端点的在线工具.
JSON LD(Json Linked Documents)是另一个新兴标准,它将通过更好的语义暴露JSON模式来进一步改进基于JSON的REST开发人员体验.
| 归档时间: |
|
| 查看次数: |
211554 次 |
| 最近记录: |