主题:[原创]B/S还是C/S?
曾几何时,当网络技术刚刚起步的时候,为了实现一些基本的网络应用,人们编写了很多应用,通过服务端程序和客户端程序协调工作,实现了基本的网络功能。对这种模式,大家叫做C/S模式(Client/Server)。一时间,成为具体应用的主流。
但是,随着互连技术的发展,出现了InterNet,接着IntreNet又蓬勃发展起来。一种基于Web服务的网络服务技术逐渐被大家认同,用户直接通过HTML表单提交数据和服务器进行交互,实现网络服务功能。这种技术被称之为B/S(Browes/Server)模式。
相比之下,B/S模式开发的网络应用比起C/S模式的网络应用具有更多的优势:它不需要开发专门的客户端程序,当然也不需要发布客户端程序,有利于软件的安装调试和软件的推广;它采用解释执行的脚本进行软件开发,便于软件维护和开发;在界面方面,可以利用现成的HTML协议,加上CSS技术,做到方便、快捷,界面友好。可以说,正合胃口。同时,随着网络技术的发展,服务端程序的开发技术也得到了迅猛的发展,由最初的只能开发简单应用,到可以全面处理数据库问题、图形图像问题,系统配置及相关问题等等。开发平台由最初的ASP,CGI到现在的PHP,JSP,ASP.NET,几乎能做我们想做的任何问题。正是由于它有着许多的优点,一段时间以来,成为大家共同赞赏的、一致认可的网络应用开发模式。现在,几乎没有人会认为,B/S模式是不可取的。它成为当今网络应用的主潮流。网站模式的电子商务应用、邮件服务、论坛、社区服务等等就不必说了。包括很多管理平台也纷纷采用B/S模式进行开发,例如企业的业务管理系统、政务服务系统、也包括各种大大小小的不同行业的管理软件。近些年来,自动化办公系统(OA)也逐渐采用这种模式开发。
可是,随着近年来网络技术的进一步成熟,特别是网络安全技术的地位日渐提升,我不禁回头又想起了原来曾经让我深感神奇的C/S模式来。虽然C/S模式相比B/S模式有很多的先天不足,但是它也有很多东西是B/S模式所不具备的:C/S模式由于有客户端专门程序的参与,可以充分利用客户端资源来为具体应用服务。比如说,DDraw技术、OpenGL技术等,在IE中就无法实现,至少无法直接实现(可以采用ActiveX技术开发客户插件来实现),又比如说,文本编辑功能虽然在IE中也能实现,但是比较客户端专用文本编辑软件,其功能要弱很多,而且目前我所见过的基于IE的编辑器都存在或多或少的问题。由于IE中的应用的实现目前主要是使用JavaScript脚本或者是Java小程序,其运行效率很低,很难满足某些复杂应用的需要,同时由于客户端在运行时需要下载相应的脚本程序,也增加的网路的负担,降低了网络应用的性能。当然,也有采用ActiveX技术的,可以一次下载,重复使用,效率也比较高,但其开发难度目前较高,在客户端的管理也不方便,特别是当今网络安全问题日益突出的时候,谁能保证下载的控件是安全的呢?我就有过这样的例子,在访问某些网站的时候,自动下载了控件,过了些时间,检查系统,也不知道哪些是有用的了。再者,使用B/S技术,现在都几乎使用解释执行的脚本语言,在服务器端的执行效率也是可想而知。虽然现在能够提供动态编译的功能,但是要应付现代大规模的网络应用,特别是现在越来越受到大家欢迎的图像处理功能和复杂数据处理功能,这种模式难以满足需要。我曾经遇到过一个基于ASP.Net应用的排课系统,作者使用C#编写了排课程序,放在服务器端执行。结果是客户端提交了排课的申请以后,等半天也得不到结果,IE呈假死状态,不知道服务器是否在工作,其进度如何。而使用C/S系统,则可以很方便的加上展示工作状态的功能,或者为了减轻服务器负担考虑将这部分功能放在客户端实现,其代价也不会太大。
C/S模式虽然有很多劣势,但也有很多好的性能,这一点不能忽视,在具体任务面前用B/S还是C/S要具体考虑。最近,我还欣喜的看到,大家在C/S应用方面的探索,又有了很多新的进步,像腾迅的系列软件,现在的网络电视收看软件,网络音乐收听软件,我也看到“四川自学考试系统”等等,都采用了C/S的构架。我看来,之所以这样选择,大概会有以下原因:1、软件本身提供基本的客户端主体程序,支持网络更新。当软件的业务逻辑发生变化时,或者出现其他的更新需求时,技术人员不必深入到客户层,只需要将需要更新的模块放到服务端即可。而软件的基本模块一般可以做的比较小,用户能够方便的通过网络媒体下载得到。2、为了安全的需要,可以有灵活的验证手段和版权保护手段;3、并不排斥Web服务,在软件中将部分功能模块用IE的ActiveX控件实现,并将IE的界面和客户端的界面有机结合起来,显得更加友好;4、依据业务量灵活安排功能模块的实现位置,既可以考虑放到服务器端,也可以方便的在客户端实现,使整个工程更加协调,综合效能更高;5、组件编程技术日趋成熟,软件界面的维护不比Web开发难太多。6、对于下载模块的管理更加统一、有序,因为它由软件本身管理,而不是由IE管理。(老实说,我并不放心IE的管理,要不何必还要上网助手之类的东东呢)。
我看到了,C/S又回来了,不过是带着B/S的成功回来的!
yaopo@tom.com
但是,随着互连技术的发展,出现了InterNet,接着IntreNet又蓬勃发展起来。一种基于Web服务的网络服务技术逐渐被大家认同,用户直接通过HTML表单提交数据和服务器进行交互,实现网络服务功能。这种技术被称之为B/S(Browes/Server)模式。
相比之下,B/S模式开发的网络应用比起C/S模式的网络应用具有更多的优势:它不需要开发专门的客户端程序,当然也不需要发布客户端程序,有利于软件的安装调试和软件的推广;它采用解释执行的脚本进行软件开发,便于软件维护和开发;在界面方面,可以利用现成的HTML协议,加上CSS技术,做到方便、快捷,界面友好。可以说,正合胃口。同时,随着网络技术的发展,服务端程序的开发技术也得到了迅猛的发展,由最初的只能开发简单应用,到可以全面处理数据库问题、图形图像问题,系统配置及相关问题等等。开发平台由最初的ASP,CGI到现在的PHP,JSP,ASP.NET,几乎能做我们想做的任何问题。正是由于它有着许多的优点,一段时间以来,成为大家共同赞赏的、一致认可的网络应用开发模式。现在,几乎没有人会认为,B/S模式是不可取的。它成为当今网络应用的主潮流。网站模式的电子商务应用、邮件服务、论坛、社区服务等等就不必说了。包括很多管理平台也纷纷采用B/S模式进行开发,例如企业的业务管理系统、政务服务系统、也包括各种大大小小的不同行业的管理软件。近些年来,自动化办公系统(OA)也逐渐采用这种模式开发。
可是,随着近年来网络技术的进一步成熟,特别是网络安全技术的地位日渐提升,我不禁回头又想起了原来曾经让我深感神奇的C/S模式来。虽然C/S模式相比B/S模式有很多的先天不足,但是它也有很多东西是B/S模式所不具备的:C/S模式由于有客户端专门程序的参与,可以充分利用客户端资源来为具体应用服务。比如说,DDraw技术、OpenGL技术等,在IE中就无法实现,至少无法直接实现(可以采用ActiveX技术开发客户插件来实现),又比如说,文本编辑功能虽然在IE中也能实现,但是比较客户端专用文本编辑软件,其功能要弱很多,而且目前我所见过的基于IE的编辑器都存在或多或少的问题。由于IE中的应用的实现目前主要是使用JavaScript脚本或者是Java小程序,其运行效率很低,很难满足某些复杂应用的需要,同时由于客户端在运行时需要下载相应的脚本程序,也增加的网路的负担,降低了网络应用的性能。当然,也有采用ActiveX技术的,可以一次下载,重复使用,效率也比较高,但其开发难度目前较高,在客户端的管理也不方便,特别是当今网络安全问题日益突出的时候,谁能保证下载的控件是安全的呢?我就有过这样的例子,在访问某些网站的时候,自动下载了控件,过了些时间,检查系统,也不知道哪些是有用的了。再者,使用B/S技术,现在都几乎使用解释执行的脚本语言,在服务器端的执行效率也是可想而知。虽然现在能够提供动态编译的功能,但是要应付现代大规模的网络应用,特别是现在越来越受到大家欢迎的图像处理功能和复杂数据处理功能,这种模式难以满足需要。我曾经遇到过一个基于ASP.Net应用的排课系统,作者使用C#编写了排课程序,放在服务器端执行。结果是客户端提交了排课的申请以后,等半天也得不到结果,IE呈假死状态,不知道服务器是否在工作,其进度如何。而使用C/S系统,则可以很方便的加上展示工作状态的功能,或者为了减轻服务器负担考虑将这部分功能放在客户端实现,其代价也不会太大。
C/S模式虽然有很多劣势,但也有很多好的性能,这一点不能忽视,在具体任务面前用B/S还是C/S要具体考虑。最近,我还欣喜的看到,大家在C/S应用方面的探索,又有了很多新的进步,像腾迅的系列软件,现在的网络电视收看软件,网络音乐收听软件,我也看到“四川自学考试系统”等等,都采用了C/S的构架。我看来,之所以这样选择,大概会有以下原因:1、软件本身提供基本的客户端主体程序,支持网络更新。当软件的业务逻辑发生变化时,或者出现其他的更新需求时,技术人员不必深入到客户层,只需要将需要更新的模块放到服务端即可。而软件的基本模块一般可以做的比较小,用户能够方便的通过网络媒体下载得到。2、为了安全的需要,可以有灵活的验证手段和版权保护手段;3、并不排斥Web服务,在软件中将部分功能模块用IE的ActiveX控件实现,并将IE的界面和客户端的界面有机结合起来,显得更加友好;4、依据业务量灵活安排功能模块的实现位置,既可以考虑放到服务器端,也可以方便的在客户端实现,使整个工程更加协调,综合效能更高;5、组件编程技术日趋成熟,软件界面的维护不比Web开发难太多。6、对于下载模块的管理更加统一、有序,因为它由软件本身管理,而不是由IE管理。(老实说,我并不放心IE的管理,要不何必还要上网助手之类的东东呢)。
我看到了,C/S又回来了,不过是带着B/S的成功回来的!
yaopo@tom.com