【问题标题】:difference between WCF Services and Web Services and REST ServiceWCF 服务与 Web 服务和 REST 服务之间的区别
【发布时间】:2012-03-19 05:14:08
【问题描述】:

.net 中的 WCF 服务和 Web 服务有什么区别
什么时候应该使用 WCF,什么时候应该使用 Web 服务。REST 和 WCF 服务是否相同?谢谢

【问题讨论】:

  • WCF vs ASMX web service 的可能重复项
  • 请花一点时间搜索以前的问题。我刚刚输入了“WCF vs ASMX”并在列表顶部找到了重复项。

标签: wcf web-services rest


【解决方案1】:

Web 服务 是一个抽象术语,包含用于分布式系统的大量数据提供者。也许您指的是 ASMX Web 服务,它仍然可以在野外找到,但目前在新开发中并未真正广泛使用。

WCF 服务 是 Microsoft 的 SOAP 实现。还有其他实现,或者您可以自己推出(不推荐)。

SOAP 是一种有状态、基于会话、基于消息的 Web 服务。如果您的服务设计为一组复杂的操作,那就太好了。

REST 是一种无状态、无会话、基于资源的 Web 服务。如果您的服务旨在访问数据并对其执行简单的 CRUD 操作,那就太好了。 SOAP 和 REST 是互斥的。一项服务不能两者兼而有之。有一些方法可以操纵 vanilla WCF 使其成为 RESTful,但这些技术正在被弃用。如果您想实现 RESTful Web 服务,在 Microsoft 世界中有两个主要选择:WCF 数据服务和 ASP.NET Web API。

【讨论】:

  • “已弃用”这个词太强了。此外,在 WCF 中,可以使用 REST 和 SOAP 绑定公开相同的服务。
  • 除了无状态、基于资源的 CRUD 之外,REST 架构还有很多其他功能。两个最关键的组件是内容类型和使用超文本作为应用程序状态的引擎。
【解决方案2】:

REST 是一个架构

WCF 是 .NET Framework 中的 API,用于构建连接的面向服务的应用程序。

在过去,作为 Web 服务开发的功能可通过 Internet 访问,而在本地网络上可用的功能可通过 Remoting 获得。

使用 WCF,我们无需开发不同的代码即可通过 Internet 和本地网络访问它。只需使用绑定对其进行配置就足够了。

【讨论】:

    【解决方案3】:

    这是一个非常广泛的问题......我将只给出一个简短的高级答案,并建议您进行更多搜索,因为每个主题已经有很多内容了。但是,希望这能让您朝着正确的方向前进。

    首先,通常当人们提到 WCF 服务和 Web 服务时,他们指的是使服务调用相当通用的较新的 WCF 约定(它们可以是 SOAP、REST 等)和旧的 .asmx SOAP 方法的 Web 服务.因此,按照这些思路,我建议更多地研究 WCF 和 SOAP/.ASMX,以了解 WCF 和旧 Web 服务的区别。

    对于 WCF 和 REST,它们是不一样的。 REST 更像是一种架构,而 WCF 是一种框架。正如我已经提到的,WCF 可用于进行 SOAP 调用或 REST 调用。我不确定我是否可以添加更多而不涉及更详细的内容。

    不过,稍后我会看看能否找到一些关于 REST 和 WCF 的好文章。就个人而言,我认为甚至没有理由深入研究调用 Web 服务(.ASMX 页面)的旧方式,因为 WCF 几乎已经过时了。但是,学习许多不同的给猫剥皮的方法可能有助于找到最适合您的方法。

    同样,这是非常高的水平,但这些都是非常笼统的主题,每个主题都有很多内容,因此希望高水平的概述将有助于指导您更深入地研究每个主题。

    【讨论】:

    • 一些人说“Web Services”时的意思是“ASMX”。其他人只是使用“Web Services”来表示通用技术,并认为 WCF 是当前在 .NET 平台上创建 Web Services 的方式。那将包括我。另一种是“ASMX Web 服务”,区别于“WCF Web 服务”。
    • @JohnSaunders 你是对的,我想我没有回答这个问题,因为它要求不同,所以我的想法走上了这条路。但是,您是对的,一般来说,大多数人只是指泛型技术的 Web 服务。
    【解决方案4】:

    有些人说“Web 服务”时的意思是“ASMX”。

    其他人只是使用“Web Services”来表示通用技术,并认为 WCF 是当前在 .NET 平台上创建 Web Services 的方式。另一种是“ASMX Web 服务”,与“WCF Web 服务”不同。

    “其他类型”是一种遗留技术,仅支持向后兼容。它们不应该用于新的开发,所以你没有必要学习它们。

    正如其他人所说,“REST”是一种架构风格,而不是一种技术。

    【讨论】:

      【解决方案5】:

      WCF 是多方面的,所以我将就其最常见的用法来谈谈它。 WCF 和 REST 服务之间的一般区别在于内容。 REST 调用通常更以消息/文档/实体为中心(对于客户实体,查找以 M 开头的实体;对于订单实体,获取订单 12 并绑定到 HTTP 协议。WCF 倾向于以操作为中心(调用查找操作参数,使用参数调用 get 操作)。WCF 也不绑定到 HTTP。

      仅供参考,有一些扩展可以使用 WCF(WebInvoke、WebGet 属性)创建基于 REST 的服务。

      【讨论】:

      • WCF 和 REST 最大的区别在于一个是框架,一个是架构。因此,真正比较两者变得更加困难。这甚至触及了为什么可以使用 WCF 创建 RESTful 服务的核心,因为可以使用框架来实现架构。
      • 您真正比较的是 SOAP 和 REST。
      • 我知道这更多的是关于 SOAP 和 REST,因此“就其最常见的用法而言”,它是针对 SOAP 服务的。这个问题听起来有点像是来自新人,但了解 WCF 101 级别的概念,并且不想让他超负荷。
      【解决方案6】:

      Wcf:wcf 是一种作为 .net 框架一部分的技术,它通过遵循统一的编程模型,为使用不同的分布式技术提供环境。 wcf 创建一个代理。 wcf 支持数据契约序列化器。 记录显示为xml格式。

      **Rest:**Rest 是一种架构风格。它表示以更有效、更高效和简单的方式使用 Web 的现有功能。插入、更新和删除等动词。 Rest 无法创建代理。 其余记录显示jason格式。

      网络服务:托管在网站上的服务称为网络服务。 Web服务支持xmlserializer

      【讨论】:

        【解决方案7】:

        我看到这是一个相当老的帖子,但我最近问了一个类似的问题。

        给出的答案都具有相似的相关性,但在我看来,雷是最接近实际问题的答案。 在设计或重构基于 Web 的解决方案时,您总是会问我们应该使用 SOAP 还是 REST。答案在于服务背后所需的业务逻辑的复杂性。 REST 适用于简单的 API 调用,这些调用通常包含少量请求的数据集或大型数据集的夜间处理,但主要用于数据请求。 SOAP 更像是一种具有业务逻辑的交互式日常服务。例如,许多方法具有大量参数。

        作为我们基于网络的解决方案的一部分,我们所做的是尝试并利用两者。对于内部方法和主要功能,我们使用 SOAP,但对于公开的 API,我们更喜欢 REST。 框架相关,绝对首选 WCF,无论是 SOAP 还是 REST。

        【讨论】:

          猜你喜欢
          • 2017-10-02
          • 2011-03-02
          • 2010-11-29
          • 2015-01-05
          • 1970-01-01
          • 1970-01-01
          • 2017-01-06
          • 2013-09-24
          • 2014-10-22
          相关资源
          最近更新 更多