分享
 
 
 

HiveMind 和 Spring 的比较(之二)

王朝java/jsp·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

紧接上文。

从上文的 HiveMind 和 Spring 总体架构图片你可以看出 两者的结构差异很大。首先,Spring提供了一套完整的组件,从页面展示的MVC框架到后台的数据库ORMapping等统统都有,其中有些是Spring自有的,有些则提供了集成第三方优秀组件的接口。

相比之下HiveMind就单薄多了。我第一眼看到HiveMind的架构图片的时候想到了 微软COM组件模型的图片。 如下:

这里贴出COM的图片来,是为了更好的比较和说明HiveMind的结构。

HiveMind和Spring的不同在于,HiveMind使用以组件服务为导向的架构。也就是说每一个Java类提供一个服务( Service point ),给这个服务起名字注册到HiveMind Registry后,客户应用程序就可以使用这个服务名字来使用Java类提供的服务。(见后面的代码)

了解COM原理的读者可能都知道,在COM组件接口不变的情况下,即使COM的算法实现完全发生变化,也丝毫不受影响客户端的使用。这也就是提倡的面向接口的编程。从这一点上来说HiveMind和COM如出一澈。Spring 框架没有这个基于服务的特性。(下文专门分析Sprign的实现原理)。

HiveMind另一个特点是借鉴Eclipse插件的实现方式。在HiveMind 术语中你常会看到如下XML定义:

<module id=“..“>

<service-point id=“..“ interface=“..“ >

<configuration-point id=“..“ >

等等这样的定义。

在HiveMind中你可以把相关配置文件放在多个Xml文件中而不像Spring那样放在一个文件中。只要把名为:hivemodule.xml 的文件放在ClassPath中HiveMind就可以识别到。

上面提到的 面向服务和面向配置的特性正是HiveMind区别于Spring的地方。

说了这么多区别,并不是要把HiveMind和Spring对立起来,其实HiveMind是可以和Spring紧密继承使用的。

我现在的感觉有点类似于:COM组件和IIS的关系,毕竟Spring已经很强大了。

看个例子吧:

用HiveMind来实现AOP的拦截方法执行的效果:

配置文件:

hivemodule.xml:

<?xml version="1.0"?>

<module id="tcfhivemindtest" version="1.0.0">

<service-point id="Adder" interface="tcfhivemindtest.Adder">

<create-instance class="tcfhivemindtest.impl.AdderImpl"/>

<interceptor service-id="hivemind.LoggingInterceptor"/>

</service-point>

</module>

Java代码:

Adder.java:

package tcfhivemindtest;

public interface Adder

{

public int add(int arg0, int arg1);

}

AdderImpl.java:

package tcfhivemindtest.impl;

import tcfhivemindtest.Adder;

public class AdderImpl implements Adder

{

public int add(int arg0, int arg1)

{

return arg0 + arg1;

}

}

HiveMain.java:

package tcfhivemindtest.main;

import org.apache.hivemind.Registry;

import org.apache.hivemind.impl.RegistryBuilder;

import tcfhivemindtest.Adder;

public class HiveMain

{

public static void main(String[] args)

{

Registry registry = RegistryBuilder.constructDefaultRegistry();

Adder a = (Adder) registry.getService("tcfhivemindtest.Adder", Adder.class);

System.out.println("结果 = " + a.add(4, 7));

}

}

运行后的效果如下:

adder = <SingletonProxy for tcfhivemindtest.Adder(tcfhivemindtest.Adder)>

tcfhivemindtest.Adder [DEBUG] BEGIN add(4, 7)

tcfhivemindtest.Adder [DEBUG] END add() [11]

结果 = 11

上面有个小细节:就是HiveMind中对函数参数的处理非常好,可读性非常高。

待续

田春峰

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有