缘起
决定投身web开发了,不过,现在有个问题,那就是web是什么?为了搞清楚这个问题,去图书馆借了本《web应用程序 --CGI到web三层系统》,以下是一些笔记。博客的版式不好,PDF地址:http://www.ntu.edu.cn/
正文
万维网(web)是信息的仓库,是可以用来查询,购物,沟通的平台。Web应用就是实现了具体功能的程序。
Web应用的类型:1.网络商店 2.信息服务 3.企业内部系统 4 娱乐
Web应用的优点:方便,统一界面
缺点:维护成本,web浏览器的限制,分布式处理的优劣
Web的构造
功能决定结构,要理解其结构,首先要明白其功能。Web功能是共享数据,围绕这一点,抽象出请求响应模型。首先,准备数据(HTML),然后,服务器响应请求,传递数据,最后,浏览器接受数据。
动态网页:1.服务器方式,即服务器程序(CGI)动态生成HTML 2.客户端下载,JavaScript,Java Applet,Flash
Web分布式系统:web 3层系统(数据库服务器,应用服务器和浏览器)和分布式对象(EJB,CORBA)
在构建web系统时,要考虑什么内容在何处处理,客户端还是服务器端,还是外部程序。
客户端驱动程序:1.各种插件程序(动画,pdf阅读器等) 2.Java Applet和ActiveX 3.javascript脚本
服务器驱动程序:SSI,CGI,Java Servlet,服务器脚本(Perl,PHP,JSP,ASP)
其他技术:数据库协作,Session管理,安全管理,移动终端
开发Web应用对应的问题:
在何处处理(服务器还是客户端),速度是互联网的生命(处理速度,更新速度,网络速度),可扩展性
Web-共享信息系统,HTTP,HTML
HTTP request 和response,状态码,HTTP的特征(容易使用)和问题(无状态和安全性)
无状态--Session管理,安全性--SSL
HTTP客户机:web浏览器,wget,Robot程序(Sipder或者爬虫程序)
HTTP客户机程序可以使用C++/Java,可视化环境(VB,Delphi),Perl,Ruby,Python
Web程序运行的环境:Linux和FreeBSD,Apache
HTTP的扩充协议-WebDAV(http://www.webdav,org)
互联网与TCP/IP
Internet(最大的网络)和 internet(将计算机网络连接起来网络)。
互联网的特征:1.自律分散型的网络 2.使用TCP/IP标准协议 3.互联网必须存在服务器 4.ISP/ICP
LAN与WAN:拓扑结构,主干线,公众网,路由选择
Web 应用的链路
终端的类型,线路的速度,计量式付费还是固定费用
连接方式:可变IP地址,拨号连接
连接方法:模拟,ADSL,光纤
TCP/IP的层次:链路层(网络接口层),网络层(Internet,IP,ICMP,IGMP),传输层(TCP,UDP),应用层(HTTP-web,TELNET-远程终端协议,[SMTP,POP,IMAP]-电子邮件协议,NNTP-配置网络新闻,LDAP-目录服务,DHCP-动态主机构成协议)
端口号:可以在同一IP上运行多种不同的服务。一些well-known的端口:FTP(20-传送数据,21-控制),TELNET(23),SMTP(25),HTTP(80),POP3(110)
虚拟域(Virtual Domain)可以在同一台服务器上使用多个域名。
DDNS(动态域名系统):当DNS数据库内容发生变更时,可立即获取通知的DNS为DDNS。
向DNS服务询问时,可以使用的协议如下:ARP,RARP,BOOTP,DHCP,RIP,DNS。
数据库:文件数据库,面向对象数据库(OODBMS-将数据类型和处理的内容作为一套对象,ORDMS-可以存储对象数据的RDBMS)
SQL(DML,DDL)
数据库与接口:web程序访问数据 的方式,ODBC、JDBC、独立的API(利用数据库和OS的特定API)
XML格式的数据库:1.输入输出XML格式数据的数据库 2.可以存储XML数据的数据库
数据库服务器的选择:规模与功能,成本,与web的协同工作的能力
免费的RDBMS:PostgreSQL(面向微机的高性能数据库服务器),MySQL(简单方便的数据库服务器)
数据仓库(warehouse):可用于数据挖掘的信息积聚地。在不能看到顾客的电子商务中,数据仓库就是电子商务积累的经验。对其数据进行多元的解析和分析的处理称为OLAP(On-Line Analytical Processing,现在流行的叫法为数据挖掘)
数据库与全文检索,google公司的PageRank算法。
面向对象是将数据和处理方法作为一个整体对待的思维方式。具体的实现方法是:1.将有关联的东西放在一起 2.封装和隐藏 (误区:过度隐藏和过度关联)3.类和继承 4.组件化编程 5.消息和参数(就是方法调用) 6.对象之间的通信(即传递什么消息,参数如何传递,如何存取处理结果,这些统称通信协议) 7.对象处理流程的封装
分布式对象:在多台机器上联合驱动对象的技术,机器之间采用TCP/IP协议进行通信。
Object Management Group(OMG)http://www.omg.org/
分布式对象技术,为了在不同的平台上利用不同编程语言进行开发的对象能够通信,开发了以RPC为首的各种技术。分布式对象的分类:
1.以windows环境为中心的分布式对象(COM+),OLE,DCOM,ActiveX,COM+,事件驱动
2.CORBA为中心的通用技术,ORB(Object Request Broker),IDL(Interface Definition Language),IIOP(Internet Inter-ORB Protocol,在互联网上ORB之间的通信的协议),除了IIOP协议之外,还有RMI over IIOP和HORB,利用XML定制SOAP(Simple Object Access Protocol)
3.Java环境为中心的分布式对象技术,RMI,以及基于RMI的EJB(Enterprise JavaBeans),RMI/IIOP
Web三层架构:表示层(UI,浏览器或其他利用HTTP的软件),功能层(应用服务器),数据层(数据服务器)
应用程序服务器可以提高系统的开发效率和性能,具体的作用如下:事务管理,Session管理,安全性管理,多任务管理和负载均衡(clustering & load balancer)。
主流的web应用程序服务器软件,Java对应,EJB尤其。例如:weblogic,websphere,Oracle Internet Application Server,Tomcat(Jakarta项目的web服务器)
计算模式从集中(大型机)到分散(二层系统)再到集中(三层系统,应用层)
安全性
加密技术(秘钥和公钥,数字签名,电子水印,认证中心和数字ID,PKI-Public Key Infrastructure是认证中心和认证中心发行的数字ID的支柱,一些应用程序有SSL和S/MIME)
防火墙可以分为包过滤和代理两种。
SSL(Secure Socket Layer)可以为HTTP或FTP等数据进行加密传输。SSL通信的前置条件: 1.web服务器和客户端支持SSL 2.被制作成用来加密的秘钥(公钥) IIS将SSL作为标准支持,Apache使用OpenSSL和mod_ssl
SSL的结构:处于TCP/IP之上,应用协议之下。完成如下的操作:1.服务器认证 2.客户机认证 3.通信内容加密
VPN(Virtual Private Network),利用加密技术,将互联网作为私有网络。
HTML
Dynamic HTML:CSS,JavaScript,HTML,XML
HTML和CSS(Cascading Style Sheets),构造与表现分离,表现和设计都可以再利用。除了CSS,还有JSS和与XML搭配的XSL
HTML是以SGML(Standard Generalized Markup Language)为基础发展过来的。SGML是标记语言的一种,以tag表示文本的逻辑结构。
DTD(Document Type Definition),XHTML利用XML重定义HTML。
HTML主要分为head部分要素(标题,列表之类)和body部分要素(行要素,块要素和表单)
CSS的使用:1.head中定义(嵌入样式表) 2.别的文件定义,需要时读取(外部样式表) 3.在元素的属性中标明(内联样式)
XML
XML(eXtensible Markup Language)以互联网为中心的广泛使用的数据格式,带有可扩展的功能。
XML的用途: 1.作为数据的一种形式 2.作为交换数据的协议 3.作为一种表现手段(将过去的HTML形式的web页面修改为XML形式-XHTML)
XML树形结构,序列化和反序列化,数据schema,名称空间,链接信息(XLink,XPointer,XPath),XML中数据与风格分离
基于XML的语言:XHTML,SMIL,MathML,SVG,RDF,BML
Schema语言:定义标记和属性(即数据结构)的语言。例如:DTD(形如<! ELEMENT 要素名 内容模式>),XML Schema(与XML语法相同),RELAX等
XML中使用的样式表:CSS,XSL
XML解析器:MSXML以及Java或.NET平台的xml库代码
XML API: Document Object Model(DOM),Simple API fof XML(SAX)
XML的主要用途是作为协议,最具代表性的是Simple Object Access Protocol(SOAP)。SOAP是互联网相连接的软件之间相互访问的共用框架,使用HTTP作为上层协议,可以交换基于XML的信息。
XHTML:同XML组合使用的下一代HTML
XHTML的DTD申明:Strict, Transitional,Frameset
互联网上提供了各种各样的Web 服务,web服务是以web为中心的,特指使用XML开展电子商务相关的服务的总和,是一种动态协作结构。Web服务的基础是:UDDI(Universal Description,Discovery and Integration,其中的信息都是以WSDL记述的),WSDL(Web Services Description Language,记录商业活动的内容和企业联系方式,以及贸易中使用的协议和数据格式,WSDL是基于XML定义的),SOAP(Simple Object Access Protocol,主要通过XML交换数据时调用)
UDDI:http://www.uddi.org
WSDL:http://www.w3.org/TR?wsdl
SOAP:http://www.w3.org/TR/SOAP
服务器端程序
ASP,PHP,JSP,CGI
CGI的启动源: 表单(最常见),链接,SSI
Cookie:通过web浏览器向用户计算机中写入一些数据的结构。限制:1.文本形式 2.大小限制4kb 3.单个web服务器最多20个Cookie 4.web浏览器最多300个Cookie。通过HTML的meta保存/发送Cookie,通过HTTP_COOKIE获取/接受Cookie。
格式:name=value;expires=有效期;domain=xxx;path=xxx;
以web浏览器为基础的是瘦客户端,利用的对象的机器是胖客户端(使用SOAP)
.NET(C#+CRL,新web计算构想)与Java
JavaBeans:EJB可以通过网络使得不同虚拟机上的对象协同工作
J2EE 面向企业,特别是电子商务
表示层:JSP,Servlet,HTML
商业逻辑:EJB
后台:数据库连接JDBC,目录服务JNDI,分布式事务JTA,分布式消息JMS,分布式对象RMI,邮件连接JavaMail,网络资源管理JMX
后记
图解和漫画很有趣易懂,意外的发现日本作者写图书内容很翔实,图解很亲切易懂。因为自己比较喜欢看漫画,所以觉得这种讲解的方式既有趣又能学习新知识;想想那些教科书,正襟危坐+洗耳恭听,单调而乏味,看过之后,形如手握细沙,兜不住一星半点。浏览过书后,对web有了个大体的了解,不过理解不太深刻。
看过关于人类记忆的短文,大意是通过建立关联记忆概念。抽象和抽象之间关联,抽象和具体之间关联,具体和具体之间的关联。人脑的图形处理能力强于文字处理能力。记忆的基本单元是神经元,神经元之间通过突触建立关联,整个大脑可以看作是一个由神经元和突触构建的巨大网络,而且还是并行的(左右脑独立处理,并通过神经束通信)。孤立的记一点,可以看作将信息存储在单个神经元上,试想在亿万神经元中搜寻那个特定的点应该会很慢;但是,如果将该点和一簇活跃的神经元关联,这样被检索到的概率将大大增加。
参考资料
1.web 应用程序--CGI到web三层系统,西村著,高敬译,科学出版社,2004