JavaEE-2020-01-多层架构及其应用领域

多层架构及其应用领域

Web架构

HTTP和HTML

HTTP(HyperText Transfer Protocol)是web浏览器与web服务器的交流方式约定.

  • 超文本(HyperText)指不仅有文本, 还有指向其它文件的链接, 以及图像, 声音, 视频等其它媒体方式的资源.

  • 网页(web page)是在浏览器中解释执行的符合HTML(HyperText Markup Language)格式的纯文本文件.

  • 超链接(hyperlink)指向服务器(网站)上的资源(网页和其它文件). 超链接是网页(web page)之间的导航方式. 网页之间的超链接把各个服务器上的页面链接在一起, 构成了WWW(World Wide Web).

  • 网页的内容 - HTML

    • 网页的样式 - CSS
    • 网页与用户的交互 - JavaScript
    • 转到其它网页 - 超链接
      在这里插入图片描述

HTTP协议的交互过程

  • 浏览器向服务器发送访问资源的请求
    • GET/POST… URL代表的网站资源
  • 服务器向浏览器向浏览器发送响应
    • HTML格式的网页
    • 或者其它文本格式, 例如
      • json文件 - 近几年很流行
      • Base64编码的二进制文件 - 可以传输任何文件

静态网页和动态生成网页

最初的Web用户在通过超链接导航, 在静态网页之间浏览固定的内容. 网站的维护者通过修改静态网页, 为用户提供新的内容. 例如: 每天修改新闻网页. 在只有静态网页的条件下, 用户与网站的交互操作, 例如发布信息, 是难以完成的.

用户与网站之间的交互, 可以实现为: 根据用户的操作, 在服务器上动态生成网页返回给用户. 动态生成网页的技术包括: CGI, Java Servlet, JSP, PHP, ASP等众多服务器端技术.

Java Web架构

支持多线程和网络通信的Java语言提供了Java Servlet技术用于在服务器上动态生成网页. 进一步演进出生成动态网页的模板JSP(Java Server Page).

  • Java Servlet是Java程序生成HTML文件. 想象一下, 用print()函数输出一个字符串作为网页的工作量!
    • Java代码中嵌入网页
  • JSP是在HTML文件中嵌入Java程序. Java程序的结果(字符串), 替换网页中Java程序. 像在网页文件中调用了一个Java函数, 得到函数的结果.
    • 网页中嵌入Java代码

JSP(Java Server Page)在服务器端动态生成网页.
在这里插入图片描述

服务器端JSP执行过程

  • 服务器接收浏览器的请求信息
    • 接收到的URL对应的资源
    • 接收到的来自浏览器的参数
  • URL对应的资源的处理方式
    • 静态资源
      • 直接返回资源对应的文件
    • 资源是JSP
      • 根据资源的名称, 找到对应的JSP文件, 生成对应的Servlet. 然后由对应的Servlet处理.
      • 可以看出JSP是Servlet的一种方便开发的简化.
    • 资源是servlet
      • 读取浏览器的请求中附带的参数
      • 执行servlet中的业务逻辑
      • 返回生成的响应(HTML文件/JSON文件/Base64编码的二进制文件等)

浏览器执行网页的过程

接收服务器传来的文件, 解码出文件内容. 如果是HTML文件(网页), 则按照内容的顺序执行网页中的脚本, 展示渲染网页中的内容.

浏览器只与HTTP协议, 网页的URL有关. 与服务器生成网页的技术无关.

架构演进

业务架构的演进

以银行为例展现架构的演变. [重要]

  • 最早期是一个人 A 0 A_0 A0负责全部存贷款活动, 相当于单层结构.

  • 随着业务的增加, 发现忙不过来了. 于是雇佣 B 0 B_0 B0负责记账. A 0 A_0 A0负责接待客户和处理业务逻辑, B 0 B_0 B0相当于数据库服务器.

    • 还有一个方案是加盟连锁, 雇佣 A 1 A_1 A1 A 0 A_0 A0自己做同样的业务. 但是客户的账户在 A 0 A_0 A0 A 1 A_1 A1之间同步需要时间和精力.
      • 随着业务的增加, 于是雇佣人数越来越多. A 1 , A 2 , . . . , A n A_1, A_2, ..., A_n A1,A2,...,An做和 A 0 A_0 A0同样的负责接待客户和业务逻辑. n n n可以任意大.
      • 账户同步的消耗越来越大. 完全同步是 2 n − 1 2^{n-1} 2n1, 通信量增长过快, 时间消耗过长.
        • 逐渐出现专门负责账户同步的 M M M. 形成P2P架构, 其关键是能够查询账户由哪个 A i A_i A
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值