通过 WCF 实现 REST 的第一步
通过 WCF 实现 RESTful Web 服务的步骤
引言
在我的早期关于 REST 的文章基础上补充说明。本文将帮助你理解如何通过 WCF 实现 REST。
开始吧
我们将从创建一个 WCF 服务应用程序项目开始。
项目创建完成后,你可以看到 IService.cs,然后是 Service.svc,它包含 Service.svc.cs。
现在我所做的就是将接口重命名为 IMyService,服务重命名为 MyService。
我对生成的代码进行了一些基本的编辑,现在代码如下 - IMyService.cs
namespace Wcf_Test
{
[ServiceContract]
public interface IMyService
{
[OperationContract]
string GetData();
}
}
MyService.cs:为了便于理解,我只是返回了一个字符串值。
public class MyService : IMyService
{
public string GetData()
{
return "Some Value from Server";
}
}
在 WCF 中实现 REST
要实现 REST,我们所需要做的就是调整 IMyService
。
namespace Wcf_Test
{
[ServiceContract]
public interface IMyService
{
[OperationContract]
[WebGet(UriTemplate = "GetMeValues", ResponseFormat = System.ServiceModel.Web.WebMessageFormat.Json)]
string GetData();
}
}
要获取 WebGet,你需要使用以下命名空间引用
System.ServiceModel
System.ServiceModel.Web
现在一切都已设置完成,最重要的是 web.config 的更改。
REST 服务无法在 ws 或 basic httpBinding 上工作,它只能在 WebHttpBinding 上工作。因此,端点应该明确具有 WebHttpBinding 作为绑定。
<endpoint address="" binding="webHttpBinding"contract="Wcf_Test.IMyService" behaviorConfiguration="httpEndpointBehavour"> <identity> <dns value="localhost"/> <Identity> </endpoint>
你还需要定义行为。
<behaviors> <serviceBehaviors> <behavior name="httpBehaviour"> <serviceMetadata httpGetEnabled="True"/> <serviceDebug includeExceptionDetailInFaults="False"/> </behavior></serviceBehaviors>
一件不应该忘记的事情是声明 endpointbehviour (端点行为)。
<endpointBehaviors> <behavior name="httpEndpointBehavour"> <webHttp /> </behavior> </endpointBehaviors>
设置完成后,你就可以按下 F5,亲自查看 WCF 中第一个 REST 实现了。
即使不更改你的配置,你也可以获得相同的输出。
你所需要做的就是删除本文中提到的所有配置更改。完成后,我们需要在 MyService.svc 中添加一个名为 Factory 的新属性。请参阅下面的代码。
MyService.svc 包含
ServiceHost Language="C#" Debug="true" Service="Wcf_Test.MyService" CodeBehind="MyService.svc.cs"
现在添加一个名为 Factory 的属性。
Factory="System.ServiceModel.Activation.WebServiceHostFactory"
按下 F5。就这样。你将获得完全相同的输出,而无需更改你的配置文件。
结论
我希望这篇文章对那些第一次尝试在 WCF 中实现 REST 的人有所帮助。这只是一个非常简单的示例,我建议你尝试调用所有方法,如 PUT、POST、DELETE。
更多文章请访问 http://www.bloggingbunk.com