第一章:何谓Web应用程序
1.1 Web应用程序的有效利用
1.1.1 各种Web应用程序
- 网络商店
- 公告板系统(BBS:Bulletin Board System)
- 在线学习系统(WBT:Web Based Training)
- 电子商务(Electronic Commerce)
- 公司内部系统(例如OA系统:办公自动化(Office Automation))
1.1.2 Web应用程序的优点与缺点
1.导入与维护的成本
Web系统是可以低成本地导入的。
“低成本”是相较于:1.使用者而言 2.与过去的系统比较
除了服务器运行等初期费用,还需考虑为了维护系统而花费的人工费用。
之前建的uhhuhyep学习型社区就是一个论坛,方便同学在上面交流,可以轻易地区分享链接或者视频等,相较于过去的线下交流的话,如果要进行类似多媒体交流的话,那么同学就要提前准备一些资源:内容或者机器,来到时进行展示,这样看来是挺麻烦的。
建站的初期费用并不高,就是租个服务器而已,而为了维护系统,确实是比较花时间的,需要去更改一下配置还有备份数据什么的,之前忘记缴费,导致服务器的数据被清了,还要重新建一次站,然后发现之前的数据并不能导入, 这样无疑就增加了很多隐形的成本。
2.Web浏览器的相关限制
Web:利用超文本的信息网络(一个链接连着一个链接的结构)
Web浏览器:能够被方便地用于获取超文本数据和通过“更易于理解”的形式将数据表现出来的软件。
如何表现数据是Web浏览器的职责,但是有时候为了按照设计者的意图来表现数据,浏览器需要借助辅助软件。
有时这会添加成本。
比如我在一个新的地方,用一个新的浏览器去访问一个网页的时候,就需要额外地下载插件去辅助浏览器展示,有时候该浏览器所在的操作系统还不支持,就有点麻烦。
3.分布式处理的便利与困难
分布式处理:由多台电脑联机处理,但处理的效果像是在一台计算机上完成的一样。
集中式处理:
- 维护成本高
- 容易崩溃
- 拓展性差
分布式处理:
- 同步问题
- 可伸缩性
- 成本较低
1.2 Web应用程序的构造
1.2.1 Web的构造
Web是用来共享数据的。
cs结构:
server:
- 准备好要共享的数据
- 响应用户的要求,传递其所需的数据
client:
- 浏览器将取得的数据用易于理解的形式表现出来
1.2.2 从Web到Web应用程序
Web应用程序大体可以分为两种:
- 动态Web页(由以前的Web页发展而来的)
- Web分布式系统(利用Web通信协议)
1.动态Web页
动态Web页是以HTML为基础的扩张型Web页系统。
一开始Web服务器只是将预先准备好的数据传递到Web客户机。
但是如果想要根据用户输入和存取条件,生成**动态的**Web页,原来的HTML就相形见绌了。
动态网页的系统结构:
- 拓展了的HTML + 简单的程序
- Web浏览器 + Web服务器 + 其他程序
实现动态网页的方法
服务器方式
应用server端程序动态生成HTML。
使用CGI之类的服务器端脚本在客户端用下载的方式再现动态页面
使用客户端脚本(JavaScript)和插件程序(Java Applet、Flash)
2.Web分布式系统
从集中处理到分布式处理
Web分布式系统需要利用Web通信技术。
- 配置server和client两者所用的协议,在Web上通信
- Web服务器+应用服务器+客户机的三层模式
- 分布式对象可以使对象在各种机器上在一起协作
1.2.3 服务器端到客户端
什么内容在什么地方处理?
1.在服务器端处理
数据基本上在server端进行复杂的处理不依赖于Web浏览器的处理,
比如,无论是什么样的操作(输入的内容、内容检验、按了哪个按钮)都要向server传输数据,
这样server端要承受高负荷。
这解决了我之前的一个疑问:就是为什么有些网站或者app的验证会在本地验证,而不是在server端,比如用js代码进行验证,这样能大大减轻server的压力。
而且在本地进行校验的话,于你于我都更快捷方便。但是方便程度往往与安全程度成反比。越方便有时候就越不安全。
2.在客户端处理
客户端脚本+插件程序,以实现HTML实现不了的复杂的画面接口功能操作。
劣势:
- 浏览器与机器的操作系统存在依存关系
- 必须下载必要的程序(不方便&不安全)
1.2.4 客户端驱动的程序
1.嵌入式程序/帮助程序
功能:弥补浏览器功能上的不足(显示动画、查看pdf文件)
主流插件程序:
Flash Player
Media Player
QuickTime Player
RealPlayer
Adobe Reader
2.Java applet、ActiveX组件
Java applet:是一种在浏览器上运行的Java程序,可以用来处理图像、播放动画以及响应鼠标和键盘的输入。
ActiveX组件:
ActiveX 是一个开放的集成平台,为开发人员、 用户和 Web生产商提供了一个快速而简便的在 Internet 和 Intranet 创建程序集成和内容的方法。
使用 ActiveX, 可轻松方便的在 Web页中插入 多媒体效果、 交互式对象、以及复杂程序,创建用户体验相当的高质量多媒体CD-ROM 。
只能在IE上使用,其他地方不能使用。
之前在帮lyc弄一个网银的时候,发现那个网页必须用IE浏览器打开,然后还要在干净的虚拟机打开,然后才能加载xx盾的驱动程序,估计就是用ActiveX程序开发的一个安全程序,那版本和技术也太旧了吧,不过IE可能是大家都有的浏览器,想想也可以理解。
3.客户端脚本
1.2.5 服务器端驱动的程序
- SSI(Server Side Include,服务器端嵌入)
- CGI(common gateway interface,公共网关接口)
- Java servlet
- 服务器端脚本
1.2.6 其他技术
与数据库协作
session管理
Web服务器的职责是“交付被要求的数据”。请求是一个接一个独立的。
Session可以将多个处理过程整合在一起。
安全管理
移动终端
接口发生改变,根据同样的信息,作成整合终端——“一次书写,任意运行”的技术非常重要。
多终端的程序确实很好,比如Brup suite可以在mac,wins,linux上运行,那么我就不用担心换了个环境之后就没有拿手的工具了。
1.3 利用Web的分布式处理
1.3.1 Web三层系统
1.3.2 分布式对象
组件(component):根据职责的不同而划分成可独立运行部分
组件就是面向对象的编程中的“Object”。
在不同机器上运行的组件之间也可以协作,这被称之为分布式对象。
Web组件有哪些呢?又是那7层?
第二章:Web应用程序的开发、导入方针
2.1 弄清楚究竟什么是必要的
在导入Web应用程序的时候,明确希望进行什么操作以及希望做什么程度的操作是非常重要的。
2.2 开发Web应用程序所必需的硬件与软件
为了实现预期的系统(结构),究竟什么样的系统(软件与硬件)是必要的.
2.2.1 是在server端处理还是在client端处理
2.2.2 确保速度
- 处理速度
用户在等待了3秒或者7秒后仍然没能得到反馈,就会转而浏览其他网站。
方法:
- 增加服务器性能(内存、CPU)
- 增加服务器个数(分布式处理架构)
- 在等待页面中插入一些元素。
在我印象中,哔哩哔哩有时候在载入视频有时会很慢,但是它总会反馈给用户一些很有趣的信息,
哈哈哈,这样可以缓解用户等待的焦虑吧~
- 更新速度(更新信息)
方法:
- 做内容
- 多使用自动化的发布内容方式
感觉hupu网无时无刻不在更新内容,感觉上面有看不完的内容。
csdn以前发博客的编辑板是很难用的,尤其是插入图片这一块,就是因为这一块难用,我才有一段时间在用jianshu,但是后来csdn加入了markdown语法的编辑模式,而且还有jianhsu没有的[TOC]显示目录的方式和给文章加标签,我就选择在csdn写博客,记录技术的一些东东,毕竟在csdn写技术博客感觉更好。
- 线路速度
2.2.3 可扩索性的设计
如果能够保持可拓缩性,又能够方便地应对系统的变更和追加的需求,这样就可以构筑可以长期使用的系统。
第三章:world wide web与http
3.1 何谓world wide web
3.1.1 Web基础知识
- world wide web(万维网)
是在互联网上作为标准的文档系统。
- Web命名的由来?
分散在世界各处的信息,就像蜘蛛网(Web)般连接在一起,所以命名Web。
- Web是用来共享信息的系统。
在共享信息时,有必要事先规定信息的形式与交换信息的顺序。
格式(Format):信息的形式
协议(Protocol):交换信息的顺序
3.1.2 只表示数据
Web浏览器里表示画面的方式。
3.2 HTTP
HTTP(HyperText Transfer Protocol,超文本传输通讯协议)是为了传送和接收在HTML文件里记叙的文档而设立的协议。
由Request(要求)和Response(应答)构成。
3.2.1 HTTP Request:
- Web服务器接收的信息:
Request Head:显示客户端的信息
Web服务器可以根据这些信息和Request元的地址限制访问的范围。
但是,Request Head是由Web客户机”自己申明”的,未毕业一定是准确的。
可以进行伪造,像做过一道ctf题,限制要求来源地是Hk
Make sure you are in HongKong
3.2.2 HTTP Response:
HTTP Response是对应HTTP Request的应答,返回Response Head与数据本身(Object-body)
3.2.3 HTTP 的特征和问题
1.无状态(Stateless)
由于HTTP协议是无状态的,而出于种种考虑也不希望使之成为有状态的,因此,后面两种方案就成为现实的选择。具体来说cookie机制采用的是在客户端保持状态的方案,而session机制采用的是在服务器端保持状态的方案。同时我们也看到,由于采用服务器端保持状态的方案在客户端也需要保存一个标识,所以session机制可能需要借助于cookie机制来达到保存标识的目的,但实际上它还有其他选择。
2.安全性
为了给HTTP增加安全机制,开发了SSL(Secure Sockets Layer)和S-HTTP(Secure HyperText Transfer Protocol)等等加密协议。
3.3 Web浏览器
3.4 Web服务器
tips:
把知识连接成系统,加入经验