sca容器

5 views
Skip to first unread message

王玉峰

unread,
Oct 27, 2008, 10:54:51 PM10/27/08
to tuscany-s...@googlegroups.com
我怎么感觉每个要应用sca的web项目,都需要tuscany的支持,这样分布
式项目,不是每个分布点都需要部署tuscany,感觉比较麻烦啊,而且sca
和功能感觉有点局限,不象bepl那样动人,感觉sca不如esb+bepl实在啊,当然也看了好多tuscany和bepl整合的例子,总觉得怪怪的,谁指引下

Raymond Feng

unread,
Oct 28, 2008, 12:37:58 PM10/28/08
to tuscany-s...@googlegroups.com
好问题!

一个SCA的组合式应用可以包含不同的部件实现技术, 而且SCA支持递归式组装. SCA可以将其他组装模型(Spring, JEE等)包装成SCA的部件. 举例来说, 如果你的SCA应用有以下类型:

1. A Web 2.0 Widget Component
2. A Java Component
3. A component implemented as a Spring application context
4. A component implemented as a JEE component
5. A component implemented as a BPEL process

当你发布该应用时,
1 --> 流览器
2 --> Tuscany
3 --> Spring
4 --> JEE应用服务器
5 --> BPEL引擎

并不是支持任何一个SCA的部件实现技术都需要SCA的容器. SCA提供一个部件和拼装模型, 该模型可以有不同的支持手段:

1. 运行环境: SCA容器直接解释SCA的元数据(Metadata), 其他部件实现和通讯技术嵌入在SCA容器中
2. 模型映射: 如果该模型可以映射到具体技术的发布描述, 那么该部件就可以直接发布到支持其实现技术的容器而不需要SCA容器.
3. 混合环境: SCA容器和其他容器协同

说到SCA和BPEL, 其本质区别在于:
SCA定义应用的逻辑结构, 即该应用包含那些业务服务, 它们之间的依赖关系, 以及如何拼装. (类似UML的Class图)
BPEL定义应用的控制流程, 即应用内的业务服务的调用时序, 分支条件 (类似UML的Sequence图).

Raymond

竹十一

unread,
Oct 28, 2008, 10:39:27 PM10/28/08
to Tuscany SCA 中文论坛
就我目前的理解,SCA其实是把其他各种服务引入自己应用的工具。
举例来说,现在有A->JEE(EJB/JMS/..)的应用(服务),B->BPEL(..) process,C->Web2.0
Component(Widget/json/..),如果现在要做一个建立在A、B、C基础之上的应用,那么SCA是一种最合适的工具,它用类似的方
式,把三种不同类型的服务引入系统,避免了维护三种不同服务接口的工作量。
而作为发布服务的工具,SCA其实是不太合适的。
再举例 :-) 已有应用是Web2.0类型的。现在要发布出一个服务,不管我是选择RESTful的,还是widget,还是json,都有相对应的
简单工具,为什么我要引入SCA这么大型的工具呢?就好比现在我就想剪指甲,非买个瑞士军刀来剪,我觉得酷,你也看我像装13对吧?(又举例,真是一例
解千愁啊)
ESB和BPEL都有他们各自的应用场景,直接拿来和SCA比较并不太合适,而且他们也不是同一层次的工具。ESB是要解决服务通道,BPEL要解决服
务流程,SCA要解决服务装配。
在与ESB、BPEL搭配的场景下,SCA的角色可以是,1、服务提供,通过SCA暴露服务;2、服务引入,通过SCA引入通过ESB或BPEL暴露的
服务。

chenqj

unread,
Oct 29, 2008, 2:29:40 AM10/29/08
to Tuscany SCA 中文论坛
我觉得SCA很重要的一个优点是能够将binding在不同协议的Service Component以一致的方式装配在一起

但同时也觉得SCA过于强调Service了,尤其在web应用中,有些重型,不如spring这样具体的技术灵活

ken

unread,
Oct 30, 2008, 10:55:04 PM10/30/08
to tuscany-s...@googlegroups.com
我对tuscany是否应该提供A Web 2.0 Widget Component有些看法。
首先 tuscany中将此种组件也作为一个服务发布,我认为不妥,此种组件应该属于展现层,而非服务层。即使将其作为一个服务,其它组件如何引用它?!我觉得这违背了对服务的定义。
第二 如果用tuscany实现的应用中存在这种组件,那就可以认为该应用与传统的web应用一样,而传统的web应用都是部署在应用服务器上的,应用服务器通常提供集群来实现大并发量时系统的横向扩展。目前,用tuscany来实现的应用是运行在tuscany的运行环境中,该运行环境目前似乎没有集群。请问,如何实现系统的横向扩展?

综上,个人认为tuscany只适合提供后台核心服务,而应用中web相关内容的,则应按照传统web应用一样部署于一个应用服务器中,web应用中的数据,操作均来自前面提到的由tuscany
runtime上运行后台核心服务。

一点建议,上面我提到的这种架构下,web层和核心服务层是逻辑上分离的。而目前它们之间的通讯(web -->
核心层,除ajax调用)是通过远程调用的方式,tuscany是否可以提供一个客户端调用机制,来优化交互。


2008/10/29 chenqj <che...@gmail.com>:

--
ken

Raymond Feng

unread,
Oct 31, 2008, 12:07:03 AM10/31/08
to tuscany-s...@googlegroups.com
谢谢你的意见. 我想指出SCA是一个服务组件模型, 业务可以提供服务和消费服务. 有的组件只提供服务, 有的组件只消费服务, 而有的组件同时提供和消费服务. Web 2.0 Widget组
件和JEE的Web和MDB组件都是只消费服务的例子.

Raymond
--------------------------------------------------
From: "ken" <ken.c...@gmail.com>
Sent: Thursday, October 30, 2008 7:55 PM
To: <tuscany-s...@googlegroups.com>
Subject: Re: sca容器

王玉峰

unread,
Oct 31, 2008, 1:23:19 AM10/31/08
to tuscany-s...@googlegroups.com
^_^,也就是服务都是后台通讯的方式,但客户使用肯定得基与界面来实现,想请教下,现在有兄弟在项目中使用tuscany的吗,能不能描述下使用场景
Reply all
Reply to author
Forward
0 new messages