support hotline 021-65210156
Login|Registered
Home
Public class
Internal training
Consulting
Expert
Knowledge
service
About Us

基于三层结构的CRM系统的设计和实现

202 Views Author:

                                            时间:2009-9-3         
    1、引言
  随着计算机应用技术的发展,CRM(客户关系管理)也得到了前所未有的发展。最初的CRM系统基本上都是基于两层结构-C/S模式(客户机/服务器)。C/S模式自从提出之后,曾经对CRM的发展起到了巨大的推动作用。但是随着对数据库操作复杂性的提高,传统的C/S模式已经不能满足应用需求,并且数据库产品层出不穷,即使是关系数据库,在性能指标上也存在许多差异,比如数据格式、数据精度、数据模型和语义差异等等。所以,为了解决不同数据库产品的互联及其他问题。三层ClientServer结构体系也应运而生。所谓三层结构,就是在原有的”两层结构”〔客户端和服务器端)之间增加了一层组件,这层组件包括事务处理逻辑应用服务、数据库查询代理等。随着这层组件的增加,两层结构向三层结构转变后,客户端和服务器端的负载就相应减轻了.跨平台、传输不可靠等问题也得到了解决。增加的这层组件就是我们所说的”中间件“。中间件在三层结构中主要充当中间层,实现数据安全、完整传输,通过负载均衡来调节系统的工作效率,从而弥补两层结构的不足。
  同时,由于电子商务的飞速发展,使用CRM软件的客户的业务越来越复杂,而且业务种类可能会随时变更,这就使得企业迫切的要求自己能够进行系统的二次开发。如果有了这项功能,即使企业的业务发生变更,企业也可以应付自如。如今一般比较流行的CRM系统都不具备这样的功能。我们的开发组对这项功能进行了详细研究,并最终给子实现。作者参与了基于三层结构的CRM系统(Agent X)的设计和开发。本文详细介绍了三层结构的基本原理,并且详细介绍了基于三层结构的Agent X系统。
2、两层ClientServer结构
  一个功能强大的客户应用开发语言和一个多用途的用于传送客户请求到服务器的机构是整个两层结构的核心。在一个数据库存取事件中,数据由服务器实施存储和访向,数据库引擎负贵处理从客户机发来的请求。现在这种请求所使用的语言大多数类似于sQL语言。要把sQL语言从客户机传送到服务器上,必须能识别服务的标志符或者由一个应用程序接口来完成,还必须知道服务器的位置,数据组织形式以及数据如何定义。在服务器中,请求还将得到存储逻辑和处理上的进一步优化,例如使用权限、数据完整性和保密性等。数据返回后在客户机上得到进一步处理,以适应查询、商业应用、预测分析和数据报表等各种要求。
3、三层ClientServer结构
  3.1三层结构的基本原理
  X/Open DTP标准(l991)分布式处理、参考模型和分布式事务处理中描述了三层口ClientServer模型。
  应用程序定义操作来完成特定的任务。它定义事务的范围并且把服务要求提交给事务管理器,通信管理器和一个或者多个资源管理器。
  资源管理器提供应用程序要求的事务间的服务。一般情况下,资源管理器是一个数据库,但并不总是这样。为了维护事务的完整性而修改的资源必须由资源管理器来管理,例如管理在线的队列等等。资源管理器必须对它们涉及的资源提供两阶段确认服务。
  事务管理器提供管理事务的服务,包括资源管理的两阶段确认服务和通信管理器的服务。如果事务跨越多个平台,那么其中的一个关于这个事务的管理器将被自动命名为这个事务的控制事务管理器。
  通信管理器提供通信服务的接口以及管理应用层协议。在大多数客户/服务器棋式情况下,提供的服务仅仅是数据传输机制的接口。大多数的三层C/S系统都提供某些对话服务。
  应用的客户通过Miiddle Server要求应用服务器提供服务。每一个客户提交Begin要求给Miiddle Server,它表明客户想开始处理一个事务,然后客户提交一个或者多个服务请求。Miiddle Server使用服务的名字来把要求路由送到合适的服务器。图例表明一个服务可能由多个服务器提供服务具体的路由选项都可以由系统管理员在任何时候修改而不影响应用和服务程序。如果一个逻辑数据库(例如客户库)各部分存放在不同类型的数据库中,那么大多数两层结构要维持异型数据库的性能并提供数据完整性的功能是很困难的。而使用依赖数据的路由,就可以对每个数据库提供同样的服务,且对系统的所有客户是透明的。
  由上面简单的对两层和三层C/S的描述。可以看到,三层结构在网络流量和系统反应速度方面优于两层结构,这是由于三层结构中数据在发送到网络之前首先由功能性服务器加以过滤,网络通信量会因此下降;其次由于三层结构中Client端并不是直接同数据库打交道,而是通过三层结构中的中间层统一调用来实施,这样在灵活性和独立性方面较好,而且还适合于不同数据库之间的互联。
  3.2三层结构体系架构
  在传统的C/S模式的中间加人应用服务器就形成了如下的三层结构架构。
4、三层结构应用实例--Agent X
  4.1系统介绍
  Agent X CRM系统采用三层的体系结构,前端为Agent座席应用软件,中间为应用服务器,后端为数据库或其他后台系统。本系统可以应用到银行、保险、电力和信息咨询等领域。
  所有关于数据库的操作都是由座席应用程序将请求发送到应用服务器。对应用服务器的请求是以XML电文的格式发送出去。服务器接到请求后。用XML解析器转换成本身能够理解的电文。应用服务器根据前端请求进行数据库操作,并将操作结果返回到客户端。客户端接到电文之后用XML解析器再次解析成相应的协议电文。在应用服务器上运行着许多对数据库操作的服务,由这些服务去和数据库打交道。因此Agent座席端无需安装数据库驱动程序,编程时无需考虑使用的数据库类型,另外通过结合自动更新工具,可以将系统的维护量减少到最低。
  应用服务器支持分布式的系统结构,在一台机器上可以运行多个不同的环境,同一环境可以运行在不同的机器上,因此系统可以同时访问多个数据库服务器,井且这些数据库服务器可以是不同的数据库类型,例如:可以同时是SQL Server数据库,或者Oracle数据库。这就解决了传统上的CRM系统只能访问单一类型数据库的瓶颈。
  此外,该系统又采用了当前比较流行的插件技术,软件提供商提供给用户插件制作模板。提供这些模板使软件提供商对企业技术人员只需进行短期培训,用户就可以自己独立进行系统的二次开发。从而使二次开发更加简单、便捷,可以更好的满足企业自身需要。
  4.2应用服务器基本架构
  4.3应用服务器的特点
  Agent X CRM系统中的应用服务器由众多的服务(services)所组成,每个单独的服务均可以响应客户段的请求,并将获得的结果返回给客户端。应用服务器具有如下特点:
  服务的模块化
  应用服务器以各种可执行程序为模块,采用堆砌式的方法进行构筑,以各种服务为基本的服务单位,同一个程序可以提供一种或多种服务。同时系统提供功能丰富、强大的编程控件和编程模板,这样可以使编程者专注于业务本身的逻辑,而无需对各种底层复杂的编程技术进行了解,另外,由于系统采用了模块式的方法,因此对单个服务程序的追加、删除、修改甚至其bug,均不会对系统本身的运行造成影响。
  服务的分布式
  应用服务器支持分布式的系统结构,在一台机器上可以运行多个不同的环境伺一环境可以运行在不同的机器上,以使整个系统运行在分布式的结构中,提高系统的工作效率。对于客户请求数量较多的服务,系统支持将该服务同时启动多个,以便该服务能够同时处理多个服务请求。
  操作的简易性
  应用服务器可以支持在不影响正常业务的情况下,在系统运行中,停止或启动单个应用程序,以方便系统的维护与更新。
  以HTTP为传输协议
  应用服务器可以通过各种方式(如发送电文、API调用等)与外部系统交互。
  数据库屏蔽
  Agent座席软件与系统实际使用的数据库产品类型无关,当客户需要将数据库软件更换时(如由SQL Server转换到Oracle时),只需对应用服务器进行配置即可,Agent座席无需进行任何修改。
  4.4服务请求的具体实现步骤
  客户端如何得到服务器的服务,可以分为如下几个步骤:
  客户端向应用服务器发送具体的请求给相应的服务(Service)
  调用函数CreaieRequest(服务名称,要传输的数据)
  服务器相应的服务接收到数据,进行分析,如果符合标准,那么访问数据库得到相关数据,然后打包发送给客户端
  调用函数AnalyXML(XML格式的请求电文)。
  客户端接收到服务器返回的电文进行分析,如果符合内部协议,表明请求成功,否则失败。调用函数AnalyxML(xML格式的请求电文)
  无论是客户端发给服务器,还是服务器发给客户端的电文,均进行XML协议分析。
  4.5二次开发的实现
  AgentX系统比较突出的特点就是实现了二次开发。随着企业业务的变更,企业迫切需要能够自己独立进行二次开发。基于这样的需求,AgentX系统在三层结构的基础上采用了插件技术。除了基本模块以外.其他的业务模块均设定为插件。插件是以DLL文件的格式存在的。
  我们提供插件模板,客户可以根据插件模板制作出与自身业务相关的插件模块。然后将这个插件放到系统固定的Plugins目录下面。当主模块运行的时候,会将这个目录下面的所有插件模块均装载进来。
  插件模板提供了系统内部所有的消息机制。当主程序发生某个事件的时候,主程序会对各个插件进行广播,通知各个插件。相应的插件可以对这个事件作出反应完成必要的操作。
    5.结论和今后的工作
  由于引入了三层结构的概念,从而使应用对数据库的操作越来越简便、而且系统还可以通过三层结构的中间层


Hello! Welcome to Fu Rui! What can I do for help