论坛首页 Java企业应用论坛

HIM服务端结构

浏览 3924 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2008-07-26  

 

此信息同时发布在www.humanmonth.cn 上,源码下载地址:下载地址

 

HIM 是一个由 Flex+Java 实现,基于 Socket 连接的在线聊天程序。下图为服务端结构图。

 

<!----><!---->HIM服务端结构图 <!---->

 

服务端工作的流程:服务端启动 Server 后, Server 将监听端口,等待用户登录。当 Server 接收到用户登录时,会新建一个继承自 Thread Processor 对像, Processor 对像内会创建 User Protocol 等对像。 User 保存用户的信息,包括 IP Port Name 等,而 Protocol 为协议处理类,他把 Processor 接收到的流转化为字符串并组装成方便 Action 调用的 RequestData 对像。 Processor 接收到请求,并包装成 RequestData 对像后,将在 ActionRegister 中查找可以处理该 RequestData 对像的 Action 类,然后把 RequestData 对像传给 Action 对像处理。

 

服务端特点:端口由 Server 类监听,因为应用层没有走 Http 协议,所以不依赖于 Web 容器。另外前后端是用 XML 传输的,所以对前台的 Flex 也没有依赖。

 

扩展:需要扩展功能时可以通过实现 Action 接口便可(右上角的黑色方框中的类为功能类),其它的容器类一般不用改。

 

Servlet 容器比较:为了避免误解,首先说明的是 HIM 的服务端充其量只是一个简单的多线程容器,代码只有几百行,当然不能和 Servlet 容器相比。 HIM 服务端只是模仿了 Servlet 容器一小部份功能实现的实现模式而已。 HIM 中的 Server 负责监听端口, Processor Protocol 负责把 Socket 中的流按协议转化为请求对像 RequestData (类似 Servlet 中的 Request 对像)。而图中右上角的 Action 接口就类似于 Servlet 接口,我们可以通过实现 Action 接口来扩充功能。而 ActionRegister 类就类似 Web.xml 文件,负责装配 Action

 

测试用例:比较遗憾的是整个项目没有任何测试用例。并不是说本人没有写测试用例的习惯,而是整个服务端启动所需要的时间大概一秒左右。出问题了,直接用 log 调试便可。像就页面的 js 调试一样快,为 js 写测试用例,好像是吃力不讨好的工作。

 

补充说明:其实这里图画得复杂,代码也实现得复杂。如果按照 sample and dirty 的风格来实现,一百行代码左右就可以实现功能。但为了方便以后扩展和代码重用,把代码按功能点分开多个层来实现。另一方面,由于不是商业项目,实现上不太严格,异常有处理,但比粗糙。而同步方面,有几处没有处理,但影响不严重。由于某些原因,代码是基于 jdk1.4 的,以后升级到 jdk5.0 后再处理。有兴趣的可以下载源码看看,下面为 HIM_v0.1.3的demo

   发表时间:2008-09-28  
东西挺好,我可以借鉴了
0 请登录后投票
   发表时间:2008-12-16  
楼主,用socket可以实现对象的传输吗?
比如我后台有一个List类型的对象,需要传到flex中,如何做?
难道要把List里的数据都封装成String再传到flex中?
0 请登录后投票
   发表时间:2008-12-17  
看了下,楼主的设计模式不错!值得借鉴
0 请登录后投票
   发表时间:2009-06-16  
网站咋打不开呢.
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics