使用PHP开发SCA和SDO
首先我们看看SDO能提供给你什么。在一个典型的PHP应用中,数据一半来自关系数据库,但是如果这个应用程序后来不仅仅只是从这儿获取数据,而是从一个普通文本文件或者Web服务中获取数据呢?这个问题很复杂,因为每种数据源都会要求有自己的获取方式。
在这种情况下,PHP中SDO提供了一种处理数据源的透明方式。它不是单独的处理每种数据源,而是提供了一种统一的访问数据对象的方式。这种过程是通过数据访问服务(DAS)来完成的,它是SDO架构上的一种中介方式。让我们看看一个PHP中的SDO请求。
<?php |
注意最后的请求是如何处理未知的数据源的,你不知道这里数据是从哪里提取来的,只是使用了PHP的SDO格式来做一个查找,而细节是由DAS完成的,PHP目前能够支持获取XML和关系数据库的数据源。
SDO关心的是数据,而SCA使用了更加通用的类和组件来完成同样的透明方式。从任何PHP类中访问已有的业务逻辑需要强制开发者来围绕一类特定的假设来做设计吗?逻辑是否已在另外一个本地PHP类中?是否在网络中存在了?是使用PHP编写的吗?
当以上提到的场景在各自的要求中是可满足的话,那么每个都需要使用不同的方法处理。
使用SCA方式,逻辑在哪里存放就无关紧要了,更不要提使用何种语言来实现。那你一定会说:“这不是和一个普通的Web Service差不多吗?没什么不同啊!”那么我们举个例子来看看PHP SCA组件里包含了什么。
|
上文中最关键的就是包含@的语句部分,它们每个都提供了一种特定的SCA行为。最上层的@service标识,表示暴露一个类作为服务。在这个例子里,最后的getQuote函数将会是服务暴露的唯一操作,通过使用@param和@return标识。
这个最后的服务的执行或者部署——将会被委托为一个PHP SCA运行时——将会将我们带入一个创建WSDL合同的访问点,就像你可以在网络服务中看到的那样。除了这种部署服务的方式的简单性以外,SCA模型的真实优势将会在你检查getQuote代码时越发体现的明显。
注意到两个语句$this-<shipper->getShippingPrice($shippingCo)和$this->discountFee->getDiscountRate($customer),它们是基于类中前面的应用。每个应用被其支撑服务锁支持(由@reference和@binding标识来具体操作)在$discountFee用例中,这将是一个PHP类,而在shipper的用例中,这将是一个标准的WSDL基础的服务。
尽管PHP的简单和大量用户群体的支持使得它成为构建web应用的一个好的选择,但是它在企业应用的很多场景中能力有限,现在通过增加SCA和SDO,提供了对PHP和以往技术的强力支持,它也和其他主流语言一样,可以参与到面向服务的潮流中了。
【相关文章】
推荐阅读
-
PHP ignore_user_abort函数详细介绍和使用实例
-
PHP和Mysqlweb应用开发核心技术 第1部分 Php基础-3 代码组织和重用2
-
PHP和Mysqlweb应用开发核心技术-第1部分 Php基础-2 php语言介绍
-
php使用socket调用http和smtp协议实例小结
-
Laravel 中使用 swoole 项目实战开发案例一 (建立 swoole 和前端通信)
-
php使用cookie实现记住用户名和密码实现代码
-
PHP callback函数使用方法和注意事项
-
php接口和抽象类使用示例详解
-
PHP的new static和new self的区别与使用
-
php session和cookie使用说明