我需要创建一个将在IIS中托管的服务。该服务将具有一个类型为string的参数的函数。该函数将接收Json数据。将使用此服务的客户端需要能够使用以下URL来访问此服务方法:
http://[local]host/Myservice/mymethod
我是服务新手。我使用的是asp.net 4.0和VS 2010.我的问题是:
我应该创建SOAP服务还是WCF服务(我假设WCF不能是SOAP)
如果我需要用户WCF服务,那么哪种类型的WCF服务?我看到有几种类型的WCF服务,比如REST服务,数据服务(以及可能还有JSON服务)。
我曾使用此模板创建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并更改端点手动?
然后,此服务方法将使用json.net解析json并获取一些值,然后将它们添加到数据库中并发送电子邮件。这是否意味着我需要WCF数据服务?
请建议。
此致 Asif Hameed
答案 0 :(得分:1)
嗯,首先,WCF 在SOAP领域非常强大,事实上,它在开始时只支持基于SOAP的绑定。
如果您希望能够“自动发现”您的服务及其方法,那么SOAP是一个强有力的竞争者。 SOAP具有完善的元数据系统(使用WSDL和XSD标准),因此客户端基本上只需指向服务位置并获得该服务可以执行的操作的整个描述,以及它所期望的参数等。另外:SOAP基于我有x方法的服务比喻 - 所以你将把服务方法及其参数作为你设计的主要项目。
另一方面,SOAP的可用性较低 - 它可以在大多数桌面系统上使用,但在手机和平板电脑等大多数移动设备上都没有。这就是REST的亮点 - 因为它只使用HTTP,它可以无处不在,因此您可以访问更多客户端。此外,由于您专门使用JSON并且您的服务似乎相当简单(只需使用单个参数进行一次调用),因此这可能更适合REST(WCF webHttpBinding
或基于此的服务ASP.NET Web API)。
但请注意:REST基本上基于资源 - 例如你不是在谈论REST中的方法和方法参数 - 你在操纵资源。因此,您将使用各种HTTP谓词(GET,PUT,POST,DELETE),您正在谈论的URI代表资源(无论可能是什么)。
因此,如果您可以将系统建模为我正在发布新资源(如新数据库记录),那么您可以使用REST。要向数据库添加新行,您将对表示资源集合的URI进行POST
调用,例如
POST /host/app/MyResourceCollection
并提供必要的数据,以便在HTTP调用的帖子正文中实际创建新行。
所以你的要求有点矛盾:
我建议您阅读Jon Flanders撰写的这篇优秀MSDN文章An Introduction To RESTful Services With WCF,以便更好地了解REST是什么以及如何使用它。看看它是否符合您的需求,如果是 - 请继续使用,尝试一下,体验它的工作原理。