急:增值业务系统架构的设计求救

本人在一家公司开发增值业务系统,现在进入了编码阶段,但我前期可能对CTI的理解和对WEB,WAP接入方式的理解不够,在原来的设计系统中,遇到了一些问题
增体结构(目的在于分离业务逻辑和系统中的通用功能:安全管理、会话管理、业务分发管理和基于角色的授权管理,基于Socket的XML数据交换):
表示层(支持PDA,web,wap,cti和基于Delphi的Client端):Client、CTI、PDA通过Socket于服务器端连接,而WEB和WAP直接到BLL层。
接入控制层:我们称为BCL层,主要处理套接字连接,套接中传输XML文档,在这一层将XML通过我写的一个XML到JavaBean之间的相互转化形成对象,并将这些对象通过类似于Struts结构的方式分发到我们的实现的具体业务逻辑,和一些周期性业务线程的处理工作。还有对我们实现的会话的管理。
业务处理层:我们称为BLL层,实现的具体业务逻辑,在不同的业务逻辑实现时,仅实现该层。
基础平台层:该层通过Hibernate连接数据和对CTI、SMS、BOSS等系统的连接。


问题:
1,由于WEB和WAP进行的直接类调用,因此,一些初始化工作难于进行,如果仅将BCL层中的管理Socket的套接字去除,一是工作量较大,而且对WEB和WAP端的操作很复杂。
2,对BLL层调用时,如web或wap中需要分也机制,则BLL的业务实现量会很大,而且在BLL层中,对不同接入方式的处理过程不同,这就要求对每一个用例实现分成不同的接入方式,导致BLL层的复杂。
3,对CTI接入更为怪,本来我原来的设计是当CTI要调用我们时,它应该主动连接我们,但后来才知道,它可能不会主动连接我们,而是通过我们主动连接他们的SOcket将命令发送过来,而有时它又会主动连接我们。
4,是否有人做过JCA的连接器,是否我们对CTI的连接可以采用JCA的模式。
我的邮件地址sunxj@srt.com.cn
多谢!!!

探讨一下,如果说得不对请别见怪,^_^。

我觉得应该首先理清一下现有的层次:
1。BLL层是业务逻辑层,同时也应该是数据准备层,即使用统一的数据格式接收请求和发送运算结果;
2。BLL层之上应该是数据格式转换层,用于将不同接入方式的请求转化为面对BLL层的具有统一格式的请求,或者将具有统一格式BLL运算结果转化为面对不同接入方式的返回结果;
3。服务层,这一层才真正面对不同接入方式,该层用于接收不同接入方式的请求并分发给下层的数据转化层相应的请求处理接口,或者从数据转化层的相应处理接口中取得处理结果并送回以响应请求。socket处理和WEB/WAP的请求以及其他各种不同的系统均应只在这一层接入。

建议的问题解决方式:
所有的前端系统和后端系统的交互都只放在服务层进行,数据格式和初始化的问题放在数据转化层进行,数据准备层一万年不用改变(除非其基础结构发生变化)。

java里面的HttpServlet的设计提供了很好的设计思想

是比较复杂的一个系统。

特别一个J2EE系统加入Socket之后,就变得复杂且难于控制,除非使用UDP协议,如果通过Socket使用TCP/IP协议,那么就没有必要使用Socket了,这是我个人深切体会。

复杂的系统的Scalable伸缩性是第一考虑,但是如何做到Scalable,却是非常困难的。

“对BLL层调用时,如web或wap中需要分也机制”,那说明你的BLL层做得不干净,无论Web或其它远程肥客户端都可以在不改动BLL层下实现访问,根本不必不同的接入采取不同的方式,这些接入和BLL层毫无关系。
BLL层只是提供Service,建议你看看SOA,当然,如果你对EJB没有偏见,建议你将BLL全部用EJB实现,这样你的案例下一步如何做就有了可参考性。