0

我需要创建一个将托管在 IIS 中的服务。该服务将具有一个带有字符串类型参数的函数。此函数将接收 Json 数据。将使用此服务的客户端需要能够使用以下 url 访问此服务方法:

http://[local]host/Myservice/mymethod

我是服务新手。我正在使用 asp.net 4.0 和 VS 2010。我的问题是:

  1. 我应该创建 SOAP 服务还是 WCF 服务(我假设 WCF 不能是 SOAP)

  2. 如果我需要使用 WCF 服务,那么使用哪种类型的 WCF 服务?我看到有几种类型的 WCF 服务,例如 REST 服务、数据服务(可能还有 JSON 服务)。

  3. 我曾使用此模板创建 WCF 服务。使用它是否很好:http: //visualstudiogallery.msdn.microsoft.com/fbc7e5c1-a0d2-41bd-9d7b-e54c845394cd因为我不需要创建数据合同等,或者可能是这篇文章 http:// www.dotnetspark.com/kb/3189-create-rest-service-wcf-40-step-by-step.aspx因为我不必手动更改 web.config 和更改端点?

  4. 然后,此服务方法将使用 json.net 解析 json 并获取一些值,然后将它们添加到数据库中并发送电子邮件。这是否意味着我需要 WCF 数据服务?

请建议。

问候, 阿西夫·哈米德

4

1 回答 1

1

好吧,首先——WCF在 SOAP 领域非常强大,事实上,它在一开始就专门支持基于 SOAP 的绑定。

如果您希望能够“自动发现”您的服务及其方法,那么 SOAP 是一个强有力的竞争者。SOAP 有一个完善的元数据系统(使用 WSDL 和 XSD 标准),因此客户端基本上可以只指向一个服务位置并获得该服务可以做什么以及它期望什么参数等的完整描述。另外:SOAP是基于我有一个带有 x 方法的服务的隐喻——所以您将拥有服务方法及其参数作为您要设计的主要项目。

另一方面,SOAP 的使用范围稍差一些——它在大多数桌面系统上都可用,但在大多数移动设备(如手机和平板电脑)上并不真正可用。

这就是 REST 大放异彩的地方——因为它只使用 HTTP,所以它随处可用,因此您可以接触到更多的客户。此外,由于您专门使用 JSON 并且您的服务似乎是一个相当简单的服务(只是带有单个参数的单个调用),这可能更适合 REST(WCFwebHttpBinding或基于 ASP.NET Web 的服务API)。

但是请注意:REST 基本上是基于资源的——例如,你不是在谈论 REST 中的方法和方法参数——你是在操纵资源。因此,您将使用各种 HTTP 动词(GET、PUT、POST、DELETE),而您正在谈论的 URI 表示资源(无论它是什么)。

因此,如果您可以将系统建模为我正在发布新资源(如新的数据库记录),那么您可以为此使用 REST。要向数据库添加新行,您将POST调用代表您的资源集合的 URI,例如

POST  /host/app/MyResourceCollection

并提供必要的数据以在 HTTP 调用的 post 正文中实际创建新行。

所以你的要求有点矛盾:

  • 拥有服务方法的想法似乎更适合 SOAP
  • 使用 JSON 的想法更适合 REST

我建议您阅读 Jon Flanders 撰写的这篇出色的 MSDN 文章 An Introduction To RESTful Services With WCF,以更好地了解 REST 是什么以及如何使用它。看看它是否符合您的需求,如果是,那就去尝试一下,体验一下它的工作原理。

于 2013-03-24T11:01:48.207 回答