65.9K
CodeProject 正在变化。 阅读更多。
Home

通过 WCF 实现 REST 的第一步

starIconstarIconstarIcon
emptyStarIcon
starIcon
emptyStarIcon

3.08/5 (6投票s)

2011年 9月 12日

CPOL

2分钟阅读

viewsIcon

22004

通过 WCF 实现 RESTful Web 服务的步骤

引言

在我的早期关于 REST 的文章基础上补充说明。本文将帮助你理解如何通过 WCF 实现 REST。

开始吧

我们将从创建一个 WCF 服务应用程序项目开始。

项目创建完成后,你可以看到 IService.cs,然后是 Service.svc,它包含 Service.svc.cs。

现在我所做的就是将接口重命名为 IMyService,服务重命名为 MyService。

Wcf_Test_Sol_Expl.JPG

我对生成的代码进行了一些基本的编辑,现在代码如下 - 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 实现了。

Result_WithoutREST.JPG

即使不更改你的配置,你也可以获得相同的输出。

你所需要做的就是删除本文中提到的所有配置更改。完成后,我们需要在 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。就这样。你将获得完全相同的输出,而无需更改你的配置文件。

Result_WithREST__1_.JPG

结论

我希望这篇文章对那些第一次尝试在 WCF 中实现 REST 的人有所帮助。这只是一个非常简单的示例,我建议你尝试调用所有方法,如 PUT、POST、DELETE。

更多文章请访问 http://www.bloggingbunk.com  

© . All rights reserved.