【问题标题】:Difference between traditional web service and Web api in asp.netasp.net中传统web服务和web api的区别
【发布时间】:2014-11-14 16:49:34
【问题描述】:

三年前,我在 Visual Studio 2010 中创建了 Web 服务。我在我的 winform 项目中使用这个 Web 服务来执行一些在线功能。现在我想在 Visual Studio 2013 中创建 Web 服务。这里我看到的是 Web api 而不是传统的 Web 服务。所以我的问题是,传统的 Web 服务和 Web api 有什么区别?我可以在 Web api 中实现与在传统 Web 服务中相同的功能吗?

【问题讨论】:

  • 什么是传统 Web 服务? WCF Web 服务?
  • 我的意思是当我们在 Visual Studio 2010 中创建新项目并选择 Web 服务时。Visual Studio 2013 中缺少此选项。
  • 没有web service这样的选项,我想你说的是wcf
  • WCF vs ASP.NET Web API 的可能重复项
  • 对不起,如果我没有告诉你清楚。我正在 Visual Studio 2008 中创建 asp.net Web 服务(它是 WCF Web 服务吗?),然后在我的 win 表单应用程序中调用/连接这个 Web 服务。有关此 Web 服务的参考,请参见此 URL:c-sharpcorner.com/UploadFile/4d9083/…。请告诉我这种类型的Web服务可以用Web API开发吗?因为我在 Visual Studio 2013 中看不到 Web 服务选项,谢谢。

标签: asp.net web-services asp.net-web-api


【解决方案1】:

ASP.NET 中的 Web 服务

Web 服务是可通过标准 Web 协议访问的可编程应用程序逻辑。这些 Web 协议之一是简单对象访问协议 (SOAP)。 SOAP 是 W3C 提交的一份说明(截至 2000 年 5 月),它使用基于标准的技术(用于数据描述的 XML 和用于传输的 HTTP)来编码和传输应用程序数据。

Web 服务的消费者不需要了解用于实现服务的平台、对象模型或编程语言;他们只需要了解如何发送和接收 SOAP 消息(HTTP 和 XML)。

WCF 服务

Windows Communication Foundation (WCF) 是用于构建面向服务的应用程序的框架。使用 WCF,您可以将数据作为异步消息从一个服务终结点发送到另一个服务终结点。服务端点可以是 IIS 托管的持续可用服务的一部分,也可以是应用程序中托管的服务。端点可以是从服务端点请求数据的服务的客户端。消息可以像 XML 发送的单个字符或单词一样简单,也可以像二进制数据流一样复杂。

在什么情况下必须使用 WCF

  • 用于处理业务交易的安全服务。
  • 一种向他人提供当前数据的服务,例如交通报告或其他监控服务。
  • 一种聊天服务,允许两个人实时交流或交换数据。
  • 一种仪表板应用程序,用于轮询一个或多个服务以获取数据并将其以逻辑表示形式呈现。
  • 将使用 Windows Workflow Foundation 实现的工作流公开为 WCF 服务。

  • 用于轮询服务以获取最新数据的 Silverlight 应用程序 供稿。

WCF 的特点

  • 服务导向。
  • 互操作性。
  • 多种消息模式。
  • 服务元数据。
  • 数据合同。
  • 安全性。
  • 多种传输和编码。
  • 可靠和排队的消息。
  • 持久消息。
  • 交易。
  • AJAX 和 REST 支持。
  • 可扩展性。

ASP.NET 中的 Web Service 与 WCF Service 的区别

WCF 是 Microsoft 早期所有 Web 服务技术的替代品。它的功能也远远超过传统意义上的“网络服务”。

WCF“Web 服务”是通过 WCF 实现的更广泛远程通信的一部分。您将在 WCF 中获得比通过传统 ASMX 更高程度的灵活性和可移植性,因为 WCF 从头开始​​设计,总结了 Microsoft 提供的所有不同的分布式编程基础结构。 WCF 中的端点可以通过 SOAP/XML 与通过 TCP/二进制文件进行通信一样容易,并且更改此介质只需一个配置文件 mod。理论上,这可以减少移植或更改业务需求、目标等时所需的新代码量。

ASMX 比 WCF 更早,并且任何 ASMX 可以做到的事情都可以 WCF(以及更多)。基本上,您可以将 WCF 视为试图将在 Microsoft 世界中让两个应用程序进行通信的所有不同方式逻辑地组合在一起; ASMX 只是众多方式中的一种,因此现在归入 WCF 功能的保护伞下。

Web 服务只能通过 HTTP 访问,它可以在无状态环境中工作,其中 WCF 很灵活,因为它的服务可以托管在不同类型的应用程序中。托管 WCF 服务的常见方案是 IIS、WAS、自托管、托管 Windows 服务。

主要区别在于 Web 服务使用 XmlSerializer。但是 WCF 使用 DataContractSerializer,与 XmlSerializer 相比,它的性能更好。

XmlSerializer 将 .NET 类型序列化为 XML 的关键问题

  • 只有 Public 字段或 .NET 类型的属性可以转换为 XML。
  • 仅限实现IEnumerable 接口的类。
  • 实现了IDictionary接口的类,比如Hash table,不能序列化。

DataContractSerializer 和 XMLSerializer 的重要区别

  • DataContractSerializer 设计的一个实际好处是性能优于 Xmlserializer
  • XML 序列化不指示该类型的哪些字段或属性被序列化为 XML,而 DataCotractSerializer
  • 明确显示哪些字段或属性被序列化为 XML。
  • DataContractSerializer 可以将HashTable 转换为 XML。

http://www.codeproject.com/Articles/139787/What-s-the-Difference-between-WCF-and-Web-Services

【讨论】:

  • 在做出这么好的答案之前,请检查问题是否重复,以免浪费时间。
猜你喜欢
  • 2017-01-13
  • 2012-03-16
  • 2013-10-20
  • 2010-11-02
  • 2016-11-14
  • 2016-07-26
  • 2016-05-09
  • 2017-10-02
  • 2012-03-16
相关资源
最近更新 更多