Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WCF与ASP.NET Web API_C#_Wcf_Asp.net Web Api - Fatal编程技术网

C# WCF与ASP.NET Web API

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最初是为了支持

我花了几个月的时间试图掌握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:

  • 如果需要通过TCP、MSMQ或MIME等协议发送数据
  • 如果消费客户端只知道如何消费SOAP消息
  • WebAPI是开发RESTful/HTTP服务的框架

    有太多的客户端不理解类似SOAP的浏览器HTML5,在这些情况下,WEB API是一个不错的选择


    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和游戏控制台调用这些服务。大多数申请都是书面的