代码之家  ›  专栏  ›  技术社区  ›  weslleywang

来自asp.net 2.0的REST

  •  13
  • weslleywang  · 技术社区  · 17 年前

    我刚刚建立了一个asp.NET2.0网站。现在我需要添加RESTWeb服务,这样我就可以与另一个web应用程序通信。我以前曾参与过2个SOAPWeb服务项目,但对REST没有任何经验。我想只要一周就行了。在谷歌搜索之后,我发现这并不是那么容易。

    这就是我发现的:

    asp.net中没有其他现成的组件。

    WCF REST Starter Kit Codeplex Preview 2 基于.NET3.5,仍处于测试阶段

    Rest ASP.NET Example

    REST Web Services in ASP.NET 2.0 (C#)

    Exyus

    Handling POST and PUT methods with Lullaby

    ADO.NET Data Service

    ...

    现在我的问题是,,

    a) 是针对.NET2.0的REST解决方案吗?如果是,哪一个是最好的解决方案?

    b) 如果必须的话,将我的asp.net从2.0迁移到3.5有多难?是像编译一样简单,还是我必须修改很多代码?

    c) WCF REST初学者工具包是否足以用于生产?

    我很感激这里的任何帮助。

    韦斯

    7 回复  |  直到 17 年前
        1
  •  9
  •   regex    14 年前

    如果您正在寻找一个对REST服务进行模板化的项目,那么您说没有现成的解决方案是正确的。但是,使用WCF可以使用RESTful web服务。关键部分是在定义服务函数时使用几个属性,让.NET framework知道该函数不需要SOAP。要使用的主要属性是 WebInvoke 属性

    这里有一个来自中国的例子 developer.com :

    [OperationContract]
    [WebInvoke(Method = "PUT", UriTemplate = "/admin/post/{id}")]
    void UpdatePost(string id, Post post);
    

    上述代码实际上将在web服务的接口中定义。创建WCF web服务项目时会自动创建该接口。函数的实际代码将放在用于实现web服务的类中。

    http://www.developer.com/net/article.php/10916_3695436_1

    要回答你所有的问题,

    WSE2.0 ,但如果您可以选择使用.NET3.5,我强烈建议您使用WCF,因为它更简单,并且在设计时考虑了REST。

    b) 转换项目一点也不难。这只是在项目设置中针对框架的新版本的问题。不过,将web服务从WSE2.0服务转换为WCF服务将有点棘手。最简单的方法是将代码从每个不同的web服务函数复制到实现新版本函数的类中。复制粘贴骗局:)

    MSDN article on WCF 至少一次,然后开始工作。我相信你会在开始时遇到其他问题,但你可以在遇到这些问题时查找它们。

    无论如何,我希望这些信息能有所帮助。祝你好运。

    其他国家已经取得了一些进步。正如达雷尔·米勒(Darrel Miller)在评论中提到的那样,WCF实际上并没有考虑REST。我以前说错了。事实上,框架是在考虑SOAP的情况下构建的,WebInvoke属性填补了这一空白。尽管围绕这个主题(Web API与WCF REST)存在很多争论,但ASP.NET Web API是在.NET中构建REST服务的一个新选项。我强烈建议任何读过这篇文章并且能够在他们的项目中使用.NET4.5的人将其作为一种选择。

        2
  •  4
  •   Chris S    14 年前

    如果你想要一个考虑REST的框架,你应该看看OpenRasta。。。

    http://openrasta.org/

        3
  •  2
  •   tvanfosson    17 年前

    您可以考虑使用ASP.NETMVC作为RESTfulWeb服务平台。从长远来看,WCF可能是一条可行之路,但MVC应该能够轻松应对。您的操作只需要设置为返回JSON或XML,这取决于您想要序列化它的方式。MVC提供了JsonResult和完全可定制的ContentResult——也就是说,您可以序列化对结果的string属性的响应,并设置其类型和编码。

        4
  •  1
  •   Cheeso    16 年前

    使用WCF REST。

    你今天就可以用。WCF REST库已准备就绪,可在生产中使用。

    WCF起动机套件(请参阅 http://msdn.microsoft.com/en-us/netframework/cc950529.aspx

    另一方面,在一般情况下,构建REST客户端时,我建议利用初学者工具包(Microsoft.Http.dll)中的HttpClient程序集。它小,简单,有用。即使在初学者工具包的当前“预览”状态下,也具有低风险和高价值的依赖性。

        5
  •  0
  •   user18044    17 年前

    我不确定2.0是否有REST解决方案。因此,我认为WCF将是您必须采用的方式。 MSDN has a long introduction to it

    我个人的想法是,如果一项技术仍处于测试阶段,那么我宁愿不将其用于可能成为生产应用程序的东西,因此我将从WCF开始,因为它是在框架的3.0版本中引入的。

    3.0和3.5实际上是对库的更新,但CLR仍然是2.0,因此如果您正在使用的库在新框架中没有被弃用或更改,那么应该可以。

        6
  •  0
  •   Pontus Gagge    17 年前

    看看 this CodeProject 作为一个起点。似乎有点。。。哈奇。现代化 WCF 会更干净。

        7
  •  0
  •   david valentine    17 年前

    休息,还是休息

    <System.Web>
      <webServices>
                <protocols>
                    <add name="HttpSoap"/>
                    <add name="HttpPost"/>
                    <add name="HttpGet"/>
                </protocols>
            </webServices>
    </System.Web>