B/S结构,即Browser/Server(浏览器/服务器)结构,是随着Internet技术的兴起,对C/S结构的一种变化或者改进的结构。在这种结构下,用户界面完全通过WWW浏览器实现,一部分事务逻辑在前端实现,但是主要事务逻辑在服务器端实现,形成所谓3-tier结构。B/S结构,主要是利用了不断成熟的WWW浏览器技术,结合浏览器的多种scrīpt语言(VBscrīpt、Javascrīpt…)和ActiveX技术,用通用浏览器就实现了原来需要复杂专用软件才能实现的强大功能,并节约了开发成本,是一种全新的软件系统构造技术。随着Windows 98/Windows 2000将浏览器技术植入操作系统内部,这种结构更成为当今应用软件的首选体系结构。显然B/S结构应用程序相对于传统的C/S结构应用程序将是巨大的进步。

C/S 与 B/S 区别:

  Client/Server一般是建立在局域网的基础上的。Browser/Server是建立在广域网的基础上的。

  1.硬件环境不同:

  C/S 一般建立在专用的网络上,小范围里的网络环境,局域网之间再通过专门服务器提供连接和数据交换服务。

  B/S 建立在广域网之上的,不必是专门的网络硬件环境,例与电话上网,租用设备。 信息自己管理。 有比C/S更强的适应范围,一般只要有操作系统和浏览器就行。

  2.对安全要求不同

  C/S 一般面向相对固定的用户群,对信息安全的控制能力很。 一般高度机密的信息系统采用C/S 结构适宜。 可以通过B/S发布部分可公开信息。

  B/S 建立在广域网之上,对安全的控制能力相对,面向是不可知的用户群。

  3.对程序架构不同

  C/S 程序可以更加注重流程,可以对权限多层次校验,对系统运行速度可以较少考虑。

  B/S 对安全以及访问速度的多重的考虑,建立在需要更加优化的基础之上。 比C/S有更高的要求 B/S结构的程序架构是发展的趋势,从MS的。Net系列的BizTalk 2000 Exchange 2000等,全面支持网络的构件搭建的系统。

  SUN 和IBM推的JavaBean 构件技术等,使 B/S更加成熟。

  4.软件重用不同

  C/S 程序可以不可避免的整体性考虑,构件的重用性不如在B/S要求下的构件的重用性好。

  B/S 对的多重结构,要求构件相对独立的功能。 能够相对较好的重用。就入买来的餐桌可以再利用,而不是做在墙上的石头桌子。

  5.系统维护不同

  系统维护是软件生存周期中,开销大,-------重要。

  C/S 程序由于整体性,必须整体考察,处理出现的问题以及系统升级。 升级难。 可能是再做一个全新的系统。

  B/S 构件组成,方面构件个别的更换,实现系统的无缝升级。 系统维护开销减到最小。用户从网上自己下载安装就可以实现升级。

  6.处理问题不同

  C/S 程序可以处理用户面固定,并且在相同区域,安全要求高需求,与操作系统相关。 应该都是相同的系统。

  B/S 建立在广域网上,面向不同的用户群,分散地域,这是C/S无法作到的。 与操作系统平台关系最小。

  7.用户接口不同

  C/S 多是建立的Window平台上,表现方法有限,对程序员普遍要求较高。

  B/S 建立在浏览器上,有更加丰富和生动的表现方式与用户交流。 并且大部分难度减低,减低开发成本。

  8.信息流不同

  C/S 程序一般是典型的中央集权的机械式处理,交互性相对低。

  B/S 信息流向可变化,B-B B-C B-G等信息、流向的变化,更象交易中心。

  比如一些聊天软件,是c/s结构的因为满足这种软件的可维护和升级性,满足不同的人群的个性和喜好,自己制定自己的界面,安装自己喜欢的插件,但在b/s结构上实现这一点比较困难,并且可扩展性也不好。

  比如说很多人每天上新浪网,只要安装了浏览器就可以了,并不需要了解新浪的服务器用的是什么操作系统,而事实上大部分网站确实没有使用windows操作系统,但用户的电脑本身安装的大部分是windows操作系统。

  软件系统的改进和升级越来越频繁,B/S架构的产品明显体现的更方便的特性。无论用户的规模有多大,有多少分支机构都不会增加任何维护升级的工作量,所有的操作只需要针对服务器进行,如果是异地只需要把服务器连接上网即可立即进行维护和升级,这对人力、时间、费用的节省是相当惊人的。

  一个稍微大一点单位来说,系统管理人员如果需要在几百甚至几千部电脑之间来回奔跑,效率和工作量是可想而知的,但B/S架构的软件只需要管理服务器就行了,所有的客户端只是浏览器,根本不需要做任何的维护。所以客户机越来越"瘦"而服务器越来越"胖"是将来软件的主流发展方向,这使得升级和维护越来越容易而使用越来越简单。

最新文章

  1. JavaScript Date对象
  2. Hexo的coney主题的一些补充说明
  3. GnuStep使用
  4. unity, reduce android size
  5. array_flip() array_merge() array+array的使用总结
  6. 【leetcode❤python】21. Merge Two Sorted Lists
  7. Flexbox布局详解
  8. HtmlAgilityPack.dll的使用 获取HTMLid
  9. ios llvm and clang build tools
  10. 字典:当索引不好用时 - 零基础入门学习Python025
  11. UESTC_Little Deer and Blue Cat CDOJ 1025
  12. AIDL使用详解
  13. Linux搭建git服务端
  14. toggle,hasClass
  15. Redis主从复制、多实例、高可用(三)--技术流ken
  16. ELK日志分析平台环境部署 (yum安装)
  17. 使用log4net生成日志文件
  18. [OpenCV-Python] OpenCV 中图像特征提取与描述 部分 V (一)
  19. [knowledge][bigdata] nosql
  20. cdh5.13.1 升/降级SPARK2 (parcel安装的同理)

热门文章

  1. 使用变参函数实现pwd命令
  2. Could not open JPA EntityManager for transaction; nested exception is javax.persistence.PersistenceException: org.hibernate.exception.SQLGrammarException: Cannot open connection
  3. linux日常管理-rsync_ssh方式
  4. winform 客户端 HTTP协议与服务端通信以及解决中文乱码
  5. TCP/IP的3次握手和4次握手
  6. sharepoint Foundation 2013安装过程
  7. SM4算法的c++实现
  8. [bzoj1568]李超线段树模板题(标志永久化)
  9. windows、Linux 开放端口
  10. error C2872: “flann”: 不明确的符号 --- PCL 与OpenCV2 的flann命名空间冲突问题的解决方法