锁定老帖子 主题:HIM服务端结构
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2008-07-26
此信息同时发布在www.humanmonth.cn 上,源码下载地址:下载地址 。
HIM 是一个由 Flex+Java 实现,基于 Socket 连接的在线聊天程序。下图为服务端结构图。
<!----><!----> <!---->
服务端工作的流程:服务端启动 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 :
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2008-09-28
东西挺好,我可以借鉴了
|
|
返回顶楼 | |
发表时间:2008-12-16
楼主,用socket可以实现对象的传输吗?
比如我后台有一个List类型的对象,需要传到flex中,如何做? 难道要把List里的数据都封装成String再传到flex中? |
|
返回顶楼 | |
发表时间:2008-12-17
看了下,楼主的设计模式不错!值得借鉴
|
|
返回顶楼 | |
发表时间:2009-06-16
网站咋打不开呢.
|
|
返回顶楼 | |
浏览 3924 次