CTOCIO IT专家网

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

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

使用XML实现REST式的SOA

作者: 佚名,  出处:IT专家网论坛, 责任编辑: 包春林, 
2008-05-15 04:00
  面向服务体系结构常常意味着大型企业所用的重型技术。SOA体系结构模式的优点也适用于比较小的环境。

  2 为每个 URL 上的通信选择一种数据格式。

  3 指定每个资源上的方法。

  4 指定返回的数据和状态码。

  以下是具体的设计过程。假设您是一家航空公司的开发人员。公司有用于预订航班的软件,还有处理付款(现金和信用卡)的组件。它使用软件跟踪包裹、执行内部资源规划和执行许多其他任务。

  假设机场登记处的职员使用一个客户机应用程序,这个程序访问包裹跟踪服务,还使用一个服务为乘客分配座位。处理包裹的地勤人员只需要包裹跟踪服务,不需要其他服务。他们的客户机只允许他们确认已经登记的包裹是否到达了。不允许他们登记新的包裹。

  在这个示例中,我们将设计包裹跟踪服务。首先,决定资源:旅行者、航班和包裹(注意,在出现 {id} 的任何地方,都可以填写任意数字):

  http://luggagetracking.airlinecompany.com/bags/{id}

  http://luggagetracking.airlinecompany.com/flights/{id}

  http://luggagetracking.airlinecompany.com/travellers/{id}

  为每个资源选择一种数据格式:

  显然,这个模型过于简单了。对于当前的示例,只需要支持两个方法,因此这个模型已经足够了。登记处应该能够为乘客登记新包裹。在把包裹装进飞机时,地勤人员应该能够修改包裹的状态:

  ·对 http://luggagetrackingairlinecompany.com/travellers/{id}/newbag 执行 POST,返回一个 XML 结构。

  ·对 http://luggagetracking.airlinecompany.com/bags/{id}/status/{newstatus} 执行 POST,返回修改后的 XML 结构。

  使用标准的 HTTP 状态作为状态码。成功的操作都会返回 200。如果系统无法根据资源的 ID 找到它,就会返回 404。系统故障导致的任何错误都会返回 500。

  代码示例:URL 映射

  可以使用多种方式把 URL 映射到实现方法。比较先进的方法可能更灵活,应该用在比较大的应用程序中。这个小示例使用最简单的方法:正则表达式。下面是 BagServlet 上的 post 方法示例,它把 URL 参数传递给底层 servlet。可以在本文的下载文件中找到完整的 servlet 代码。注意,这里没有实现实际的底层服务。 以下是该示例:

  

      protected void doPost(HttpServletRequest request, HttpServletResponse response)

  throws ServletException, IOException {

  Pattern pattern = Pattern.compile("^/?.*?/bags/(.*)/status/(.*)$");

  Matcher matcher = pattern.matcher(request.getRequestURI());

  if(matcher.matches()) {

  String bagId = matcher.group(1);

  String newStatus = matcher.group(2);

  bagService.changeBagStatus(bagId, newStatus);

  }

  }

共5页。 9 1 2 3 4 5 :

网友评论

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

邮件订阅

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