架构·Client-Server
1、目录
- 概述
- 两层架构
- 三层架构
- MVC 架构
2、概述
一个联网应用程序总是分布在两个或多个主机之间,这就衍生了我们该如何在多个主机之间划分功能的问题。
我们从两个方面关注该问题:
1、技术推理。
2、组织如何管理其网络计算基础架构和联网应用程序。
3、两层架构
有两个基本的替代方案如下图所示,C/S 架构与P2P 架构。
*C/S 架构 与 P2P 架构3.1、 C/S 架构
C/S 应用程序 一部分是由 以与客户端或用户交互为基础的主机,另一部分主机则是专门用于管理大型数据存储库,处理应用特有的数据和逻辑的服务器。
这给 C/S 架构引入了不对称的功能性,客户端需要向服务端发起请求,而服务端需要满足(答复)客户端的请求。C/S 架构适合应用于在服务器上发布的信息管理应用程序。OLTP 应用则是传统的 C/S 架构中的良好示例。
3.2、P2P 架构
这是 C/S 架构的替代架构,P2P架构不设立服务端,只有客户端。这种架构对于一些去中心化的即时通信应用是有吸引力的。P2P 很适用于语音或视频会议的场景。P2P 的很明显的特征是功能的对称性。
一般来说,可以将C/S和P2P架构混合在一起。举例,许多直接即时通讯社交应用涉及信息管理和多用户交互方面。一个客户端主机可以同时作为 Client 或 Peer,这取决于该主机在应用程序的角色定义。
4、三层架构
二层结构无法识别包含关键数据库一类的特殊需求,典型的例子是 OLTP。希望将这些关键任务数据库集成到C / S应用程序中,而不会牺牲其期望的质量。
下面将展示三层的 C/S 架构:
- 第一层:客户端(用户)。
- 第二层:服务端(用于存放应用程序的逻辑)。
- 第三层:数据库(不同的应用程序所需要的共享数据)。
这种3层架构的动机包括:
- 表现:专注于单个用户
- 应用程序逻辑:支持多用户,通过添加多台服务器来支持更多用户的成本是较低的。
- 关键共享数据:支持多个应用程序。
这三层的 C/S 架构字啊每层之间都是n…1
的关系。显然三层架构比两层架构具备更高的扩展性,向客户端隐藏的异构数据库支持以及提供了不同的通信协议的更好支持。
5、MVC 架构
模型 - 视图 - 控制器(MVC)应用程序架构是用于分析分布式应用程序的功能的流行模型。这种抽象有助于将应用程序分解成逻辑组件,以实现更容易/更清晰的分布式实现。
MVC 划分在监视和处理数据中涉及的对象之间的功能,以便最小化这些对象之间的耦合度,并因此将这些对象映射在多层架构上。
最初 MVC 用户解耦:输入、数据处理、输出 UI 界面。但是,将此模型映射到多层网站或企业应用程序也很简单。
MVC- 模型(Model):操作数据。
当 Model 层数据变更时通知 View 。
它允许 Controller 访问 Model 封装的方法。
- 视图(View):将 Model 提供的内容渲染出来。
它可以查询Model关于数据的模型并指定如何呈现它。
- 控制器(Controller):定义应用程序的行为。
它将用户手势映射到要由Model执行的操作。在标准的 GUI 客户端,用户手势可以是按压按钮。在 Web 环境,它可以是发起一次 HTTP GET/POST 请求。通常一个Controller,表示一组相关的功能。