现在的位置: 首页 > 综合 > 正文

SOAP引擎 设计思路

2013年09月17日 ⁄ 综合 ⁄ 共 930字 ⁄ 字号 评论关闭

 

SOAP引擎 设计思路 

          从里到外(总的思路)

       Soap目标就是要完成对远程方法的调用。

对于核心部分,需要完成的是 : 用反射机制 实现对类中方法的调用。

           于是需要有类名,方法名,参数列表(包括参数个数/类型),参数值。

收到一个SOAP消息首先要对其进行解析: 解析就是从SOAP消息(文本)è(转化成)Envelope对象。

解析后就要进行处理:提取有用信息,得到类名,参数的值,因为远程传递的过程都是利用字符串的形式,但是要想知道其具体的类型可就没那么的简单了,这里就需要的是一个描述文件进行的处理。

  这里是核心的部分,再在外面进行扩展,可以想到需要的是对此消息进行接收与发送。 对于SOAP消息其发送和接收是通过构造xml来进行传输的,因为xml是通用的消息传输格式,一般的硬件都支持。传输形式有2种:socket和web容器 可以借助于已有的容器如tomcat,创建web工程,就是通过servlet实现对消息的接收。

以上主要为接收SOAP消息,以下为发送SOAP消息,和以上的过程可逆。

首先就是构造envelope对象并往该对象中放入结果。此过程需要把Java类型的数据都变成xml元素,(实现这个也需要的是一个中间类型转化机制)。把envelope对象转化成字符串,进行发送到客户端,返回结果。

对于发送与接收参数类型与字符串的转化都会用到一个中间类型转化器,于是可以设计出一个单独的类型转化器,一个抽象的父类,里面有2个方法,解析时的类型转化和发送给客户端时的类型转化。子类继承此父类并相应的进行方法的实现还有通过配置文件(有点类似于工厂模式)便能轻松的得到不同类型之间的转化。

在核心部分类名的得到:因为服务都是一个唯一的URL,在服务器端,对服务进行发布后就可以通过类名与URL一一对应的关系由服务得到其处理的类名,也可以用配置文件实现。

对于发布一个服务,需要的是指定service name 、URL(对应于相应的class)、方法中参数的顺序和类型(中间类型转化器中要用到发布这些服务的信息)。

     -------本人的简单理解。有问题大家可以一起讨论哦~~~ 欢迎联系Email:zuowangxi@163.com

抱歉!评论已关闭.