科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道SCA软件架构设计理念分析

SCA软件架构设计理念分析

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

SCA (Service Component Architecture) 是一个开发SOA(Service-Oriented Architecture)面向服务应用的简单模型规范,它描述用于使用SOA构建应用程序和系统的模型。本文仅仅涉及插件式设计模式及工厂模式的深化和发展。

作者:李俊杰 来源:Csdn博客 2007年12月26日

关键字:

  • 评论
  • 分享微博
  • 分享邮件

在本页阅读全文(共6页)

3、Tuscany SCA软件架构设计思想

通过SCA基础知识的介绍,我们了解了大致的需求,感谢Tuscany的架构师和工程师,是他们奉献了自己的聪明智慧,创作出如此赏心悦目的精品大作,深刻品味大型软件架构设计的精髓,分享软件设计的豪华盛筵,汲取设计的精华。

(1)插件式软件设计思想

不论是Eclipse,还是炒得火热的ESB,都使用插件式的设计思想,所谓插件式,可插拔的软件架构,就是极大地体现了松耦合的设计理念,虽然是从原有的设计模式阵营中走来,但其出现给现有的设计模式以很大的冲击并提升了和补充现有的设计模式。在Tuscany中同样如此,可以说把插件式的设计思想用到了极致。下面类图非常简单,但它就是类似于注册中心功能的扩展点注册类,它是Tuscany的最基本和最基础的设计架构,后面有相对复杂的设计,也是建立这种基本架构的基础之上拓展出来的。

图3
图4

基本工作原理:

上面的静态类图表现了注册结构的静态分析,类org.apache.tuscany.sca.core. DefaultExtensionPointRegistry的getExtensionPoint流程图体现了在如何从注册中心获取需要的对象的过程。从本质上分析ExtensionPointRegistry就类似于Collection,其功能无外乎可添加,可删除,可获取,这儿用HashMap<Class<?>,Object>来实现,HashMap也就是put,get,remove方法。可以把DefaultExtensionPointRegistry理解为HashMap的特殊封装,其中<Class<?>,Object>是非常重要的。

换句话说,META-INF/services下面的文件相当于插件板组,其中包含着若干个插件板,每个插件板的插件孔是可以预先调配的。另外,类似于树的概念,有些插件板的插孔也可以插入子插件板,下面显示一个简单插件板的例子,插件板的名称是“org.apache.tuscany.sca.contribution.resolver. ModelResolverExtensionPoint” ,插件板的名称一般是Java接口的名称,而插孔的名称一般为实现类的名称,该例子仅仅声明了一个插孔,插孔名称为“org.apache.tuscany.sca.contribution.resolver.DefaultModelResolverExtensionPoint”,另外我告诉你一秘密,凡是以“ExtensionPoin”结尾的,一般是子插件板,呵呵!一般人我不告诉他。

# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#   http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.
org.apache.tuscany.sca.contribution.resolver.DefaultModelResolverExtensionPoint

从而,我们就可以非常方便地对插件板进行修改,或增加插件板来满足系统不断新增需求,不断新增模块,修改模块的需求。并且DefaultExtensionPointRegistry是系统中的根插件板,是其他所有插件板或者插件的根(root)。

(2)Factory设计模式的深化和发展

与插件式软件设计模式类似,Factory设计模式方面也有很大地发展和提高,为此仅用例子如SpringImplementationProviderFactory来说明Facory模式方面的设计理念和技巧。

如图所示,左上角的部分也同样是插件式模式。在META-INF/services/目录下有文件名称为“org.apache.tuscany.sca.provider.ProviderFactoryExtensionPoint”,文件内容有用的仅一行是“org.apache.tuscany.sca.provider.DefaultProviderFactoryExtensionPoint”,就是这样把DefaultProviderFactoryExtensionPoint插入到DefaultExtensionPointRegistry插件板的,同样ProviderFactoryExtensionPoint为接口名称,DefaultProviderFactoryExtensionPoint为实现该接口的具体实现。

图5
    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章