月光博客 » 编程开发 » “开架式”软件设计是未来之路

“开架式”软件设计是未来之路

  早期的国内应用软件产品,其扩展性都是相对较差的,尽管开发商也为此作过很多工作,包括二次开发工具包等等。主要原因就是这些应用本身框架的局限性,不具有可扩展性,在设计时我们关注的只是应用程序的实现,没有关注我们的应用应该构建在一种开放的框架上。(当然开发语言本身也有一定的局限性)

  “开架式”软件设计是基于应用程序的可扩充性提出来的,是一种软件底层架构的实现方式。他更关注应用程序底层架构的实现,与具体应用程序的实现无关,或者说具体的应用程序是构建在这种架构定义的范畴之内的。

  在这种设计思想下,我们的应用程序框架可形象比喻成书架一样,我们提供一个架子(规范),书架内容的不断丰富,就好像将不同的书(功能/插件)放在架子上一样,当然书需要满足我书架尺寸的要求。

  在这种框架下,提供的是一堆服务和资源以及调用和扩展这些服务及资源的规范,而这些服务和资源也是可扩展的,你可以在一个组件中编写一些服务和资源由框架加载并与其他的组件分享。组件的功能是由框架加载并执行,它可以访问框架提供的资源和服务,如可以访问界面元素,访问数据库、文件,调用日志服务写入日志、访问多语言信息等等。

  大概的运行时框架如下:

“开架式”软件设计是未来之路

  图中的组件A和B可理解为系统提供的组件或者应用程序功能性组件。

  其中的关键就是要提供一种机制:

  1、 保证组件可以被框架加载并运行,

  2、 将组件中包含的资源和服务注册到该框架中,

  3、 组件访问框架中的资源和服务的透明性。(也表现出组件间、组件和框架间的协作性和可访问性)。

  有了这样的应用程序框架,我们可以任意扩展应用程序的功能组件,只要他遵循框架定义的规范。我们可以新增加一个组件,可以提供新的资源和服务(如果愿意),可以访问框架中的资源和服务就好像这些都是该组件自身具有的,而组件中提供的功能可以通过配置插入到恰当的菜单或工具条供用户调用。而这些对用户是透明的,他们不知道界面中的某个功能究竟来自于那一个组件。组件和组件之间是彼此独立的离散的。

  远景:

  将产品发布成为这样一套框架(标准)和预先提供的功能组件,用户可以到网上直接下载组件进行程序的升级,用户可以根据框架定义的规范自行开发,甚至有第三方软件公司根据框架的内容和标准专门开发特有的功能,如软件对GPRS、视频会议的支持等等。也可以支持OpenSource,开放标准提供给网上大量的开发者开发功能组件,作为用户可以在网上找到需要的功能组件。这些或多或少已经是一种商业模式的问题了。

  优点:

  1、 扩展性极强,可以到甚至

  2、 因为组件和组件之间是彼此独立的离散的,带来的升级也是方便的,

  3、 程序更新只需要下载和替换相关的组件即可,

  4、 程序的架构是严密的,

  5、 架构本身的升级比较容易。

  缺点:

  1、 性能的影响。高扩展性必然以牺牲一定性能作为代价的。

  2、 功能扩展的不定性。

  3、 高度共享带来的安全性也是一个要考虑的问题。

  (注:本文为我同事杨舰的几年前的稿件,该文从项目经理的角度提出了一种新的开发框架,供大家参考)

顶一下 ▲()   踩一下 ▼()

相关文章

  1. 1
    KWL   说道:
    专业文章哦 仔细看看
    wordba.cn 于 2009-6-1 15:51:45 回复
    认认真真学好每一个字!!
    支持(18反对(10回复
  1. 2
    布股鸟   说道:
    呵呵!只是业余研究点程序,没考虑这么多啊
    tc 于 2009-6-11 16:18:58 回复
    shia
    支持(10反对(3回复
  1. 3
    管智鹏   说道:
    我以为昨天月光会写Yahoo!统计换成量子统计的。没想到不是!
    支持(12反对(6回复
  1. 4
    呵呵我不懂   说道:
    做个单纯的程序员本身并没有多大前途,从软件设计为基础逐步走向管理和架构设计才是正道。

    楼主所谓的开架式就是开放式开发框架,名字起得不好听,比较土。呵呵

    现在很多软件都实现了这种可扩充的框架,而其他的软件系统基本上都是这类的结构。

    所谓开放式还是封闭式软件体系架构,都是根据需要产生的,有些需要开放,有些需要封闭,不能以一代之。

    支持(12反对(7回复
  1. 5
    Miller   说道:
    这种框架表面看似不错,实际上是一种现有方式的泛化,把具体插件思想抽象到了软件的基层结构。但是实际实现的难度很高,而收效却不理想,甚至在实际应用中会发现一些地方和理论提出的方向出现了矛盾,比如结构细分之后的共享资源可控性低,提高可控性却降低了安全性,资源整合能力受限于分散的框架节点(还有一些其他问题就不细说了)。
    我在05年-06年做了类似尝试,建立了和这样一套理论极其相似(甚至有大量的补充)的一个框架,并且使得最基本的功能可以运行起来,并尝试对实际产品进行移植,然而,实际应用的效果非常糟糕。其中最糟糕的有两个方面(其他方面也不说了),一个是对参与开发的人员的要求比原来高了不止一个层次;另一个是框架是开放式的,而框架节点(即实际功能)是高度整合的,这样一种冲突下,框架可以提供怎样的资源控制成为限制框架可发展空间的决定性条件,而框架的出发点就是泛化,被共享的资源由于节点的不可确定性难以共享和规范化。所以最后还是觉得有确定应用范围的平台更具实际意义。
    支持(10反对(6回复
  1. 6
    日光博客   说道:
    哈哈。利用让人难以理解的方式把我们黏在你的网站,厉害!
    支持(8反对(5回复
  1. 7
    园子   说道:
    专业性太强了

    没能看得明白~
    支持(10反对(7回复
  1. 8
    枫林   说道:
    楼上的兄弟们,月光可是搞软件开发起家的。
    支持(10反对(7回复
  1. 9
    哒子   说道:
    看来我还是关注月光不够哦,老大。都没做过沙发。。。哎
    支持(11反对(8回复
  1. 10
    韩宝平   说道:
    祝月光节日快乐!
    支持(8反对(6回复
  1. 11
    风云   说道:
    月光真是72行样样精通啊
    支持(10反对(8回复
  1. 12
    waynewen   说道:
    我觉得EJB、.Net等就是所说的这个框架,只不过是通用的框架。个人认为,通用框架没啥可做的,在实际应用中,更重视针对应用领域的框架,这个应用框架应该有发展前途,能够相对固化应用领域的业务模型,在此基础“进化”。
    支持(10反对(8回复
  1. 13
    drew   说道:
    firefox就是一个很好的例子
    支持(6反对(5回复
  1. 14
    韩樟树博客   说道:
    “开架式”软件设计是未来之路?……值得我们大家拭目以待。
    支持(6反对(5回复
  1. 15
    课外班   说道:
    对此文章非常感兴趣!
    支持(8反对(8回复
  1. 16
    抽风   说道:
    比较赞同月光的观点。
    支持(6反对(6回复
  1. 17
    赤那   说道:
    楼主说的好啊,俺顶了!
    tc 于 2009-6-11 16:19:25 回复
    ceshi
    支持(8反对(8回复
  1. 18
    性生活   说道:
    结构图挺复杂的。有点难懂
    支持(8反对(9回复
  1. 19
    test   说道:
    SOA的雏形,甚至雏形都算不上,只是一个想法
    支持(7反对(8回复
  1. 20
    dada   说道:
    很多年前都实现了,过去式了厉害了。
    抛开技术角度来看,中国同类企业中的业务不可移植性是阻碍这种思想在国内发展的最大障碍。
    支持(8反对(9回复
  1. 21
    nake   说道:
    没看出名堂
    高内聚,低耦合
    支持(9反对(11回复
  1. 22
    grnnet   说道:
    有点头疼了,看不了了,中午没睡觉啊
    支持(6反对(8回复
  1. 23
    Victor   说道:
    foobar2000算不算月光所说的?还有eclipse classic等
    支持(4反对(7回复
  1. 24
    osgi   说道:
    osgi可以看看。。
    支持(6反对(9回复
  1. 25
    情感散文   说道:
    呵呵,最近我们公司在做一个ESB的产品,唉,哪个累啊。
    支持(6反对(10回复
  1. 26
    52545425452   说道:
    扮猪吃老虎 不妨看看spring SOA
    支持(5反对(10回复
  1. 27
    伍少爷   说道:
    沙发没了。
    坐下来慢慢看。
    支持(6反对(12回复
  1. 28
    布语   说道:
    专业性的,还不明白。
    支持(7反对(13回复
  1. 29
    Ar7   说道:
    貌似就是插件式的软件框架啊....
    想要研究这个的话,推荐大家研究研究MS的开源项目DNN
    以及 Enterprise Library
    支持(5反对(11回复
  1. 30
    ning   说道:
    楼主说的和COM有何区别?其实很多软件已经做了开放式的框架设计,不少是基于COM或者类似于COM的
    支持(7反对(14回复

发表留言