随笔 - 1  文章 - 37  trackbacks - 0
<2024年12月>
24252627282930
1234567
891011121314
15161718192021
22232425262728
2930311234

留言簿(16)

随笔分类

随笔档案

文章分类

文章档案

test

搜索

  •  

最新评论

从Spring ioc中引申出的一句话是比较经典的:别来找我,在那等着,我会去找你。
被动模式,与这个概念很相近:别把东西给我,告诉我在哪能取到它。

被动模式可以理解为三种模式: 开发模式, 部署模式,云模式。

一.  开发模式

实际上在我们的代码开发中,就一直在使用这种开发模式,例如

interface InterfaceA  }

class ClassB { InterfaceA ref = createInterfaceA();  }

使用create方法,而不是直接new。也就是说告诉了ClassB,在create方法中获得InterfaceA.

这是一个很简单的例子,受它直接影响的,是系统的扩展性。在一个可扩展(伸缩)的系统中,例如在Eclipse产品程序,或是基于可插拔模块的应用程序开发中,则是随处可见的被动应用模式,这样的系统,对于现有组成部分在开发过程中很容易解决,但是对于未知组成部分(扩展性),只能通过被动模式解决,例如Extwind,在基于osgi的web应用程序中,Dynamic IoC和Extension-Point所做的事。

二.  部署模式

目前web应用程序的部署,可以总结为这样一句话:需要部署的时候就来找我,别忘了把东西带上!
这与现在的服务理念完全相悖,快递公司都有上门取货这项服务。
如果以开发模式来看,这就属于  Deploy deploy = new FixedDeploy() ,而不是getDeploy()。

这是一种陈旧的部署模式,毫无扩展性和伸缩性,它让很多原本简单的事情变得很复杂,虽然这是一种部署模式,但是它将影响到后来的架构模式。

Extwind的部署模式:需要部署的时候,给我个电话,告诉我东西在哪,我去取。
这个“电话”就是一个部署描述符(Deploy Description),它描述了部署方式,应用程序或模块的存放地(Repository)等细节,Extwind通过这个描述符从指定的Repository中获取应用程序并部署。
如果以面向对象来看它,可以将这个描述符理解为一个interface,它将影响到部署模式的扩展性和伸缩性。

Extwind中的repository与maven中的repository很像,对于它的定义,主要有2个方面:
1. 组件库,这可以通过maven来帮助完成
2. 部署库,由应用程序生成的受支持的部署库,部署时,只需要将描述符指向该库或库中的某些组件。


三. 云模式

用一个例子来理解云模式:
新增一台386,可以为云增加1%的计算能力;
新增一个集群环境,可以为云增加20%的计算能力;
这里的计算能力就是一种资源,可以理解为服务能力。之前提到过,对于未知资源,只能通过被动模式来获取,Extwind将会通过云模式来提供可伸缩的服务环境。


Extwind要做的事情只有一件:让原本简单的事情,不要太复杂。
posted on 2009-07-02 15:24 Phrancol Yang 阅读(351) 评论(0)  编辑  收藏

只有注册用户登录后才能发表评论。


网站导航: