《SOP基础知识培训(普元)》由会员分享,可在线阅读,更多相关《SOP基础知识培训(普元)(33页珍藏版)》请在金锄头文库上搜索。
1、SOA基础知识培训,黄 凯 上海普元该公司产品架构组,服务概念的演进,1950,1995,2002,2008+,抽象层次不断提高,不断贴近业务,面向服务的设计特征,服务查找 服务安全性 面向服务的管理 服务集成 事件驱动的架构 (EDA) 服务自动配置 服务呈现 服务开发和生命周期管理 用于设计、开发和管理针对 SOA 环境的服务控件的环境,SOA 与 WebService的关系,SOA是一个结构性的概念,WebService是一个实现层面的规范。两者都是抽象的描述而不涉及具体的实现。 SOA中数据描述可以是WSDL中的schema WebService是SOA的底层技术之一 调用协议 :SO
2、AP 接口的描述 :WSDL SOA不仅仅是 WebService,SOA应用的多层架构,SOA应用的开发方法,SOA实施准则,1)清晰的边界 2)共享契约和Schema,而不是Class类 3)策略驱动 4)自治 5)用格式连接,而不是用程序API 6)面向文档 7)松耦合 8)兼容工业标准 9)厂商无关 10)元数据驱动 参见:,OSOA规范构成,SCA,QoS Container,Binding,ESB,SDO,DAS,SCA系列规范,Assembly Assembly is the process of composing business applications by config
3、uring and connecting components that provide service implementations Client & Implematation Whenever code based on another technology is used as part of an SCA module, the non-SCA code can use SCA services via the SCA client model. Java C+ BPEL Spring PHP Policy Security,SCA的Assemble模型(1),SCA Assemb
4、ly : component,service 对外提供的服务 interface 描述服务的接口, 每个service有一个interface interface.java interface.wsdl reference 需要使用的其他服务, 类似 Spring 的依赖注入 描述对所依赖服务接口的定义, 依赖注入时检查是否匹配 property 需要依赖注入的属性 使用.componentType 文件或者Java 注释描述 component,SCA Assembly : component, USD ,SCA的Assemble模型(2),SCA Assembly : composite,
5、 USD ,SCA的Assemble模型(3),SCA的Assemble模型(4),SCA服务的Client端特性,Conversational Services Client Session Context Callbacks Stateful Stateless Synchronzied Asynchronized,SDO构成,Java,C+,PHP,SDO Core,Runtime & Framework,SDO的本质,简洁而统一的异构数据访问架构 增强型DTO( Best DTO practice ) 中立的API 离线数据 可定制的数据访问层 内嵌XML(Schema)支持,XML/
6、JAVA集成,SDO 的关键特性,同时拥有静态和动态的数据结构 同时拥有动态和静态数据访问方式 丰富的数据对象 内置的XML和XML Schema支持 对象图的Xpath导航方式 变更历史 反射、元数据 约束、验证 对象间关系,异构应用间的数据流转,SDO在SCA中的关系,SDO = Service Data Objects 一种访问和修改数据的技术 专门为松散耦合优化 采用乐观锁的检入/检出 SDO 是 SCA的优先但非必要的数据载体 SCA也支持其他数据形式 如JAX-B (Java) SCA 搭配 SDO是最优组合 a unifying API for data regardless o
7、f source SDO Data Access Service a kind of SCA component,SDO :DAS规范,OSOA已经成立 Project 示例: / 创建 DAS DAS das = DAS.FACTORY.createDAS(getConnection(); / 查询结果 String query = “select * from CUSTOMER where ID = 1“; Command readCustomers = das.createCommand(query); DataObject root = readCustomers.executeQue
8、ry(); DataObject cust = root.getDataObject(“CUSTOMER1“); / 修改数据 cust.setString (“LASTNAME”, “Williams”); / 保存改变 das.applyChanges(root);,SDO和SCA的关系,SDO = Service Data Objects 一种访问和修改数据的技术 专门为松散耦合优化 采用乐观锁的检入/检出 SDO 是 SCA的优先但非必要的数据载体 SCA也支持其他数据形式 如JAX-B (Java) SCA 搭配 SDO是最优组合 a unifying API for data re
9、gardless of source SDO Data Access Service a kind of SCA component,SOA与Java的关系,高级接口和语言接口 跨语言的实现 与现有技术的比较 EJB、CORBA是具体的组件编程模型 WebService 跨应用的调用协议 JBI (JSR-208)更关注业务集成中服务的生命周期和消息路由,着眼BPEL4WS,SCA的Java静态接口,CompositeContext context = CurrentCompositeContext.getContext(); HelloService helloService = ( Hel
10、loService)context.locateService(“com.eos.test.HelloService“); String result = helloService.hello(“Hello World!“);,SDO Java语言规范的内容,SDO的Java模型 如何用Schema定义SDO数据类型 SDO中基本类型和Java类型的映射 SDO的XML序列化 SDO所使用的Xpath导航语法 SDO变更历史的格式,SDO基本Java模型(v2.0),SDO的Java静态接口,Type sdoType = TypeHelper.INSTANCE.getType(“com.pri
11、meton.sample.Retailer”, “PurchaseOrder”); DataObject purchaseOrder = DataFactory.INSTANCE.createDataObject(sdoType); PurchaseOrder dy_purchaseOrder = (PurchaseOrder)purchaseOrder; dy_purchaseOrder.setCustomer(“Alice”); /或者直接 PurchaseOrder dy_purchaseOrder = (PurchaseOrder)DataFactory.INSTANCE.create
12、(PurchaseOrder.class);,SDO与其他Java数据载体的比较,延伸阅读,Jeff Hanson, Coarse-grained Interfaces Enable Service Composition in SOA, JavaOne, August 29, 2003 ZapThink White Paper, The Complete Vision of Service-Oriented Enterprise Management, December 2003 Jason Bloomberg, The SOA Implementation Framework, , Apr
13、il 2004 Jason Bloomberg, When Not to Use an SOA, IBM White Paper, New to SOA and Web Services, www.DeveloperW Meta Group White Paper, Practical Approaches to Service-Oriented Architecture, November 2003 Kishore Channabasavaiah and Kerrie Holly, IBM White Paper, Migrating to a Service-Oriented Architecture, April 2004 作者博客:,SOA时代,