saptechnique

Better late than never. - 郭富

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

玻璃深加工管理系统构架分析

吴春福:杭州派尔科技有限公司 浙大CAD&CG国家重点实验室工学硕士 微软最有价值专家

 

[摘要]本文首先阐述了两层构架、三层构架的概念,然后对三层构架和两层构架深度分析,得出结论:两层构架系统,必然是不安全的。接下来文本深度介绍派尔管理系统的系统构架,并在本文最后,告诉用户如何简单有效地识别“真伪三层构架”

引文

       目前,因为深加工管理系统操作界面复杂,并且要求有很好的互操作性,所以,目前国内市场上的玻璃软件都是采用客户段/服务端(C/S)结构的软件体系。在介绍系统构架时,软件提供商几乎都介绍系统是采用三层构架。经过笔者对几家玻璃管理软件的分析,截止笔者发文前,除杭州派尔科技有限公司的管理软件采用真正意义上的三层构架外,其他的几家都不是真正意义上的三层构架,而是两层构架。所以,笔者有必要把三层构架和两层构架的概念以及对两类构架进行对比,并告诉读者如何区分“真假李逵”。

一、      两层构架和三层构架概念

       在介绍两层构架和三层构架前,我们有必要回顾一下管理软件的数据存取。为保证数据及时共享,所有数据都是存放在中心数据库,客户端访问服务器中的数据库来存取数据。如下图:

         

 

1.       两层构架

       从上图可以看出,数据存放在数据中心服务器,客户端软件直接对中心数据库中进行读取和保存,这就是C/S最基本系统构架模式,也就是通常说的两层系统。也就是说,客户端直接访问数据库的系统,为两层构架系统

       ERP经常要进行数据分析,从上图可以看出,如果要进行数据分析,要不放在客户端上进行,要不利用数据库本身的数据库分析功能,进行数据分析。

2.       三层构架

       三层构架为避免两层构架的缺点(下文会对两层构架进行缺点分析),在客户段和中心数据库中间加上一层:业务处理层(下简称业务层)。如下图:

 

 

2

       从上图可以看出,客户端并不直接访问中心数据库,所有的数据存取,都是通过业务层,业务层再连接中心数据库。

       举例说明一次查询订单的过程:

       用户在客户端程序输入查询条件(比如说时间段),确认后将请求发送给业务层,业务层接到请求,分析请求内容,并构建数据库语句,到数据库提取数据,然后将数据发送给客户端。

       对于玻璃管理系统,除了简单的查询,还有数据处理和分析。举例说明完工单审核的过程:

      

 

       可以看出,客户端和业务层之间发送的数据量非常小。请求审核,发送“完工单号”,业务层处理完毕后,发送的可能为“审核成功”或“审核失败+失败原因”,最多在0.1K范围内。但是,业务层为了完成这个审核过程,要从数据库调出很多相关数据,数据量估计在10K左右。因业务层和数据库为同一计算机,直接内存操作,速度非常快。

       由于业务层和客户端之间的通讯有自己设计和定义,所以可以进行压缩和加密传输。

二、      两层构架和三层构架对比

       在对比前,我们同样以完工单审核为例。从上面两层结构可以看出,数据处理部分要不放在数据库,要不放在客户端。下面对这两种情况进行分析:

1)业务处理部分放在客户端,如下图

 

图中灰底部分为客户端。和上图对比,读者可以很清楚地知道,在进行一次完工单审核,需要从数据库取出大量的相关数据到客户端,并且客户端分析完毕后,再保存回服务器。

2)业务处理放在数据库(利用数据库本身的功能):避免了两层中传递效率低的问题,但是,数据库造成了非常大的压力,特别是进行复杂数据分析或数学运算时,更是如此。另外,所有的业务逻辑都通过存储过程来处理,如果系统需要升级换代,数据表结构需要更改(增、删、改字段),则相应存储过程无法自动同步更改,并且不提醒开发人员,只有等到用户使用时,才出现错误。这就是为什么有些软件公司产品改进速度慢,甚至发现一些也错误也不敢去改正的真正原因,因为一旦修改表结构,可能会带来非常多的潜在错误(三层构架可以通过ORM工具来避免此类问题)。

 

       从上分析,笔者得出结论,两层架构性能上远远不如三层架构(特别是跨Internet应用),或数据库压力上要比三层架构大,系统稳定性差。

       当然,这些都不是最重要的。最为致命的安全性。笔者在谈安全性前,先给出一个结论:两层玻璃管理软件系统,一定是不安全的;只要装了客户端的电脑,一定可以看到系统的所有数据,包括客户资料、成交价格等敏感信息。

       客户端和数据库是直接通讯的,那么在获取任何数据前,必须告诉服务器数据库密码,和数据库进行通讯握手。

       两层架构系统,常见的密码处理方式:

 

5

       不管通过多高级的加密方式,最终都必须在内存中解密成明文,然后数据库系统会通过自己定义的数据传输方式对数据加密,进行数据传输。然后,数据库自己定义的加密方式,不管多高级,多先进,然而,作为通用系统,“高手”纷纷进行研究,最后的结果就是“道高一尺,魔高一丈”,开发出连“菜鸟”都能破解的工具软件。目前,据笔者测试,SqlServer7.020002005版)、OracleMySql,都能用此工具轻松破解出密码。也就意味着,只要在任何一台安装了客户端软件的电脑,通过工具,可以直接获得数据库密码,装一个数据库工具(比如说查询分析器),就可以登录数据库,获取任何数据(根本就不通过企业管理软件,所有权限控制全部失效)。

       读者一定会问,为什么不按自己的方式进行加密,然后再调用数据库。原理很简单,如果数据进行了加密处理,数据库是无法识别请求。密码窃取工具软件也就是利用了这一点,根本就不用通晓管理软件的加密方式,只需在调用的时候进行窃取。

       1、图2和图5,红色粗线部分,表示的是采用数据库传输协议进行数据传递(包括数据库密码),图1、图2中的X就是数据库密码窃取工具的截取点。

       读者可以仔细看下图2,业务层和数据库的通讯都在服务器内部完成,而业务层和客户端的通讯,可以自行定义加密方式。所以,数据库密码窃取工具根本就无成下手。

       既然三层构架有那么大的优裕性,为什么所有的管理软件不会都采用三层构架?这涉及到管理软件需要调用大量的数据,特别是异构数据,需要制定自己的数据传输协议,是一件费时费力的事情。现在玻璃管理软件鱼龙混杂,利润低,这也很多厂商不愿意投入更多的基础技术研发上,而是更愿意去开发更快获得利润的软件模块上。

       综上所述,三层构架和两层构架对比,优缺点如下表:

 

三层

两层

数据库处理业务

客户端处理业务

传输速度

最快

数据库运行压力

数据库升级难度

数据安全性

开发技术难度

发现隐藏错误的时机

开发期

用户使用期

开发期

6

三、      派尔系统构架深度介绍

       本节笔者将以派尔玻璃管理系统8.X版,详细讲述良好设计的三层构架的核心部分:业务层和客户端的通讯。

 

7

       客户端第一次运行时,会提醒是否提交信息给服务器,授权人员确认后,信息保存在数据库中。提交的信息来源于硬件基本信息(CPU系列号+硬盘系列号+网卡号)。对于没有经过验证的客户端,根本就无法调用业务层。而数据传输通过加密和压缩,一方面保证了数据安全,另外一方面提高了传输速度。

       所以,除非是授权人员自己失责,未认真核对信息,就进行开通,否则,系统是非常安全可靠的。

       目前派尔互联网试用开通中,除非是有人冒充玻璃深加工企业让我司开通,否则是没有进入系统的可能性。

       通过授信的方式,有一个很大的好处。假设某业务员离职,带走了原先在公司的笔记本电脑,授权人员只需要将那台笔记本的信息删除,该笔记本就无法再连接到系统。

       上面多次提到业务层,业务层其实也是一个软件,和常规软件比,没有运行界面,效率更高,更稳定,以NT Service的形式进行运行。Windows一启动,业务层自动启动(无须登录系统)。业务层和客户端的通讯,只需要指定一个端口号,客户端根本就不需存在数据库名和数据库密码。

四、      如何识别“伪三层构架”

       依据上面对三层构架和两层构架的分析,识别“真假李逵”就变地非常简单。两层构架,客户端一定要连接数据库,而三层构架就不需要。下面以SqlServer2000为例,列举两种简单方法(在服务器上操作):

方法一:数据库连接方式

       因为三层构架可以做到数据库仅在服务器内部有效,所以,只需要开放Windows验证。如果将数据库安全性修改为“Windows验证”,所有客户端都不需要采用特定Windows账号登录Windows系统,客户端依然能正常连接到服务器,则是三层架构。    

1)      启动企业管理器:开始菜单->程序->Microsoft Sql Server->企业管理器

2)      Local->右键菜单->点属性

 

 

8

3)      属性对话框->安全性,并按下图设置后点确定:

 

9

方法二:通过防火墙禁用SqlServer端口

       SqlServer2000通讯端口默认为1433。查看端口方法:在图9中点“常规”,然后点“网络配置”,弹出对话框如下图:

 

 

 

10

选择TCP/IP,然后点属性可看到当前使用的端口号。

五、总结

       本文重点讲述了两层构架和三层构架的概念,并从速度、安全性、开发难度等多角度分析了两者的区别,并以派尔玻璃管理信息系统为例,阐述了三层构架的数据传输过程,最后告诉用户如何区分一个管理系统是三层构架还是两层构架。

 

附:

1) 本文系派尔8.X版管理软件深度剖析系列文章,“看似相同,实则大不同”主题的第一篇。

2) 本文提到的数据库密码窃取工具,读者如有需要用于研究,可联系作者:bookwormzju@gmail.com

本文观点系作者个人观点,欢迎指正。

资料来源:       
posted on 2009-09-16 15:03  guofu  阅读(521)  评论(0编辑  收藏  举报