zoukankan      html  css  js  c++  java
  • 玻璃深加工管理系统构架分析

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

    吴春福:杭州派尔科技有限公司 浙大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

    本文观点系作者个人观点,欢迎指正。
  • 相关阅读:
    关于这个 blog
    P6499 [COCI2016-2017#2] Burza 题解
    CF1172F Nauuo and Bug 题解
    CF1479D Odd Mineral Resource 题解
    CF1442E Black, White and Grey Tree 题解
    CF1442D Sum 题解
    CF1025D Recovering BST 题解
    CF1056E Check Transcription 题解
    CF1025F Disjoint Triangles 题解
    红包算法的PHP实现
  • 原文地址:https://www.cnblogs.com/bookwormzju/p/1444083.html
Copyright © 2011-2022 走看看