基于消息驱动的面向对象通用C/S应用框架(六)

来源:互联网 发布:中国联通wap网络 编辑:程序博客网 时间:2024/06/11 02:37

从本章开始,将全面介绍这个基于业务消息驱动的框架的各个细节。

第2章

基于消息驱动的通用C/S应用框架

设计和实现

 

 

        内容简介:

       本章重点阐述作者设计和开发的一个基于业务消息驱动的面向对象通用C/S(客户机/服务器)应用框架的设计思想和实现细节,并且在具体阐述时尽量使各节的编排顺序与实际开发时的顺序保持一致,按照消息接收、解析、分发和处理的流程逐步推进。在设计和开发的过程中,会逐步地引入一些基本的概念和设计模式,并将重点介绍各个组件接口的设计及其实现。

       本章最后几节阐述了作者对提炼应用框架的一些体会和总结,突出了面向对象设计原则的运用和设计模式以及重构技术在本框架开发中的重要性。  

2.1 引言

2.2 消息驱动框架的基本结构

2.3 业务消息格式框架

2.4 NetworkObserver接口实现

2.5 半结构化消息解析器接口及其实现

2.6 消息分发器

2.7 消息处理器接口、实现及其注册

2.8 半结构化消息封装器接口及其实现

2.9 全结构化消息解析器

2.10 框架重构:消息映射表的改进

2.11 框架重构:消息处理器及其注册方法的改进

2.12 系统路由表实现和MONOSTATE模式

2.13 中央服务器的消息转发过程

2.14 对提炼框架的一点体会

2.15 面向对象思想和设计模式在框架中的应用

2.16 单例模式和智能指针

2.17 对应用层消息处理器实现的进一步思考

2.18 业务消息格式的扩展

2.19 本框架可能的改进和发展方向

2.20 本章小结

 

2.1 引言

        像CORBA、DCOM、ACE-TAO、J2EE-RMI等技术,使用起来无疑是方便的,但是它们的门槛儿无疑也是很高的。如果想熟练使用甚至精通这些框架和技术,并用来开发复杂而庞大的应用系统,除了要接受这些系统倡导的思想方法外,还得学习某一个产品及其附带工具的具体使用方法,这都需要长期的学习和积累甚至专门的培训,而且短期内不容易掌握。所以,对于小型的甚至小范围内部署(比如局域网内)的普通多客户机/单服务器(C/S)应用来说,使用这样的重量级工具就有点儿“杀鸡用牛刀”的意味。

        许多开发人员都曾经开发过网络应用程序,都曾经和Socket打过交道,也都编写过消息打包、发送、接收和处理的代码。如果将客户机和服务器之间消息的往来和处理完全屏蔽,直接从经典的C/S模型跨越到面向对象的甚至是面向组件的C/S模型,会令许多开发人员很难一下子适应和转变过来。特别是,面向对象的C/S模型需要开发人员具有一定的面向对象思维和程序设计功底,所以这种转变想必不会很顺利。

        本章将介绍一个简单的、基于业务消息驱动的面向对象通用C/S应用框架,它需要用户根据框架约定的通用消息格式来定义自己的业务消息格式和内容,并编写每一个消息的解析器和处理器类,然后插入到框架中并与框架层库和通信层库一起编译链接。而客户机和服务器之间的通信以及服务器端对多个客户端的通信连接管理等都已经被完全封装在了各自的通信层中,所以单从应用层角度看,服务器端同时为多个客户机提供服务就可以被简化为(或被看作)仅为一个客户机服务(即多对连接关系被简化为一对连接关系),于是服务器端框架层基本上可以像开发客户端框架层那样来开发。这样做的好处是,客户端和服务器端的框架层可以使用同一套代码,并且逻辑几乎完全相同,所以应用层的开发模式也将非常的一致。所不同的是,在定义好业务流程的基础上,必须确定哪些消息是客户端发往服务器的,哪些消息是服务器发往客户端的,甚至可以将服务器实现为基于系统路由表对客户端之间传递的消息进行转发的消息转发中心。

        我们将构建的基于消息驱动的C/S应用系统的体系结构及运行时架构可用下图来表示:

图2-1 基于消息驱动的C/S应用系统体系结构

        这个框架以业务消息的传递和处理为中心,重点是客户机和服务器在收到消息后进行解析、分发以及处理的架构,所以它是一套消息驱动的模型;而消息的发送则相对简单得多。

        在下面各节中我们就来具体地介绍这个框架的设计和实现细节,并基本按照消息“接收、解析、分发、处理”这样的自然过程来阐述,这将有助于读者跟着作者开发该框架时的思路和实际操作步骤具体而快速地掌握该框架的总体结构和各个实现细节,以避免产生空洞的感觉。首先呈现给读者的是该框架的总体结构,通过它读者可以大致了解框架层和应用层中将包含的主要组件、接口以及它们之间的关系;然后自下而上介绍各个解析器接口、消息分发线程、处理器接口以及封装器接口和它们的具体实现方法和实现细节,并结合路由表的实现介绍服务器如何转发客户端的消息;最后阐述如何通过重构改进最初版本的消息映射表结构和消息处理器的注册方法,以实现消息的精确分发并确保消息处理器列表在消息分发线程启动前构建完毕。特别地,根据具体应用系统的的可能需求,在本章2.17节将讨论在应用层实现具体的业务消息处理器时如何将异步消息处理实现为同步的对象方法调用,在2.18节给出如何扩展业务消息格式的建议,以及在2.19节将指出将来对该框架可能的改进和发展方向。

原创粉丝点击