CTOCIO IT专家网

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

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

服务于PHP的SCA和SDO

作者: Daniel Rubio,  出处:TechTarget, 责任编辑: 叶江, 
2007-03-14 10:29
  本文中将探究PHP等流行脚本语言怎样包含SCA、SDO这些相同的SOA技术……

  【IT专家网】由于OSOA协作组织的引导,SCA和SDO已经成为下面向服务架构的最新标准。企业在很广泛使用的程序环境中起先构思使用的语言,Java和C++,SCA和SDO都已经能为他们提供全统的平台,在本文中我们将探究流行脚本语言怎样包含这些相同的SOA技术。

  让我们从看看SDO能提供给你什么开始。在一个典型的PHP应用软件当中,数据将会很大程度上来自于一个相关的数据库,但是假如这些相同的应用软件稍后既需要访问这些资源的信息,又要访问一个平台或者Web服务的信息,那将会发生什么?最好的是它将可能成为一个很长的过程,最坏的它将会是一令人费解的任务,这样的原因是每个数据资源和他本身的一系列适当的古怪行为一起来的。

  这样来判断,当处理应用软件数据资源时,SDO为了PHP达到了SOA。取代起先和每一种数据资源工作,SDO提供了一统一的风格访问数据实体。完成这个过程的方法是通过DAS,一间接建造于SDO结构的标准。看看以下举例说明PHP中SDO查询的清单。

  Listing 1.1 SDO query in PHP

<?php
  $providers = $company->shippingByGround;
  foreach ($providers as $name => $value) {
     echo "$name: $value\n";
  }
?>

  注意为何这最后询问有数据源不可知的特性。那就是说,你不能说说出下面的数据是从哪里获取的,你用PHP的语句简单的做一个研究并且复杂细节被处理在DAS, PHP 当前支持XML和关系数据库来源

  当SDO集中在数据,SCA的决心是在达到这同样的透明度,但是以更加通用的类或者组成。什么将会成为另外一个典型的PHP情景,从任何PHP班强迫开发商限制一系列特别的假定设计访问现有的商业逻辑:这个逻辑是在另外一个PHP班?或者是它定位于穿过网络?甚至它是不是用PHP写的?

  当每一个上述情景是可溶解的,每一个要求有不同的编码技术。

  用SCA的方法,这样的逻辑位于的地点-- 横跨网络或当地-- 应该是需讨论的点,不要提及语言工具—PHP,JAVA或者是C++—都将不相关。这最后的陈述可能会让你问“嘿,这个听起来很像非选拔的网络服务,不同在哪里?”好好看看清单1.2,包括一PHP SCA组件。

  Listing 1.2 SCA component in PHP,

<?php

include "SCA/SCA.php";

/**
 * Calculate a shipment price for a given customer using a specific provider
 *
 * @service
 */
class ShipmentQuote {

    /**
     * The customer discount fee service to use.
     *
     * @reference
     * @binding.php ../DiscountFeeRate/DiscountFeeRate.php
     */
    public $discountFee;

    /**
     * The shipping service to use.
     *
     * @reference
     * @binding.wsdl ../Shipper/ShipperQuote.wsdl
     */
    public $shipper;

    /**
     * Get a quote for a given customer using a specific provider
     *
     * @param string $shipping The shipping company
     * @param string $customer The customer requiring shipment, in order to obtain discount rate
     * @return float The quote for a given customer using a certain shipping provider.
     */
    function getQuote($shippingCo, $customer)
    {
        $rateShip  = $this->shipper->getShippingPrice($shippingCo);
        $rate   = $this->discountFee->getDiscountRate($customer);
        return  $rate * $rateShip;
    }
}
?>

  上次陈述的最重要的内容是那些made in @statements,自从每一个都提供特定的SCA行为。东西完成是 @service tag, which is charged with exposing the class in question as a service.这特定的例子,getQuote公式是唯一通过服务执行,有些是通过使用the @param and @return annotations获得。

  实际执行或采用这个服务代表PHP SCA runtime -- 将让我们进入 point capable制作一个 WSDL contract, 和你想获得其它web服务一样。除了简单的采用这个服务在in this manner,真正好处是让SCA's model成为更好证据,当你测试getQuote function code时

  陈述 $this-<shipper->getShippingPrice($shippingCo)和 $this->discountFee->getDiscountRate($customer),是2个基本的references出现在早些是候的课. 每个 references 都保留在 underlying services -- 感谢 SCA's @reference and @binding annotations -- 例 $discountFee 这是 a PHP class and in shipper's case 成为标准的 WSDL backed service。

  你也了解到,大多的能量在 SCA's programming model是很简单,你可以建立 chained calling sequences services不需要 tainting the actual business logic, 可以简单得结论:简单移去所有我们只欠描述的 SCA annotations . 若这样做了, 就只留下 plain business logic 而没其他的依赖, 一个很高利益characteristic which is highly beneficial to不仅是为发展 SOA服务, 同时在software方面的利益。

  虽然PHP简单和用户群体广泛地的特点使得他成为人们喜欢使用的一种建构网络的应用软件,可是到目前为止, 它的适用范围仅限于一小部分企业, 但根据PHP现在所支持的sca和sdo,以及雷达技术组织试图上显示的技术试图实现soa的情况来看,珩磨你PHP的技能可能是明智的选择, 尤其在一些像其他主要语言的东方国家服务领域。

查看本文国际来源

网友评论

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

邮件订阅

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