摘要:
随着智能手机的发展,C/S和B/S互相结合越发重要,深入理解两者的开发思想、技术的不同很有必要。但 通过Googel/百度找不到满意的相关的说明,故有此文和大家探讨。
注意本文是从技术角度,而不是商业角度来分析。
从技术角度来看,C/S和B/S除了UI不同,BLL(1)层和DAL层使用相同的DLL;BLL(0)层可以根据C/S、B/S特点开发;
即使用UI-->应用服务器(BLL0)-->BLL1-->DAL的架构方式。
1. 首先看一下典型的使用场景
用户下载网页A,此时服务器更新了A的提交逻辑,A再提交后新的逻辑立即起作用,并保证所有的客户端是一样的。
在这一个场景中,有两类人:一类是客户,二类是程序开发者;客户访问了网站,程序开发者更新了网站程序。
2.先说C/S
Client:客户端,Server:服务器端,最大的问题就在Server这个词,多数的C/S应用是C/DatabaseServer,而不是C/ApplicationServer。
2.1 C/DatabaseServer:即各个客户端直接访问了数据库,如果此时各个客户端的BLL层和DAL层是一样的,那没有什么问题;如果因为更新等因为BLL层和DAL层造成了不一致,就可能出现问题。
2.2 C/ApplicationServer:即各个客户端访问了应用服务器,而不能直接访问数据库
3.接着说B/S
B/S=Browser +C/ApplicationServer,这里C是指Web服务器前端的请求分发的路由器,ApplicationServer即Web服务器。
如果有一台Web服务器配置多个域名的经验,应该很清楚这个意思。
从技术角度,B/S的本质是,不让Browser 直接读写数据库,而C/S开发则“不会舍近求远”来开发应用服务器层。
B/S架构:商业逻辑总是通过Web服务器,才能到达数据库,从而有了保证。而C/S架构,各C均直接访问了数据库,这是最大的不同。
以上说的是读写数据库的区别,而UI的区别,会明显一些。
反问一个问题:如果自己开发一个客户端来解析XML(相当于自定义HTML),
服务器上使用应用服务器来读写数据,是不是就可以获取B/S架构的好处,并克服B/S的非富客户端的缺点?(不考虑安全问题)
也许未来的智能手机App,都会是某种意义上的Browser,再由开发者定义自己的HTML是什么来获得C/S和B/S的双重好处。