zoukankan      html  css  js  c++  java
  • 关于StoneAgeDict的当前架构小结

    从上次迭代结束(14号)到今天,基本完成了系统核心框架设计。

    按照我们的计划,现在是迭代1阶段,貌似在进度上还是计划得比较好。不过,这3天一直忙着一面学习OSGi,一面重构核心框架,有的任务可能耽搁了点:-)

    但是,我们的应用框架现在更合理了,呵呵。说一下目前的设计:

    基于OSGi的面向服务组件模型

    所有工程编译打包后都作为了一个组件,提供一定的服务。目前,我们有

    DesktopApp组件:StoneAgeDict桌面版本GUI

    DictsManager:词库管理器,管理用户下载的、自定义的词库

    StarDictQueryEngine:StarDict(星际译王)词库的查询引擎

    在没有基于OSGi框架以前,迭代0完成的时候代码量有5000多行。基于OSGi后(由于框架方面不用操心,删除了N多的工厂类,还有减少了很多 抽象类),代码量为3000多行。可以看出,重用OSGi框架不仅使我们的系统有了SOA的味道,大家都可以以相同的服务视角去看系统,易理解,而且在开 发的复杂度上大大降低了。

    举个例子,以前拿到需求,都是只停留在了OO的层次上做的设计。团队开发的时候还是以类/包,或者子系统的方式分工,感觉不是很高效。特别是设计的 时候,interface类/abstract类,Factory类作为了整个系统各个部件之间解耦的关键,需要投入相当多的时间去设计和实现。即便这 样,系统以后应变的能力还是不能太好,特别是随着系统变得越来越巨大的时候,维护的代价可能是成指数倍的。而基于OSGi框架,Component- Oriented,甚至是Service-Oriented的高度去设计的话可以把整个应用的架构做得更好。对于每个素服粗件,我们都需要清晰地定义出它 Import和Export的服务,而且这是纯服务,内部实现完全被隐藏了!加上OSGi提供对于每个服务组件的版本描述,可以很好地解决组件更新的问 题。这样,我们可以实现极低耦合的系统,而且系统功能还可以无限扩展!


    关于Spring与OSGi的整合

    以前用Spring这个IoC容器,感觉那个神奇啊,如今用OSGi这个组件服务框架,感觉那个实用啊!

    呵呵。。。。

    话说回来了,如果要做Java的Web应用,Spring应该是首选框架。理论上来说,OSGi可以整合Spring进去,不过这样做貌似比较困难。。。。

    还是用Spring整合OSGi,网上教程比较多,有把握。只要Spring可以调用OSGi里的各种Bundles,目的就达到了!

     

    Flex和Spring的整合

    StoneAgeDict的Web界面上,目前暂定使用Adobe Flex。接触一下RIA的技术,还是比较好的。

    关于Spring和Flex整合,这个问题应该不是很复杂。这两个都是当前业界用得比较多的,所以技术上可以完成。

     

    通过前面的介绍,我们的系统整体架构上用到的技术/框架基本就是

    Web方面:Flex + Spring + OSGi

    桌面方面:Swing+ OSGi

    所有基础服务全部做到OSGi里,然后。。。。三个框架整合一把,不知道要有多少“胶水配置代码”,呵呵。

     
  • 相关阅读:
    SQL Server 阻止了对组件 'Ole Automation Procedures' 的 过程'sys.sp_OACreate' 的访问
    谷歌浏览器扩展程序manifest.json参数详解
    获取天气api
    UVA 10385 Duathlon
    UVA 10668 Expanding Rods
    UVALIVE 3891 The Teacher's Side of Math
    UVA 11149 Power of Matrix
    UVA 10655 Contemplation! Algebra
    UVA 11210 Chinese Mahjong
    UVA 11384 Help is needed for Dexter
  • 原文地址:https://www.cnblogs.com/lanzhi/p/6470589.html
Copyright © 2011-2022 走看看