Jmservice对于服务的思考

如果以OOA思想分析服务,那么服务应该存在静态与动态之分。


1 静态方面
主要分析服务域中可能存在什么,例如:组件, 容器。。。。

2 动态方面

主要分析服务可以处理什么,放映服务的处理能力和功能。如果也把服务看成对象的话,那么服务是可能存在多方面的应用,这好比一个对象有不同的业务方法处理不同的操作。既然服务具有动

态行为,那么如何体现呢?仔细思考服务的应用行为方面,也许我们可能发现这样的动作词语:部署,配置等,也许将来我们可能更多的服务应用服务方面被发现或被定义,当然您也可以为您自己的服务定义一些应用方面。在Jmkernel中,服务方面助手被设计用来帮助服务执行这些方面的操作。如果以服务为中心,那么服务是允许存在多个方面助手,当然也可以没有助手,从这一点上来说,我们很容易把服务与助手关系比做:"千手观音" 或者说是一把“瑞士军刀“。事实上我们是希望通过方面助手引导服务内部流程,而流程的细节需要设计人员根据业务自行设计。


3: 方面驱动
既然服务有方面助手,那么谁来驱动它们呢?Jmkernel的一个重要特色:担当控制者角色,驱动并控制这些服务方面助手,当然服务本身也可以使用它自己的方面助,服务的方面助手是允许动态增加的,以适应将来业务的拓展,这意味着Jmkernel是一个可扩展的内核。

Jmkernel不仅仅是一个控制器,它还是一个服务集成平台,我们力求它简单易懂。


不知道这样理解是否可以。

Jmin website


我个人认为服务是一个或一堆对外部产生影响的对象总称,服务关注内外与过程.

服务的主动式与被动式

我个人认为服务是存在主动式与被动式,称需要请求性的服务为被动服务,而将那些不请自来的服务为主动式服务。

1: 例如:学生请教老师问题,老师作出回答,这个过程中,首先学生向老师发出请求,然后老师才有问而答,事实上,老师为学生服务了。这就叫请求式服务或被动式服务。

2:例如:邮件员送信,可是很多时候我们并不清楚自己是否有信件,只有等邮件员将信送到你手中才知道,在这之前,我们也许并没有请求过邮件员。 这个叫主动式服务。

以上为个人观点,也许存在错误,还望得到您的指点! 谢谢!
[该贴被older于2007年08月22日 14:21修改过]

首先肯定你的精神和努力。

建议你的项目纳入SCA这样标准主流技术中来,看看这篇文章:
http://www.jdon.com/jivejdon/thread/31872.html

参与其中一些开源项目,这样对自己发展非常有利。

目前你的项目看上去还处于理论探索中,其实这些问题已经在SOA/SCA中明确,如果你再探索,会很慢,在走一个弯路。上次SUN一个开源项目邀请你参与你应该珍惜机会。

另外,有点请你协助一下:关于Jmservice的问题最好放在一个帖子中,如果找不到以前的帖子可以使用本站搜索Jmservice就可以,这样便于大家对你项目进度的关注。

组件服务技术表面是一个简单技术,背后有很深的背景,建议你从EJB Spring Ioc/AOP这些方面进行逐步研究,如果你能写出类似“关注SCA”这样文章来,说明你的理论水平已经非同一般,这样再进行开源产品化,必然立意高新,又不会范重新发明轮子的错误。

继续努力,早日看到你的项目能够跑起来。

对老师的教诲,我铭记在心! 我会再接再励,继续努力,不辜负老师的期望!

利用Jmservice平台支撑的小server(Jmin0.3)参考实现版.
运行环境:JDK1.4
https://jmin.dev.java.net/release.html

该连接可以下载Jmin server及Jmservice草稿


Jmin特点
1: 命名(JNDI)
1: RMI
2: POJO(可供远程调用)
3: DataSource


未来Jmservice平台展望
1:网络通讯采用XML(有点困难,本人不熟悉XML技术,目前是Java序列化,需要高人的指点).
2:服务控制方面可以自由配置(已实现)
3:助手命名统一定义(已实现)
4:方面助手可动态增加(服务可以有任意多个助手,灵活吧, 已实现)
5:助手可拆卸与重装(这支手不好使,咱就给它换一支新的.灵活吧,呵呵.已实现)
6:助手实现业务处理(正在编码中,好简单!)
7:为业务助手生成Stub(类似EJB的Stub).
8:业务助手内实现业务工作流(正在思考中.)

多么简单的一个服务平台啊! 个人认为助手方面应用应该算是一个模型吧,当然不一定把助手应用于服务中,也可以用于其他的.


菜鸟程序员 --- Chris

[该贴被older于2007年06月12日 21:02修改过]
[该贴被older于2007年06月12日 21:16修改过]

Hi,

I am sorry for bothering you.Now,I want to invoke service's interface by a simple way. The below way is feasible ? Please help me.

1: define service file

//Math.xml: this file will be deployed on server
<services>
<service id =”Math” class=”math.MathService” >
<property id =”assistants”>
<map>
<entry id =”cal ” value =”math.Cal ” >
<map>
</property>
</service>
</services>

2: Define Class files package math;
public class MathService extends J2eeAbstractService{
}
package math;
public class Cal extends J2eeAbstractAssistant{
/**
* @BI
*/
public int add(int a, int b){
return (a + b);
}

/**
* @BI
*/
public int del(int a, int b) {
return (a – b);
}
}

3: Generate interface file for service I think we can use some tools to generate some interface files,the following XML is expected result. Of cource, We can also use a tool to generate stub file for service's aspect assistant, this like EJB stub file.

//MathBI.xml
<services>
<service id =”Math” >
<aspect id=”cal”>
<BI id =”add”>
<int/>
<int/>
</BI>
<BI id =”del”>
<int/>
<int/>
</BI>
</aspect>
</service>
</services>


4:How to contol invocation
……………………
J2eeService service = serviceContainer.getService(netRequest.getServiceId());
J2eeAssistant ast = service.getAssisant(netRequest.getAspectId());
Method method = ast.getDeclaredMehtod(netRequest.getOperation());
Object result = method.invoke(ast,netRequest.getParameters());
……………………

我个人是想尝试组件以外的方式来处理业务应用,在这过程我使用了服务方面助手来做组件同样的事情,以达到企业应用.这个构思可以吗? 谢谢!

为什么不使用一些现成的IOC框架呢,底层的实现都是通过反射来实现的啊~

gougou3250,你应该是看过我的代码了吧. 你的建议不错!

当初做这个IOC时,我看了彭老师的代码,觉得要完全弄清楚,得花不少时间.
所以后来决定自己做一个算了,花了个把星期写的,不是很好!
我想等我其他部分完成后,可能会重写这个.

[该贴被older于2007年06月13日 22:12修改过]

我没看过你的代码,只是看了下你在上面帖的东西
其实IOC框架无非就是内部一个反射的方法,一个配置文件,一段管理代码(容器),用该管理代码调用配置文件来知道有哪些类,类之间的调用,然后利用反射来实现真正的调用。要说一些开源的东西,真正吸引人眼球的是,对各种细节都能考虑到。软件的精髓是细节。
别人都已经做了的东西,就没必要重复发明轮子了。而且你也不一定有人家做的好(通常情况下是这样的)。你可以整理修改人家的代码,弄出你想要的东西来,这样比你自己单独做要好。
至于BANQ的框架,我只看过一些他的介绍。觉得不咋的,是在一些开源框架上做的自己的一层封装,只是让一个拥有多年经验的开发人员来做,难度不大的那么一个东西。对于一些对JAVA世界认识不深,习惯于几句代码就搞定一套系统的人来说,确实是个好东西(如果它再好用点,少点BUG)。有点装逼了 呵,我也是一个初学者

说得好! 我是学习者,只是想锻炼一下, IOC不是我所要表达的目的

细节是非常重要的,有时候把软件当艺术品看就好了.

在这里,我是想探讨:方面助手!


看了下最顶上的贴子
根据你的定义,感觉就是个IOC啊~~
只是IOC只是写的配置文件,或者程序中写死。你是不是要出个界面来简化操作还是怎么回事呢,能给我讲解下么?谢谢

非常感谢gougou3250回贴.可能是我没有解释清楚,真不好意思.

我这作品的底层是采用IOC技术,但IOC只是它的一部分.

这里有它的可运行程序与代码,下载地址:

Jmin server

文档下载地址:
Jmservice草稿

挺简陋的,让大家见笑了.


[该贴被older于2007年06月15日 23:48修改过]

原来是sca,高级货.
在较低的层次,sca是不是与ioc功能几乎一致?
我刚学的spring不久,感觉sca的功能 spring的ioc都提供了.

我当初做这个时,并不知道它属于哪个领域的.说句老实话,到目前为止,我还不了解SOA的一些内容.可能与SCA还是有点区别的,因为SCA是服务组件架构,而我的是服务助手和面向服务方面控制,我并不想制作一个超大的软件出来,毕竟个人能力有限,再加上我还是菜鸟水平,所以我去寻找服务的一些共同特性,或者说有意思的特性吧.比如部署,仔细观察 ejb方面,web方面等,它们都有共同特点,那就是支持部署.又如,服务是有可能支持调用的.所以我的出发点也许和SOA是不一样的,我把服务看成是一个封闭的bean,是一个可大可小的bean.既然是和对象类比的话,我想服务是有应该具有对多方面的特点,正如一个对象有可能有多个操作方法一样. 我想既然被称为服务,那么这协作过程是需要对象的参与.

在Jmservice平台中,可以配置一些方面控制器去服务的运作,那么如何控制呢?
我就设计了服务方面助手来供外部驱动(类似对方的方法).我们可以把每一个方面的控制器看做是一个Jmservice一个子架构.在Jmservice平台中最初的设计是基于事件驱动的,可能现在有所不一样的.呵呵.

其实OB为我第一个服务试验作品,与04年完成了第一版,目前已经改观,将成为Jmservice平台的一部分,我打算用它来支撑服务的调用.



[该贴被older于2007年10月11日 08:49修改过]