微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Web服务 – 什么好的开源REST Web服务技术在那里?

我正在寻找一个可怕的.NET(WCF)REST功能的替代品.

为什么?

我对开放源码技术很感兴趣,但是对于webservices来说,除了.NET webservices之外,我没有任何经验.

此外,我目前正在使用大量的JavaPython,而我正在从Microsoft技术栈移开.

请用任何编程语言来建议替代方案,但是要解释为什么它是好还是更好的原因. (这个原因可能与语言的选择密切相关)

我想知道什么?

>使用方便

>安装
>配置
>生成能力
> IDE集成
>部署

>学习曲线
利弊
>等

解决方法

Spring 3.0 REST:

Spring使用基于注释的控制器,可用于将URL绑定到控制器中的方法.注释用于区分GET方法和POST方法.

@RequestMapping(value="/hotels/{hotel}/bookings/{booking}",method=RequestMethod.GET)
public String getBooking(@PathVariable("hotel") long hotelId,@PathVariable("booking")     long bookingId,Model model) {

    Hotel hotel = hotelService.getHotel(hotelId);
    Booking booking = hotel.getBooking(bookingId);
    model.addAttribute("booking",booking);
    return "booking";
}

在引擎盖下,URI字符串中的变量“hotel”也被转换为参数列表中的一个长. Spring REST还可以使用相同的技术将JSON对象编入自定义类.请注意,此方法注释为RequestMethod.GET,这意味着它被调用为GET请求而不是POST请求.

Spring 3.0 REST使得创建RESTful Web服务变得更加容易,无需重新开发轮子,也可以通过手工从/对Java对象进行组装/解组JSON文本.

在SpringSource博客上有一个演示文稿,即REST In Spring MVC.学习曲线很低,但是由于依赖关系,让演示工作可能需要一些时间.一旦你得到安装并且有一个工作的演示,最难的部分应该结束.

对于IDE集成,请查看Spring Roo.我没有使用它,但我听说它有一些与Eclipse IDE集成的功能,使您的生活更轻松.

Restlets:

Restlets仅用于REST.因此,开销比Spring 3.0低很多. Restlets更适合您没有GUI的情况,以及您不关心MVC的情况. Restlet可以轻松地用作服务器和客户端.它还具有可以运行的嵌入式服务器,无需像Jetty或Tomcat这样的容器.

我很少接触到Python,但是从我看到Google App Engine实现的webApp框架看,路由器的概念感觉非常相似.具有Python背景的人可能会发现学习曲线要​​低得多:

@Override
public Restlet createInboundRoot() {
    Router router = new Router(getContext());
    getConnectorService().getClientProtocols().add(Protocol.FILE);

    // Serve the files generated by the GWT compilation step.
    Directory dir = new Directory(getContext(),LocalReference.createFileReference(new File("war/")));
    router.attachDefault(dir);
    router.attach("/contacts/123",ContactServerResource.class);

    return router;
}

它在客户端使用GWT;我更喜欢把这个部分,因为它提醒我太多的Java Swing.虽然有些人可能会发现有利,但我个人的喜好是坚持使用更像Web的技术.

以下是使用独立模式的REST服务器的简单示例.服务器在端口8182上运行,它监听GET请求.它具有与Spring REST框架类似的基于注释的模型,它也有助于拆分不同的HTTP方法,并将它们指向类中不同的方法.这是一个非常基本的“Hello World”REST示例:

public class FirstServerResource extends ServerResource {  

   public static void main(String[] args) throws Exception {  
      // Create the HTTP server and listen on port 8182  
      new Server(Protocol.HTTP,8182,FirstServerResource.class).start();  
   }

   @Get  
   public String toString() {  
      return "hello,world";  
   }

}

查看Restlet Web Site有关Restlets框架的更多信息和示例. Restlet的学习曲线略逊于Spring,因为它的目标是REST;因此,它不包含Spring中包含的所有额外功能,有时可以使问题难以找到答案.如果你正在寻找轻量级的东西,Restlet绝对是要走的路.

这两个框架都将在Tomcat,Jetty以及Google App Engine中运行.

原文地址:https://www.jb51.cc/html/230110.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐