CTOCIO IT专家网

天极传媒 比特网 | 天极网 | IT专家网 | IT商网 | 52PK游戏网 | 手机天极 | IT分众 |
IT专家网搜索

您现在的位置: IT专家网 > Web服务子站 > 技巧

简单Service方案-REST与JSON

作者: ,  出处:Blog, 责任编辑: 叶江, 
2007-08-03 13:46
  REST首先是一个词,然后代表了一种服务提供模式……

  1.REST

  N年前,一说到跨平台的服务方案,大牛们就想到"Socket Server",小兵们就一直退,退到会议室的墙角。

  几年前,一说到跨平台的服务方案,连客户都会想到"Web Service"。

  现在,是个人都可以,在几分钟里,使用REST风格把一个服务的客户端和服务端写出来。

  REST首先是一个词,然后代表了一种服务提供模式。嗯,圣贤说,任意服务协议,都可以拆成传输协议,服务模式,数据格式三维表达,那REST就是依赖http作为传输机制,request-reponse模式,数据是预先协商好的任意格式。

  结果,任何语言的客户端,随便用一个http库访问某个URL,将请求信息写成XML或JSON或纯字符串,放在POST实体中。服务端也任意的实现一个servlet甚至jsp/asp/php,接收客户端发过来的请求,返回XML/JSON/字符串的结果就完了。

  So Easy,心里是不是立刻就想到了实现的方式。Java里用Apache的HttpClient 发送一个POST请求。

HttpClient httpClient = new HttpClient();
EntityEnclosingMethod method = new PostMethod(url);

method.setRequestBody(fooXml);
method.setRequestHeader("Content-type","application/xml; charset=utf8");
httpClient.executeMethod(method);

String body = method.getResponseBodyAsString();

  另外一个XML/JSON的操作库,严重推荐codehaus的xstream,很漂亮的在xml/json和java对象间转换。比其他重型的xml binding方案便捷得多,下面是xml与java对象互转的代码。

Xstream  xs = new Xstream();

String xml = xs.toXML(foo);
Foo foo = (Foo)xs.FromXML(xml); 

  .Net下面就更简单,http库和xml库都自带了。

  一个很吸引人的地方,就是REST里,写服务不再是一个框架级的事情,不再需要配置文件和回调函数,只要懂几个API,甚至API都不要,白手DIY出服务来。

  当然,简单也有简单的代价,比如缺乏了事务、可靠性、WS-Address、UDDI等机制。不过这些机制在正统的WebService世界里使用的也不多。对于那些没有使用任何附加机制的纯WebService,都可以考虑用REST编写。

  再当然,REST的论文里还有很多内容,比如GET必须是幂等操作,PUT和DELETE语义的使用,URI的精心设计,配合起来能够以默认规则代替接口,不过暂时对我的意义不是很大,不想在资源的概念上折腾太多工夫,还是面向服务,全部POST了。

  最后,REST除了作为Service方案,还可以作为Web应用方案,比如Cetia4(https://cetia4.dev.java.net/)就叫板替代传统的MVC框架,不过我觉得又搞一堆框架后,简单就渐渐失去意义了,加上最近都不搞Web应用,花半天看完它的教程文档后,不再关注。

  2.JSON

  如果有大数据量的传输,JSON(JavaScript Object Notation),是对XML,尤其是SOAP中的复杂无比的XML的简化。如:

   {"product":{"name":"Banana","id":"123","price":"23.0"}}

  每种语言都有N种JSON解释器,像Java里的Jettison。XStream也用Jettison做driver,支持Java对象与JSON的序列化,建立XStream对象时将参数改为Jettision就可以了,其他操作与XML一样,见JSON Tutorial

   XStream xstream = new XStream(new JettisonMappedXmlDriver());

  无独有偶,Apache CXF(XFire)也用Jettison支持Web Service使用JSON格式,详见它的JSON Support

网友评论

笔名 
请您注意:遵守国家有关法律、法规,尊重网上道德,承担一切因您的行为而直接或间接引起的法律责任。    IT专家网友拥有管理笔名和留言的一切权利。
  • 周排行榜
  • 月排行榜

邮件订阅

       

该文章的读者还阅读了

天极服务 | 关于我们 | 网站律师 | 加入我们 | 联系我们 | 广告业务 | 友情链接 | 我要挑错
All Rights Reserved, Copyright 2004-2008, Ctocio.com.cn
渝ICP证B2-20030003号 如有意见请与我们联系 powered by 天极内容管理平台CMS4i