web技术发展历程--读《大型网站技术架构_核心原理与案例分析》
1 早期的web服务

2 CGI程序的出现、发展、凋零到MVC的兴起
- CGI:通用网关接口技术。
- 随着CGI技术的出现,web服务端可以通过不同的用户请求产生动态页面内容。

- web服务器将请求数据交给CGI程序,CGI程序进行运算处理,生成HTML输出,通过web服务器返回给浏览器。早期的CGI编程语言是perl,高效便捷的开发特性使其成为当时许多网站开发的首选开发语言。
- CGI程序的缺点:web服务器通过启动独立进程的方式调用CGI程序,消耗许多不必要的系统资源。而目前流行的java Servlet则是以线程方式在java web容器中调用Servlet,和CGI方式相比,消耗的资源更少。这就是CGI技术开始消失的主要原因。
- 一般来说CGI技术(广义上讲Java Servlet)被称为脚本模式,CGI程序需要解析HTTP请求,处理业务逻辑,并在输出流中构造响应信息的HTML。这种技术的优点和缺点是同一个特性-- 可以在CGI程序中做任何事情。CGI程序在获得最大处理能力的同时,也给开发人员带来了麻烦:负责编写业务逻辑程序的程序员不擅长处理HTML,而负责页面构造的美工人员(现在是前端开发工程师)则对程序束手无策。同样,维护这样的程序就是个噩梦,业务逻辑和页面语言耦合在一起,让人无法下手。
- PHP及其后来的ASP、JSP的出现改善了这一局面,与CGI在程序中输出HTML流正好相反,开发人员可以在HTML中嵌入程序代码。这种模式被称为服务器页面模式。直到现在,PHP仍然是许多中小型网站建站的首先技术,和Apache、MySQL和Linux共同组成了一个强大的web开发平台,被称为LAMP。
- 既然CGI程序擅长处理请求信息,而服务器页面擅长构造响应的页面,那么能不能将两者结合起来?答案就是MVC模式。控制器接收处理所有的HTPP请求,根据请求信息将其分发给不同的模型对象处理,再根据模式处理结果选择构造视图,得到最终的响应信息。使用MVC模式可以很好的分离模型与视图,使得二者完全解耦,互相影响降到最低。

- 模型与视图分离为系统开发维护带来了诸多好处,为目前web开发流畅的分层架构模式奠定了基础。分层模式可以更进一步分离关注面和降低系统的耦合性,通过分层,隔离上层对下层的直接依赖,上层设计无需过多的考虑下层实现,各层之间较少耦合,只要保持接口规范不变,各层可以随意替换和复用。web开发中通常将服务端划分为三层:表现层、业务逻辑层和数据源层。表现层完成视图展现和用户交互;业务逻辑层实现系统的核心逻辑;数据源负责数据存储、交换和通信。这种层次划分是逻辑上的,物理部署上多个层会作为一个应用部署在一起。
- 上面简单的回顾了web开发的技术发展历程和一些早期主要架构模式,这些模式在企业web应用开发中也有许多实践。但是随着互联网应用的快速发展,需求场景和业务领域都有一些和传统企业应用不同的特点,对系统的可用性、扩展性、响应性能、伸缩性、安全性都提出了更高的要求,网站技术架构也和企业应用技术架构脱离,走上了一条更具创新性的发展之路。
web技术发展历程--读《大型网站技术架构_核心原理与案例分析》的更多相关文章
- 《大型网站技术架构:核心原理与案例分析》【PDF】下载
<大型网站技术架构:核心原理与案例分析>[PDF]下载链接: https://u253469.pipipan.com/fs/253469-230062557 内容简介 本书通过梳理大型网站 ...
- 阅读《大型网站技术架构:核心原理与案例分析》第五、六、七章,结合《XXX重大技术需求征集系统》,列举实例分析采用的可用性和可修改性战术,将上述内容撰写成一篇1500字左右的博客阐述你的观点。
这三章主要讲述的是网站的可用性.伸缩性和可扩展性. 首先,网站的可用性描述网站可有效访问的特性,相比于网站的其他非功能特性,网站的可用性更容易引起人们的注意,尤其是大型网站的可用性,如果大公司的网站出 ...
- 【转】分布式环境下5种session处理策略(大型网站技术架构:核心原理与案例分析 里面的方案)
前言 在搭建完集群环境后,不得不考虑的一个问题就是用户访问产生的session如何处理.如果不做任何处理的话,用户将出现频繁登录的现象,比如集群中存在A.B两台服务器,用户在第一次访问网站时,Ngin ...
- Web高级征程:《大型网站技术架构》读书笔记系列
一.此书到底何方神圣? <大型网站技术架构:核心原理与案例分析>通过梳理大型网站技术发展历程,剖析大型网站技术架构模式,深入讲述大型互联网架构设计的核心原理,并通过一组典型网站技术架构设计 ...
- 大型网站技术架构 核心原理与案例分析 pdf
需要的小伙伴拿去,哈哈.百度云链接:https://pan.baidu.com/s/1hsuiM3q
- 【大型网站技术实践】初级篇:搭建MySQL主从复制经典架构
一.业务发展驱动数据发展 随着网站业务的不断发展,用户量的不断增加,数据量成倍地增长,数据库的访问量也呈线性地增长.特别是在用户访问高峰期间,并发访问量突然增大,数据库的负载压力也会增大,如果架构方案 ...
- 阅读《大型网站技术架构》,并结合"重大需求征集系统"有感
今天阅读了<大型网站技术架构:核心原理与案例分析>的第五.六.七章.这三张主要是讲述了一个系统的可用性.伸缩性和可扩展性.而根据文中所讲述的,一个系统的可用性主要是体现在这个系统的系统服务 ...
- 大型网站技术架构(四)--核心架构要素 开启mac上印象笔记的代码块 大型网站技术架构(三)--架构模式 JDK8 stream toMap() java.lang.IllegalStateException: Duplicate key异常解决(key重复)
大型网站技术架构(四)--核心架构要素 作者:13GitHub:https://github.com/ZHENFENG13版权声明:本文为原创文章,未经允许不得转载.此篇已收录至<大型网站技 ...
- 动态 Web Server 技术发展历程
动态 Web Server 技术发展历程 开始接触 Java Web 方面的技术,此篇文章是以介绍 Web server 相关技术的演变为主来作为了解 Java servlet 的技术背景,目的是更好 ...
随机推荐
- office漏洞利用--获取shell
环境: kali系统, windows系统 流程: 在kali系统生成利用文件, kali系统下监听本地端口, windows系统打开doc文件,即可中招 第一种利用方式, 适合测试用: 从git下载 ...
- 闲来无事,把node又拾起来看看
处在国企单位,整天闲的要死要死的,民族的花朵都快枯萎了 哎呀呀,打起精神.......早睡早起,多看书...开始进入苦读状态,苦练武功,争取有朝一日报效祖国...哈哈 开玩笑的 开始看书吧 记得N ...
- sublime text3安装、注册及常用插件
由于换电脑,重装系统等问题,总要重装sublime.每次都要查来查去,不如自己记下来,以后再装也方便. 一.下载 官网下载安装包(http://www.sublimetext.com/) :然后直接点 ...
- python 浅析IO 模型
协程:遇到IO操作就切换,但是什么时候切回去呢?怎么确定IO操作? 很多程序员可能会考虑使用"线程池"或"连接池"."线程池"旨在减少创建和 ...
- SPATRA的使用
SPATRA是kali里的集成工具,可以自动化渗透测试 在命令行里键入:sparta即可进入 进去后单机左边空白处 输入你要进行渗透测试的IP 正在扫描中 点击bute可以进入hydra
- JavaScript字符串转换成数字的三种方法
在js读取文本框或者其它表单数据的时候获得的值是字符串类型的,例如两个文本框a和b,如果获得a的value值为11,b的value值为9 ,那么a.value要小于b.value,因为他们都是字符串形 ...
- BZOJ:4530: [Bjoi2014]大融合
4530: [Bjoi2014]大融合 拿这题作为lct子树查询的练手.本来以为这会是一个大知识点,结果好像只是一个小技巧? 多维护一个虚边连接着的子树大小即可. #include<cstdio ...
- Codeforces 839D Winter is here【数学:容斥原理】
D. Winter is here time limit per test:3 seconds memory limit per test:256 megabytes input:standard i ...
- [51nod1425]减减数
初始给定一个整数n.每次可以对其做一个操作,这个操作是将n减去他其中的某一位.得到新的一个数字n',然后继续操作,直到他变成0为止. 比如24这个例子,24 → 20 → 18 → 10 → 9 → ...
- hdu_1370Biorhythms(互素的中国剩余定理)
Biorhythms Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total ...