SCA架构思想学习入门
 

2009-12-01 作者:keki 来源:网络

 

1. SCA的目标:

  • 很好的集成现有的系统
  • 服务组件与传输协议的绑定达到一定的松散耦合,服务组件可以自由的选择传输协议,从而达到服务组件的最大可重用性。

2. SCA的优势:

组件之间处于一种松散耦合的状态,不需要在自己的代码中加入对方组件的接口代码不需要指导对方的技术系统,在组件客户端的调用程序中不能有任何和具体技术相关的接口。

3. SCA服务组件的组成部分:

  • 服务(Service):用来让其他组件调用。是一个接口,类似于Java的Interface
  • 组件实现(Implementation):实现上面所创建的服务,类似于Java的接口的实现类
  • 引用(Reference):一个组件可能需要调用其他组件,需要创建一个其他组件的引用。
  • 属性(Properties):对组件实现的一种属性参数的注入

4. 服务组件的配置文件(通过SCDL 来定义)

例子:

<?xml version=”1.0” encoding=”UTF-8”?>

<!--MyValueComposite_1 example -- >

<composite name=”MyValueComposite”>

   

    <component name=”MyValueServiceComponet”>

         <implementation.java class=”service.mycalue.MyValueServiceImpl”/>

         <property name=”currency”>EURO</property>

         <reference name=”customerService”/>

         <reference name=”stockQuoteService”/>

   </component>

</composite>

5. SCA的组件类型(ComponentType):定义了Service,Reference,Property的类型,具体信息,不一定需要这些定义,一般可以从组件配置文件中获取这些信息

Java Implementation Example: componentType

<componentType xmlns="http://www.osoa.org/xmlns/sca/1.0"

xmlns:xsd="http://www.w3.org/2001/XMLSchema">

<service name="AccountService">

<interface.java interface="services.account.AccountService"/>

</service>

<reference name="accountDataService">

<interface.java interface="services.accountdata.AccountDataService"/>

</reference>

<reference name="stockQuoteService">

<interface.java interface="services.stockquote.StockQuoteService"/>

</reference>

<property name="currency" type="xsd:string"/>

</componentType>

 

6. SCA绑定(Binding):

Web Service绑定:

两种方式:

  • 通过”uri”:

<binding.ws uri="http://www.sqs.com/StockQuoteService"/>

  • 通过“wsdlElement”:

<binding.ws wsdlElement="xs:anyURI"?

wsdli:wsdlLocation="list of xs:anyURI"?>

<wsa:EndpointReference>...</wsa:EndpointReference>*

</binding.ws>

EJB Sessions Bean绑定:

  • 支持无状态会话Bean和有状态会话Bean
  • 支持EJB2.X和3.0
  • 使用<binding.ejb …/>标签

<binding.ejb uri="corbaname:rir:#ejb/JobBankServiceHome“

homeInterface="com.app.jobbank.JobBankServiceHome“

ejb-link-name="jobbankEJB.jar#JobBankComponent"/>

JMS绑定:

  • 基于JMS的API
  • 允许基于每个操作的基础上设置JMS headers和用户属性
  • 默认数据绑定和操作选择
  • 用法为:<binding.jms…./>

<binding.jms>

<destination name=”StockQuoteServiceQueue”/>

<connectionFactory name=”StockQuoteServiceQCF”/>

<resourceAdapter name=”com.example.JMSRA”/>

</binding.jms>

火龙果软件/UML软件工程组织致力于提高您的软件工程实践能力,我们不断地吸取业界的宝贵经验,向您提供经过数百家企业验证的有效的工程技术实践经验,同时关注最新的理论进展,帮助您“领跑您所在行业的软件世界”。

资源网站: UML软件工程组织