WCF RESTful Service 实现指南

在本文中,将探讨如何使用Windows Communication Foundation (WCF) 创建一个RESTful服务。WCF是一个框架,用于构建服务取向的应用程序。它允许开发者创建服务,这些服务可以通过网络进行通信。将通过一个简单的示例,展示如何定义WCF服务、接口、类,以及如何实现POST和GET方法。此外,还将介绍如何配置WCF服务,并进行简单的服务测试。最后,将实现客户端代码以使用WCF服务。

定义WCF服务

首先,需要在Visual Studio 2010中创建一个新的WCF服务应用程序。选择"新建项目",然后选择"WCF",再选择"WCF服务应用程序",并将其命名为"WCF Rest Based"。

接下来,需要添加一个新的服务类。在项目中添加一个名为"MyService.svc"的新服务类。然后,需要定义一个接口,例如"IMservice.cs",并添加以下代码: [OperationContract(Name = "PostSampleMethod")] [WebInvoke(Method = "POST", UriTemplate = "PostSampleMethod/New")] string PostSampleMethod(Stream data); [OperationContract(Name = "GetSampleMethod")] [WebGet(UriTemplate = "GetSampleMethod/inputStr/{name}")] string GetSampleMethod(string name); 这里,定义了两个方法:PostSampleMethod和GetSampleMethod。PostSampleMethod使用POST方法接受XML格式的输入,并返回状态字符串。GetSampleMethod使用GET方法接受字符串输入,并返回格式化的字符串。

实现POST和GET方法

在"MyService.cs"类中,需要为在IMyService接口中定义的方法提供实现。以下是PostSampleMethod和GetSampleMethod的实现示例: public string PostSampleMethod(Stream data) { StreamReader reader = new StreamReader(data); string xmlString = reader.ReadToEnd(); string returnValue = xmlString; return returnValue; } public string GetSampleMethod(string strUserName) { StringBuilder strReturnValue = new StringBuilder(); strReturnValue.Append(string.Format("You have entered userName as {0}", strUserName)); return strReturnValue.ToString(); } 在PostSampleMethod中,将流数据转换为字符串读取器,然后读取数据作为字符串。在GetSampleMethod中,简单地返回一个格式化的字符串,其中包含传入的用户名。

定义WCF服务配置

为了使WCF服务能够通过webHttp访问,需要在"web.config"文件中定义配置。需要定义webHttpBinding和mexHttpBinding。以下是配置的示例: <services> <service name="WcfRestBased.MyService" behaviorConfiguration="myServiceBehavior"> <endpoint name="webHttpBinding" address="" binding="webHttpBinding" contract="WcfRestBased.IMyService" behaviorConfiguration="webHttp"> </endpoint> <endpoint name="mexHttpBinding" address="mex" binding="mexHttpBinding" contract="IMetadataExchange" /> </service> </services> 在这里,定义了服务名称、行为配置、端点名称、地址、绑定和契约。这些值需要与在服务类中定义的值相匹配。

测试WCF服务

为了确保WCF服务正常工作,可以在浏览器中打开"MyService.svc"。例如,如果服务位于"http://localhost/wcfrestbased/MyService.svc",可以通过调用"http://localhost/wcfrestbased/MyService.svc/GetSampleMethod/inputStr/suryaprakash"来测试GET方法服务。这应该会显示数据,如"You have entered userName as suryaprakash"。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485