65.9K
CodeProject 正在变化。 阅读更多。
Home

创建 RESTful WCF 服务 API:分步指南

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.86/5 (252投票s)

2010年8月30日

CPOL

4分钟阅读

viewsIcon

1762963

downloadIcon

46042

使用 ASP.NET 和 C# 创建 RESTful WCF 服务 API 的分步指南

引言

Windows Communication Foundation (WCF) 是一个用于在 Windows 上开发和部署服务的 SDK。WCF 为您的服务提供运行时环境,使您可以将 CLR 类型公开为服务,并将其他服务作为 CLR 类型进行使用。在本文中,我将解释如何使用 WCF 4.0 实现 RESTful 服务 API。创建的 API 使用 WCF 属性返回 XML 和 JSON 数据。

什么是 REST?

基于 Roy Fielding 的理论“Representational State Transfer (REST),试图将构成 Web 的架构风格和设计约束进行编码。REST 强调关注点分离、分层、无状态和缓存等,这些在许多分布式体系结构中都很常见,因为它们提供了许多优势。这些优势包括互操作性、独立演进、拦截、提高可伸缩性、效率和整体性能。”

实际上,唯一区别在于客户端如何访问我们的服务。通常,WCF 服务将使用 SOAP,但如果您构建 REST 服务,客户端将以不同的架构风格(如 JSON 的调用、序列化等)访问您的服务。

REST 使用一些常见的 HTTP 方法来插入/删除/更新/检索信息,如下所示:

  1. GET - 请求资源的特定表示
  2. PUT - 使用提供的表示创建或更新资源
  3. DELETE - 删除指定资源
  4. POST - 提交数据以供已识别的资源处理

为什么要以及在哪里使用 REST?

几天前,我正在编写一个需要被异构语言/平台/系统访问的服务。它可以被 iPhone、Android、Windows Mobile、.NET Web 应用程序、JAVA 或 PHP 使用。使用 Web 服务,要通过统一的系统将其公开给所有人对我来说有点复杂。然后我们决定使用 REST,它很容易被云接纳。这是一个很好的例子,它展示了简单 RESTful 服务的能力 :)。以下几点将帮助您理解为什么使用 RESTful 服务。

  1. 开销更少(每个调用无需封装 SOAP 信封)
  2. 重复更少(HTTP 已经表示了 DELETEPUTGET 等操作,否则这些操作需要在 SOAP 信封中表示)。
  3. 更标准化 - HTTP 操作易于理解并运行一致。某些 SOAP 实现可能会变得挑剔。
  4. 更易于人类阅读和测试(仅凭浏览器更难测试 SOAP)。
  5. 无需使用 XML(嗯,SOAP 也可以不使用,但这样做几乎没有意义,因为你已经在解析信封了)。
  6. 库(在某种程度上)使 SOAP 变得容易。但正如我指出的,你正在抽象掉很多底层冗余。是的,理论上 SOAP 可以通过其他传输方式来避免在执行类似操作的层之上运行,但实际上,你所做的几乎所有 SOAP 工作都是通过 HTTP 进行的。

分步指南

通常,开发人员会因为很多令人困惑的配置而害怕使用 WCF。我将尝试使用最少的配置,以便我们更容易理解。我们将分 6 个步骤开发RESTful WCS API。现在开始吧。

第一步

首先,启动 Visual Studio 2010。点击文件->新建->项目。创建一个新的“WCF 服务应用程序”。

第二步

创建项目后,您可以在解决方案中看到,默认情况下 WCF 服务和接口文件已创建。删除默认创建的文件,因为我们将创建自己的接口和 WCF 服务文件。

第三步

现在右键单击解决方案,创建一个新的 WCF 服务文件。我将服务文件命名为“RestServiceImpl.svc”。

第四步

正如我在文章开头解释的那样,我们将编写一个可以返回 XML 和 JSON 格式数据的 API,这是该接口。在 IRestServiceImpl 中,添加以下代码:

在上面的代码中,您可以看到 IRestService 的两个不同方法:XMLDataJSONDataXMLData 返回 XML 格式的结果,而 JSONData 返回 JSON 格式的结果。

第五步

打开文件 RestServiceImpl.svc.cs 并在此处编写以下代码:

第六步

现在让我们转到配置部分,这是最后一部分。配置文件将包含两个基本部分,我们必须理解它们。

<services> 

这部分包含有关终结点的信息。以下是代码详细信息。

Click to enlarge image

<behaviors>

这部分包含有关服务和终结点行为的详细信息。

就是这样。我们的 RESTful WCF 服务已准备好进行测试。

服务现已准备好进行测试

现在我在浏览器中启动应用程序以查看结果。我在 Internet Explorer 中启动此服务,我的 URL 是 https://:35798/RestServiceImpl.svc。现在,如果我使用 https://:35798/RestServiceImpl.svc/xml/123 URL,我会在浏览器中看到以下响应,这是 XML 格式,而这正是我要实现的任务。

现在,如果我使用 https://:35798/RestServiceImpl.svc/json/123 URL,我会在浏览器中看到以下响应,这是 XML 格式,而这正是我要实现的任务。

希望这篇文章对社区有所帮助。欢迎评论、建议和批评。

历史

  • 2010 年 8 月 30 日:初次发布
© . All rights reserved.