今天偶然打开了大学里的数据库教材,里面对于C/S系统做了不少好的定义。另外,我也在网上查询了关于这类的定义,发觉不少有误解,所以特地来说说。
B/S即brower/server,C/S即client/server。按字面理解这两者应该是并列的。很多人也是这么认为的。所以会滋生出莫名其妙的讨论,如B/S与C/S的优缺点比较等。 其实B/S是C/S结构的一个特例。
C/S应用系统体系结构,是一种系统结构,相对于集中式体系结构。它的含义是以计算机网络为基础(包括局域和广域网)将计算机应用有机的分布在多台计算机中的结构。
C/S结构中按功能划分成客户机和服务器。一个是服务的提供者,一个是服务的消费者。这里常有的一个误区是认为C/S结构中一般只有一个性能优越的机器作为服务器。C/S结构也可以是多台服务器,多个分布式的数据库系统,各数据库系统间,可以是等地位的。
然后就要说到三层体系架构。是将服务器上数据功能和应用处理功能分开,将C/S结构中的两层变成三层。原本客户端数据的输入输出功能保留,数据交换和处理的功能都交给应用处理的中间层,而数据服务器也就是数据层负责保存管理数据的功能。在实际应用中,中间的应用层服务器,与数据服务器只是一个理论上的概念,可以是同一个硬件PC,或者是一个局域网的PC,这样两层间的数据交换就容易很多。
三层的好处在于易于维护,因为这样将客户端的工作尽量的转移到了应用层,而应用层和数据层一般都是数量不多的服务器,管理维护工作就在于维护这几个服务器的程序,而一般不需要改动成百上千的客户端。人们常说这是B/S结构的好处,其实我觉得这个是三层结构的好处。
另外还要说到的是C/S体系的DB功能划分。说到B/S,很多人就认为它对于网络的稳定性要求很高等等,其实这是和C/S的DB功能划分有关系的。一般来说DB功能划分有三种:
C/S结构,最简化的客户端,只负责数据采集,和显示输出。也就是一般性B/S结构中,Brower完成的功能。
RU结构,RAD-unify。客户端负责一些查询优化与处理功能。部分分担了服务器的工作。有功能分布,没有数据分布。
EWS结构,Extended Workstation Server。每个客户端都有局部数据库来临时存放数据,与服务器数据库相互协同来完成数据库操作。这种结构不仅有功能分布,而且有数据分布。好处是减少网络数据,可以离网操作。缺点也就是数据同步操作复杂,数据一致性问题。
B/S中,我们也可以把浏览器作为一种客户端技术,然后以网络连接到服务器,所以说它是一种C/S结构。而且是一种三层架构。当然它的特殊性还在于它采用了浏览器作为客户端,使客户端都不需要维护,因为Microsoft为我们做了一个挺好的客户端框架了。B/S中,我们也可以把浏览器作为一种客户端技术,然后以网络连接到服务器,所以说它是一种C/S结构。而且是一种三层架构。当然它的特殊性还在于它采用了浏览器作为客户端,使客户端都不需要维护,因为Microsoft为我们做了一个挺好的客户端框架了。B/S中采用了C/S结构的DB功能划分,所以是一种瘦客户端,胖服务器的设计。
综上所述,B/S只是C/S的特例,没什么人会有问题了吧?