王洪伟的专栏

http://blog.teamlet.org 本站搜索关键字:王洪伟+teamlet

王洪伟ID:teamlet
[修改头像]
132079次访问,排名509好友0人,关注者22
10年软件开发设计经验,专注J2EE领域的技术架构和应用.
teamlet的文章
原创 93 篇
翻译 9 篇
转载 65 篇
评论 121 篇
teamlet的公告
本站采用创作共用版权协议, 要求署名、非商业用途和相同方式共享. 转载本站内容必须也遵循“署名-非商业用途-相同方式共享”的创作共用协议.

关注SOA技术的发展,跟进SCA技术的理论和实现,努力实践。愿与同行者一起分享,互相勉励,共同进步。
最近评论
cxh0714:找到了,谢谢
cxh0714:说的不错,我是初学者,继续学习中,谢谢
cxh0714:(1)在哪
cxh0714:不好意思,我怎么找不到(1)啊
tjsongyy:您好,邮件已收到,多谢。
我后来自己也找到了那些自动生成的.java程序,并按照自己的需求更改了client和server端的skeleton,已经调试通过了。非常感谢您的帮助。
软件项目交易
订阅我的博客
XML聚合  FeedSky
订阅到鲜果
订阅到Google
订阅到抓虾
订阅到BlogLines
订阅到Yahoo
订阅到GouGou
订阅到飞鸽
订阅到Rojo
订阅到newsgator
订阅到netvibes
文章分类
收藏
    相册
    资源联接
    Cruise Control
    Open CSA
    OSOA
    SOA Tools Project
    theserverside
    中国Java开发网
    满江红
    知识共享@中国大陆
    左邻右舍
    donews的blog
    msn的blog
    Tuscany中文社区
    我用Subversion
    存档

    原创 细说SCA V1.0规范(3) -- Domain与业务

    新一篇: 回答:细说SCA V1.0规范(2) --Composite与架构 网友xiexie的问题

    从写第一篇"细说SCA V1.0规范(1) --component与实现"到现在已经有快6个月的时间了。这么长的时间间隔,最初构思的内容已经无法连贯的写出来。稳定的收入和充裕的时间是一对矛盾体,有多少人在两者之间不断的寻找着一种平衡。

    在写每一篇博客的时候,总是不能把所有的想出来的内容都写出来,真的很遗憾。其实可以很多不同领域角度来看SCA,从数据结构的角度来看SCA,可以从软件开发模型的角度来看SCA,可以从软件生命周期来看SCA。在每个不同的角度,都可以看到SCA良好的适应性和实用性。言归正转,下面说说Domain与业务的部分。

    首先,什么是Domain? Domain不就是域吗! 那么域又是什么含义呢? 上互连网有域名的概念,单位里有局域网的概念。这个Domain说白了就是作用的范围,有一个划分边界的含义。一个域就是一个范围,一个作用区域,在这个区域内包含的内容有一个共同的特性。在同一个领域中每个不同的域之间是有明显的分界和不同特性的内容。

    对于SCA中的每个域是针对于一个业务功能进行划分的。每个域对应一定的业务范围,这个业务域可能是一个子系统,也可能是一个模块。比如,财务部门可能有一个财务系统,对应一个财务系统的域。而人力资源对应的是人才管理的域。每个域都对域内的业务提供功能。每个域通过一个URI进行标识。

    在SCA构建模型时是从域开始的。一个域的URI标识和域模型可以是一对一,也可能是一对多的关系。一个URI必然对应一个Domain域且只能是一个。在v0.9规范中没有Domain域的概念,SCA还是可以run运行起来,所以Domain是一个逻辑上的层次。

    Domain域,我理解为两层。一层是命名层,将URI与Domain域建立关联,并通过URI实现对Domain域模型的访问;另一层是一个Composite层,模型中的对象以Composite组件形式进行组织,但是这些组件是由存在内存中的对象组成的,而不是通过外部的文件解析生成的。这些在内存中的对象是通过SCA容器实现初始化、构造、解析等管理的。

    <待续> 

    发表于 @ 2007年11月06日 00:04:00|评论(loading...)|编辑

    旧一篇: Tuscany SCA V1.0中的扩展机制和启动过程中的扩展点[11月29日更新]

    评论

    #SCA 发表于2007-11-06 03:20:59  IP: 59.64.12.*
    依LZ所言"对于SCA中的每个域是针对于一个业务功能进行划分的。"但是从网上资料来看好象不是这么理解的,http://blog.csdn.net/abigfrog/archive/2007/10/18/1831047.aspx,这篇文章是翻译过来的,里面关于DOMAIN的介绍是"一个SCA域是一个完整的运行时配置",而且这个观点在http://incubator.apache.org/tuscany/sca-overview.html的Introducing SCA(一篇关于SCA精彩的解说,22页英文)文中得到验证.也就是说一个DOMAIN应该是有着相同的runtime,运行在由一个Vendor提供的相同的环境上.(不知道对不,随便说说)
    还有个问题想请教下:就是对于两个component来说,比如componentA用JAVA实现,componentB用C++实现.那么A和B怎么交互呢.假如A提供一个JAVA接口,B提供一个什么样的接口呢.现在SCA就两种接口,一种是JAVA接口,一种是WSDL接口.那B是不是只能提供一个WSDL接口呢?
    假如A要引用B,B提供了一个Sevice,采用Banding.ws,而A的引用采用的绑定是Banding.jms,那A和B还能交互么,就是绑定的时候,是不是两个component的绑定协议必须一样?
    谢谢LZ了,辛苦了
    2007-11-06 11:50:16作者回复
    Q:对于SCA中的每个域是针对于一个业务功能进行划分的?<br />A:借用http://blog.csdn.net/abigfrog/archive/2007/10/18/1831047.aspx的片段作为回答:<br />"SCA域非常灵活,可以很小也可以很大:<br />一个很小的域,可能是一个在测试环境内的ide内 <br />中型域可能是一个单一的服务器还是小型集群,支持单一应用 <br />大型的域可以描述一个部门或公司的全部服务"<br />其实不仅仅是域,composite比域更加灵活.<br /><br />Q:DOMAIN的介绍是"一个SCA域是一个完整的运行时配置"?<br />A:一个SCA完整的运行时配置可以包含多个Domain,每一个Domain都在一个相同的SCA container中运行.比如:Tuscnay的SCA是一个SCA标准的实现,Tuscany SCA是Domain的运行环境,那么符合SCA标准的Domain可以在这个环境下运行;同样假设我的公司也按照SCA标准开发了一个实现,那么上面的符合SCA标准的Domain也可以在我的实现的环境下运行。那么每个Domain作为部署的单元都只能在同一个运行环境下,而不能将其分成几个部分运行在两个不同的运行环境中。<br />Q:就是对于两个component来说,比如componentA用JAVA实现,componentB用C++实现?<br />A:这一点和上面谈到的是矛盾的。一个Domain是一个完整的运行时配置,运行在"一个"相同的环境中。如果是在java环境下运行的,不可能又在C++的环境下运行。Tuscany SCA的实现目前分为3个实现,分别针对与不同的语言环境,它们是java,c++和php。他们可以通过URI 的web方式对Domain进行交互访问。<br />Q:假如A要引用B,B提供了一个Sevice,采用Banding.ws,而A的引用采用的绑定是Banding.jms,那A和B还能交互么,就是绑定的时候,是不是两个component的绑定协议必须一样?<br />A:如果A、B都是java环境下的同一个Domain下的同一个Composite中的Component,可以通过service和reference进行访问。访问通过两种协议:Java interface和WSDL PortType,而与在其内部Banding的细节无关,无论是Web Service、SCA、JCA、JMS、SLSB...中的那一种Binding,都是通过上述两种接口对外提供服务或者从外部引入服务的。<br />感谢关注!
    #SCA 发表于2007-11-08 01:10:48  IP: 59.64.12.*
    谢谢LZ的回答
    假如两个component,componentA和componentB分别处在不同的Composite上,假设为CompositeA和CompositeB,假如componentA提供一个JAVA接口,而componentB提供WSDL PortType.
    如果componentA有一个"引用",其绑定协议是Banding.jms.componentB提供了一个Sevice,采用Banding.ws.A要引用B提供的服务,那么componentA和componentB是如何通信的呢.
    现在它们的接口不一样(这种情况可能存在不,在一个相同的运行环境下,是不是只能提供相同的接口,也就是在JAVA开发环境下提供JAVA接口,在.NET平台下提供WSDL PortType?现在只有两种接口,那么在VC环境下提供什么接口呢,是不是需要扩展模型,自定义一种接口? )如何调用呢?
    如果接口一样,但是绑定协议不一样,而又不在一个Composite上,那两个component如何协议通信呢?
    在同一运行环境下,不同接口,不同协议的通信应该是存在的吧,不过我没看见过相关的例子.
    接口和绑定到底是一种什么样的关系,是不是假如A要引用B,是不是A通过引用调用B的接口,然后采取指定的绑定协议进行通信?问题是A和B的绑定协议不一样的话,那怎么办呢?


    另外,看LZ文章是不是把component,Composite,Domain都称为组件啊("三个粒度不一样的组件"),难道不需要区分么,component翻译过来不叫"组件"么.


    谢谢,这些还是想不大明白
    #SCA 发表于2007-11-08 01:22:12  IP: 59.64.12.*
    谢谢LZ的回答
    假如两个component,componentA和componentB分别处在不同的Composite上,假设为CompositeA和CompositeB,假如componentA提供一个JAVA接口,而componentB提供WSDL PortType.
    如果componentA有一个"引用",其绑定协议是Banding.jms.componentB提供了一个Sevice,采用Banding.ws.A要引用B提供的服务,那么componentA和componentB是如何通信的呢.
    现在它们的接口不一样(这种情况可能存在不,在一个相同的运行环境下,是不是只能提供相同的接口,也就是在JAVA开发环境下提供JAVA接口,在.NET平台下提供WSDL PortType?现在只有两种接口,那么在VC环境下提供什么接口呢,是不是需要扩展模型,自定义一种接口? )如何调用呢?
    如果接口一样,但是绑定协议不一样,而又不在一个Composite上,那两个component如何协议通信呢?
    在同一运行环境下,不同接口,不同协议的通信应该是存在的吧,不过我没看见过相关的例子.
    接口和绑定到底是一种什么样的关系,是不是假如A要引用B,是不是A通过引用调用B的接口,然后采取指定的绑定协议进行通信?问题是A和B的绑定协议不一样的话,那怎么办呢?


    另外,看LZ文章是不是把component,Composite,Domain都称为组件啊("三个粒度不一样的组件"),难道不需要区分么,component翻译过来不叫"组件"么.


    谢谢,这些还是想不大明白
    #SCA 发表于2007-11-08 16:15:27  IP: 59.64.12.*
    另外,一个component.Composite好定义,在配置文件里面能清楚的知道,这个是一个component,或者是一个Composite.
    但是这个Domain是在哪里体现的呢,我怎么知道它是属于一个"域"呢.
    "SCA的发布是以Domain为单位的,就象jar一样,可以保证它的完整性和一致性。Contribution可以称为服务的提供者,它是一个Domain或者多个Domain的集合,目前一个Contribution可以使用jar方式进行包装、发布。"
    请问在SCA里面为什么要发布呢,发布有什么好处?如您所说,一个Contribution包含一个或者多个Domain,那么一个Contribution肯定包含一个或者多个粒度比较小的服务."Contribution可以称为服务的提供者",那么Contribution怎么向外提供服务呢?
    我说具体一点,比如两个Contribution,一个Contribution怎么调用另外一个Contribution提供的服务呢.甚至在每个Contribution里面包含的Domain运行环境不一样的时候,服务的调用怎么进行?
    还有不明白的是,服务打包的时候,Contribution里面包含的服务如何暴露,怎么给其他服务调用,能做到与运行环境无关么.
    不好意思,网络不大好,老发不上去,有时候发重了,也一直支持LZ写下去
    发表评论  


    登录
    Csdn Blog version 3.1a
    Copyright © teamlet