我刚刚建立了一个asp.net 2.0网站.现在我需要添加REST Web服务,以便我可以与另一个Web应用程序进行通信.我之前使用过2个SOAP Web服务项目,但根本没有使用REST的经验.我想只有几周才能正常工作.谷歌搜索后,我发现这并不容易.
这是我发现的:
没有REST开箱即用的asp.net.
WCF REST入门套件Codeplex预览版2基于.net 3.5并仍处于测试阶段
休息ASP.NET示例
ASP.NET 2.0中的REST Web服务(C#)
Exyus
用摇篮曲处理POST和PUT方法
ADO.NET数据服务
...
现在我的问题,
a).net 2.0的REST解决方案?如果是的话,哪一个是最佳解决方案?
b)如果必须,我的asp.net从2.0迁移到3.5有多难?它只是简单编译,或者我必须更改很多代码?
c)WCF REST入门套件是否足以在生产中使用?
d)我是否必须首先学习WCF,然后是WCF REST入门套件?哪里是最好的起点?
我感谢任何帮助.
谢谢Wes
如果您正在寻找一个模拟REST服务的项目,那么您说没有开箱即用的解决方案是正确的.但是,使用WCF可以实现RESTful Web服务.关键部分是在定义服务函数时使用几个属性,让.NET框架知道函数不期望SOAP.要使用的主要属性是WebInvoke属性.
以下是developer.com的一个示例:
[OperationContract] [WebInvoke(Method = "PUT", UriTemplate = "/admin/post/{id}")] void UpdatePost(string id, Post post);
上面的代码实际上将在您的Web服务的接口中定义.创建WCF Web服务项目时,将自动创建该接口.该函数的实际代码将放在用于实现Web服务的类中.
查看developer.com上的文章以获取完整的教程.如果你是WCF的新手,一开始可能看起来势不可挡,但是在你深入研究它之后,我相信你会开始快速接受它.以下是artile的链接:http://www.developer.com/net/article.php/10916_3695436_1
要回答你的所有问题,
a)在.NET 2.0中,您应该能够使用WSE2.0构建RESTful服务,但是如果您可以选择使用.NET 3.5,我强烈建议您使用WCF的路由,因为它更容易并且使用REST设计心里.
b)转换你的项目并不难.这只是在项目设置中定位框架的新版本的问题.将Web服务从WSE2.0服务转换为WCF服务将会有点棘手.最简单的方法是将每个不同Web服务函数的代码复制到实现新版本函数的类中.复制粘贴shinanigans :)
c)我不确定你所指的这个入门套件是什么.WCF应该完全支持RESTful Web服务,从3.5开始全面发布
d)在开始之前至少要了解一下WCF会很有帮助,但要完全理解它并不是必须的.我建议只阅读WCF上的MSDN文章至少一次,然后开始工作.我相信你会在开始时遇到其他问题,但是当你遇到它们时,你可以查看这些部分.
无论如何,我希望这些信息有所帮助.祝你好运.
编辑
REST世界已经做了一些改进.正如Darrel Miller在评论中提到的那样,WCF实际上并没有考虑到REST.我之前说错了.实际上,框架是在构建SOAP时考虑的,WebInvoke属性填补了这一空白.尽管围绕该主题(Web API与WCF REST)存在很多争议,但ASP.NET Web API是用于在.NET中构建REST服务的新选项.我强烈建议任何读过这篇文章并且能够在他们的项目中使用.NET 4.5的人都可以选择它.