熟悉.NET Framework的人都应该知道在WCF 3.5时就已经支持了WCF REST 功能,经过.NET 4.0的改进到现在.NET4.5时大有被WEB API替代的趋势,但REST并非就已经走向了死亡,这里简要的记录下如何通过VS2012快速搭建一个WCF REST服务。
1、打开VS2012,新建一个WCF服务应用程序。
2、删除默认生成的接口跟实现文件(如图)
3、新增自定义的接口文件: ICustomerService.cs
这里需要注意如果是POST操作,则必须指定Method为大写的字符串"POST",并设置BodyStyle,这里设置为WebMessageBodyStyle.WrappedRequest
4、添加实现类: CustomerService.cs
6、新增一个.svc文件,如下图,把service指向编写好的服务。
7、修改配置文件:
8、生成解决方案,在浏览器中输入地址进行测试
如图,已已成功生成REST服务。
总结:
1、为何说REST还没有完全不会被WebAPI取代,在这个项目中可以看到,其实这个REST服务是不止是REST服务,它还暴露了另外的一个EndPoint,即使用了BasicHttpBinding的SOAP服务。这是非常有意义的。
2、在开发REST服务时需要注意的是,REST的EndPoint使用的绑定必须是WebHttpBinding。同时需要注意的是如果发布的REST服务需要使用POST,PUT等方式必须设置Method属性为对于的大写"POST","PUT"。
3、在上面的测试中可以发现,在步骤8中,我们给出的REST的地址是http://localhost:13412/CustomerService.svc/XMLService/Customers/aa,其中的地址中“CustomerService.svc”在地址栏中总感觉非常别扭,有没有一个好方法设定自定义的地址呢,答案是可以的,在VS2012中往项目中添加一个Global.asax,小小修改:
protected void Application_Start(object sender, EventArgs e)
{
RouteTable.Routes.Add(new ServiceRoute("Customer", new WebServiceHostFactory(), typeof(CustomerService)));
}
通过修改,我们再来测试下:
OK,证明通过添加路由起到作用。
到这里,一个简单也不算太简单的WCF REST 服务就已经搭建好了,下篇会来介绍如何在winFrom、JS中消费这个REST服务。