客户端-服务器架构的概念

客户端**-**服务器架构的定义

定义

客户端-服务器架构是一个多样化的、基于消息的、模块化的基础架构. 其目的是改善

  • 可用性(Usability)
  • 灵活性(Flexibility)
  • 互操作性(Interoperability)
  • 可伸缩性(Scalability)

    概念

  • 客户端(Client):一个服务的请求者,一个软件

  • 服务器(Server):服务提供商,软件提供商
  • 交互方式:客户机和服务器相互通信(例如通过SQL语句)硬件无关:物理分离与硬件无关
  • 平台无关:平台(Wintel、Unix…)不相关

    动机

  • 在多个用户之间共享资源

    • 客户端软件与最终用户交互
    • 服务器软件与共享资源交互

      客户端-服务器架构的演化

  1. 批处理(Batch Processing)
  2. 时间共享(Time-sharing)
  3. 客户端与服务器的出现
  4. 文件共享架构(File Sharing Architecture)
    • PC从文件服务器请求文件(记录)
    • 业务逻辑全部在客户端,共享资源在服务器上
    • 在数据量较低时工作
  5. 两层客户端-服务器架构
    • 优点
      • 与文件共享系统相比,因为两层客户端-服务器发送请求与回答而不是文件,从而降低了网络使用
    • 缺点
      • 局域网应用: 它是单一服务器且以局域网为中心的,所以难以扩展至大型企业广域网或 Intranet;
      • 受限于供应商:程序的升级维护必须由供应商重新开发扩展;
      • 数据库开发商的锁定:因为你的GUI代码直接与DB服务器绑定。依赖于一个特定的开发商的技术使得你会很困难或者很高的费用使用别的开发商的产品,也就是说,更换其它产品困难。
      • 程序配置困难:当配置到远程的环境时候,两层的C/S结构管理起来比较困难。尤其是对于胖客户端的情况,就更难管理;
      • 程序维护困难:胖客户端导致程序维护困难:用户必须在客户端安装特定的客户端应用程序,而且当越来越多的企业的业务逻辑写在客户端应用程序中的时候,程序维护变得越来越困难。
      • 软件升级困难:需要每个客户端都要安装新的客户端应用程序
  6. 3层客户端-服务器架构
    • 流行的架构
    • 所有的多层客户端-服务器架构(例如:JavaEE)均为由3层客户端-服务器架构扩充而来

      2层与3层客户端-服务器架构的比较

      优点
  • 三层客户端-服务器架构更容易维护
  • 三层客户端-服务器架构可以有瘦客户端
  • 三客户端-服务器架构中,各层开发语言可以是互相独立的
  • 三层客户端-服务器架构可以连接到多个数据库

    3层层次架构与3层客户端-服务器架构的比较

  • 三层层次架构(包括显示层,应用层与永久数据保持层)中的层指的是逻辑意义上的层。这些层,可以部署在同一台计算机上,当然也可以部署在不同的计算机上。

  • 三层客户端-服务器架构里面所涉及的层指的是物理意义上的层
    • 客户端运行在PC上;
    • 应用层被部署与运行在应用服务器上;
    • 数据层包含数据库与数据库管理系统软件,被部署与运行在数据库服务器上。

image.png