您的位置:首页 > 编程语言 > ASP

在Asp.net应用程序中构建基于WCF Web.Api的服务

2011-09-21 14:44 671 查看
WCFWebAPIPreview5发布了,你可以官方网站下载或通过Nuget安装它.下面让我们在Asp.netapplicatoin中来实现一个非常简单的webapiservice.

在VS中打开PackageManageConsole下,输入:

Install-PackageWebApi.All

然后我们创建Contact与其实现类:

///<summary>
///asimpleContactentity
///</summary>
publicclassContact
{
///<summary>
///Name
///</summary>
publicstringName{get;set;}
}
[ServiceContract]
publicinterfaceIContactsResource
{
[WebGet(UriTemplate="")]
List<Contact>Get();
}
///<summary>
///Demoforhostaweb.apiinasp.netapplication
///</summary>
///<remarks>authorPetterLiuhttp://www.cnblogs.com/wintersun</remarks>
publicclassContactsResource:IContactsResource
{
///<summary>
///GetlistofContacts
///</summary>
///<returns>listofcontacts</returns>
publicList<Contact>Get()
{
returnnewList<Contact>()
{
newContact(){Name="Peter"}
};
}
}

.csharpcode,.csharpcodepre
{
font-size:small;
color:black;
font-family:consolas,"CourierNew",courier,monospace;
background-color:#ffffff;
/*white-space:pre;*/
}
.csharpcodepre{margin:0em;}
.csharpcode.rem{color:#008000;}
.csharpcode.kwrd{color:#0000ff;}
.csharpcode.str{color:#006080;}
.csharpcode.op{color:#0000c0;}
.csharpcode.preproc{color:#cc6633;}
.csharpcode.asp{background-color:#ffff00;}
.csharpcode.html{color:#800000;}
.csharpcode.attr{color:#ff0000;}
.csharpcode.alt
{
background-color:#f4f4f4;
width:100%;
margin:0em;
}
.csharpcode.lnum{color:#606060;}

代码很简单.然后在Global.asax中Application_Start增加如下代码:

voidApplication_Start(objectsender,EventArgse)
{
RouteTable.Routes.MapServiceRoute<ContactsResource>("contacts");
}

.csharpcode,.csharpcodepre
{
font-size:small;
color:black;
font-family:consolas,"CourierNew",courier,monospace;
background-color:#ffffff;
/*white-space:pre;*/
}
.csharpcodepre{margin:0em;}
.csharpcode.rem{color:#008000;}
.csharpcode.kwrd{color:#0000ff;}
.csharpcode.str{color:#006080;}
.csharpcode.op{color:#0000c0;}
.csharpcode.preproc{color:#cc6633;}
.csharpcode.asp{background-color:#ffff00;}
.csharpcode.html{color:#800000;}
.csharpcode.attr{color:#ff0000;}
.csharpcode.alt
{
background-color:#f4f4f4;
width:100%;
margin:0em;
}
.csharpcode.lnum{color:#606060;}

接着打开浏览器运行吧,访问http://localhost:7287/contacts,得到这样的结果:

<?xmlversion="1.0"encoding="utf-8"?>
<ArrayOfContactxmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Contact>
<Name>Peter</Name>
</Contact>
</ArrayOfContact>

.csharpcode,.csharpcodepre
{
font-size:small;
color:black;
font-family:consolas,"CourierNew",courier,monospace;
background-color:#ffffff;
/*white-space:pre;*/
}
.csharpcodepre{margin:0em;}
.csharpcode.rem{color:#008000;}
.csharpcode.kwrd{color:#0000ff;}
.csharpcode.str{color:#006080;}
.csharpcode.op{color:#0000c0;}
.csharpcode.preproc{color:#cc6633;}
.csharpcode.asp{background-color:#ffff00;}
.csharpcode.html{color:#800000;}
.csharpcode.attr{color:#ff0000;}
.csharpcode.alt
{
background-color:#f4f4f4;
width:100%;
margin:0em;
}
.csharpcode.lnum{color:#606060;}

让我们再用UnitTest来验证一下,引用HttpClient库.

[TestMethod]
publicvoidTestGetAction()
{
//arrange
varclient=newHttpClient();
//act
varresp=client.Get("http://localhost:7287/contacts");
//assert
Assert.IsTrue(resp.IsSuccessStatusCode);
varcontacts=resp.Content.ReadAs<List<Contact>>();
Assert.IsNotNull(contacts);
Assert.AreEqual("Peter",contacts.FirstOrDefault().Name);
}

.csharpcode,.csharpcodepre
{
font-size:small;
color:black;
font-family:consolas,"CourierNew",courier,monospace;
background-color:#ffffff;
/*white-space:pre;*/
}
.csharpcodepre{margin:0em;}
.csharpcode.rem{color:#008000;}
.csharpcode.kwrd{color:#0000ff;}
.csharpcode.str{color:#006080;}
.csharpcode.op{color:#0000c0;}
.csharpcode.preproc{color:#cc6633;}
.csharpcode.asp{background-color:#ffff00;}
.csharpcode.html{color:#800000;}
.csharpcode.attr{color:#ff0000;}
.csharpcode.alt
{
background-color:#f4f4f4;
width:100%;
margin:0em;
}
.csharpcode.lnum{color:#606060;}

OK,Pass.一切就是那么简单

希望这篇POST对您开发WCF有帮助.

您可以感兴趣的文章:

使用WCFwebAPI测试基于REST的WCFService

作者:PetterLiu
出处:http://www.cnblogs.com/wintersun/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
该文章也同时发布在我的独立博客中-PetterLiuBlog。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐
章节导航