【发布时间】:2017-11-12 13:35:52
【问题描述】:
我正在处理一个新项目。 该项目的目的是集中所有服务调用并为其他服务提供单一入口点。
目前,开发人员调用大约 5 种不同的服务来从内部不同来源获取数据。
该项目将创建一个服务,公司的其他开发人员可以使用该服务从一个服务中调用所有这 5 种不同的服务。
我的问题是
我应该使用 Web API(RESTful)还是 WCF(基于 SOAP)构建服务?
我的经理建议我使用一种宁静的方式来创建此服务。但是,由于该服务在公司内部使用,我相信 WCF 将是更合适的方法,因为 WSDL,您可以使用它来创建代理类和使用对象,而不是客户端解析返回的数据。
此外,WCF 是操作驱动的,而 Web API 是资源驱动的。
什么时候使用动作驱动模型,什么时候使用资源驱动?
如果您能深入了解我的情况并帮助我决定将哪种方法应用于我的项目,我将不胜感激。
这是我目前所拥有的,但仍然不足以说服我使用其中一个。
WCF
- 基于 SOAP 的服务
- 多种传输协议(HTTP、TCP、UDP 等)
- 用于创建代理的 WSDL(生成类型安全的绑定器类/对象)
- 它允许客户端像类库一样引用服务端点,这意味着您无需在桌面客户端中处理 XML 或 JSON。您正在使用类和对象。
- 与 Web API 相比,开销更大
- 内部/内部网
- 动作驱动模型,重点关注服务能够执行的操作
- WCFExtras+ 用于文档服务
网络 API
- RESTful 服务
- 基于 HTTP(一等公民)
- 多种媒体类型(XML、JSON)
- 重量轻
- 没有 WSDL(通常客户端最终自己解析数据)
- 公共 API(各种客户端)
- 基于对象而非函数公开端点的资源驱动架构
- 客户端互操作性
- 使用 Swagger 的 ASP.NET Web API 帮助页面
更新:
我的问题是理解为什么应将 WCF 用于 Intranet 应用程序。是因为 WSDL 会自动为你创建代理类和 web api,你必须在客户端做更多的工作来解析返回的 xml 或 json?
【问题讨论】:
-
这可能会因为“太宽泛”而被关闭,因为答案只是意见。 Web API 更更容易跨不同平台和工具集工作。当您可以为客户端和服务器使用完全相同的工具/库时,SOAP 效果最好。集成 gSOAP 和 Microsoft 等不同工具可能是一场噩梦。
-
Web API 甚至可以“手动”完成,根本不需要专门的库,因为它归结为 HTTP POST 或 GET。除了几个微小的调用之外,SOAP 无法通过手动完成。
-
我读过的所有文章都建议将 WCF 用于 Intranet 应用程序。而 Web API 应该用于公共 API 服务。我的问题是理解为什么 WCF 应该用于 Intranet 应用程序。是因为 WSDL 会自动为你创建代理类和 web api,你必须在客户端做更多的工作来解析返回的 xml 或 json?
-
这些文章可能意味着只能用于 Intranet。即使这样,您还需要支持 iOS 和 Android 手机和 Mac,还是只支持 Windows PC?
-
只是 Windows 电脑
标签: c# web-services wcf asp.net-web-api soap