WCF 作为具有尽可能最小负载的 Web 服务

问题描述 投票:0回答:2

这些天我的大部分工作都使用 Microsoft 技术,因此我很自然地会查看 WCF 提供的功能。 它看起来非常灵活,是 .Net 远程处理的一个伟大的进步,但它似乎与 SOAP 消息紧密相关,并且对于与平台无关的 Web 服务应用程序来说有点笨重。 我不是该技术的专家,但我想他们所吹捧的所有灵活性意味着您可以脱离 SOAP 消息并返回您想要的任何数据结构/格式。 这是真的还是假的?

我这么说的原因是,如果我真的想创建一个应用程序作为 REST 服务,我的目标平台之一就是移动平台。 不仅如此,任何基于 Web 的服务的一个重要目标是保持数据有效负载较小,无论是对于拨号速度的移动设备还是完整的桌面应用程序。

因此,如果您以 Twitter 的 API 为例,它会非常成功,因为您可以请求 JSON 格式的数据,而无需花哨的 SOAP 信封来压低数据,并接收最少量的字节来表示您想要的数据。 因此,在连接较差的设备上运行并消耗 Twitter 数据的移动应用程序可以使用尽可能少的带宽。 除此之外,Twitter、Facebook 或任何更成功的公共 API 的模式都是 JSON 和/或 XML 中的自定义数据结构,而不是封装在 SOAP 信封中(尽管我可能是错的......这只是我的印象) ).

您将如何在 WCF 中执行此操作? 您是否必须费尽心思告诉 WCF“只返回此文本...不要担心 SOAP 信封”,或者它是一个简单的配置选项?

.net rest web-services wcf
2个回答
2
投票

请参阅WCF RESTful POX、JSON 和 SOAP 共存。配置 WCF 返回简单的 POX 和/或 JSON 实际上非常简单。


2
投票

您可以设置多个配置选项来从 WCF 中删除 SOAP。最简单的方法是使用 WebServiceHost 而不是通常的 ServiceHost 类来托管您的服务。它设置了您想要的大部分选项。 Justin Smith 有一篇很好的文章,对比了 WebServiceHost 和 ServiceHost

虽然听起来您似乎更担心发送 POX(普通旧式 XML)有效负载而不是某些 REST 原则(URL 映射和 HTTP 方法),但您可能会发现 Jon Flander 的 RESTful .NET 书很有帮助。这是第 1 章的概述

另请查看 Microsoft 的 REST Starter Kit,其中有很多有关如何使用 WCF 执行常见的面向 Web 的任务的示例。

为了回答你问题的另一部分,我发现使用 JSON 会产生比 XML 小得多的有效负载,同时在 WCF 中仍然拥有良好的支持。

© www.soinside.com 2019 - 2024. All rights reserved.