web知識(shí)的梳理web系統(tǒng)的構(gòu)架1.B/S vs C/S(Browser/server? ? Client/Server)BS :用瀏覽器查看的應(yīng)用程序? ? ? ? ? ? CS: 需要額外安裝客戶端的非單機(jī)版的應(yīng)用程序比較:1.他們都是非常重要的計(jì)算架構(gòu)2.在適用internet 、維護(hù)工作量等方面,BS比CS要強(qiáng)的多3.B/S 架構(gòu)需要進(jìn)行瀏覽器的兼容性測(cè)試,需要升級(jí)系統(tǒng)在不同的瀏覽器里面是否滿足需求4.C/S架構(gòu)需要進(jìn)行系統(tǒng)的安裝、升級(jí)與卸載測(cè)試,需要考慮不同的支持的平臺(tái)5.C/S 一般建立在專用的網(wǎng)絡(luò)上, 小范圍里的網(wǎng)絡(luò)環(huán)境, 局域網(wǎng)之間再通過(guò)專門服務(wù)器提供連接和數(shù)據(jù)交換服務(wù)。6.B/S 建立在廣域網(wǎng)之上的, 不必是專門的網(wǎng)絡(luò)硬件環(huán)境,比C/S更強(qiáng)的適應(yīng)范圍,需要關(guān)注服務(wù)器的負(fù)載與性能測(cè)試典型的三層架構(gòu)三層架構(gòu)(3-tier architecture)通常意義上的三層架構(gòu)就是將整個(gè)業(yè)務(wù)應(yīng)用劃分為:1>界面層(user interface layer)2>業(yè)務(wù)邏輯層(business logic layer)3>數(shù)據(jù)訪問(wèn)層(data access layer)接口介紹接口一直指的是應(yīng)用程序架構(gòu)中,用老提供標(biāo)準(zhǔn)數(shù)據(jù)輸入和輸出的方法和功能程序.主要包括:webservice,webapi ,普通api,soapapi RESTFul API等URL : Uniform Resoure Loactor,統(tǒng)一資源定位符,指的是網(wǎng)頁(yè)的地址等.URL的格式schema :// host [ : port] path [query # fragment ]| 格式內(nèi)容 | 描述 || -------- | ——————————————————|| schema | 模式,協(xié)議|| host | 主機(jī)名,域名,ip地址|| port |端口,若端口不是默認(rèn)的,則需要顯示寫出來(lái)。http 80/https 443/ftp 21/20 || path | 資源路徑,相對(duì)路徑 || query | 查詢字符串 || fragment | 片段。片段不會(huì)發(fā)送給服務(wù)器 |HTTPhttp協(xié)議(hyperText Transfer Protocol,超文本傳輸協(xié)議)是用于從www服務(wù)器傳輸超文本到本地瀏覽器的傳送協(xié)議.它可以使瀏覽器更加高效,使網(wǎng)絡(luò)傳輸減少.它不僅保證計(jì)算機(jī)正確快速的傳輸超文本文檔,還確定傳出文檔中的那一部分,以及那部分內(nèi)容首先顯示(如<文本優(yōu)先于圖形>)HTTP 是一個(gè)應(yīng)用層的協(xié)議,由請(qǐng)求和響應(yīng)構(gòu)成,是一個(gè)標(biāo)準(zhǔn)的客戶端服務(wù)器模型http協(xié)議本身是一個(gè)無(wú)狀態(tài)的協(xié)議.客戶端只需要簡(jiǎn)單的向服務(wù)器端發(fā)出請(qǐng)求,客戶端和服務(wù)器端都沒(méi)喲必要記錄彼此過(guò)去的行為,每一次請(qǐng)求之間都是獨(dú)立的.會(huì)話機(jī)制? HTTP協(xié)議是基于TCP協(xié)議1.建立tcp連接2.發(fā)送請(qǐng)求3.回送響應(yīng)4.斷開tcp連接eg: 以在IE瀏覽器的地址欄中輸入http://www.baidu.com/然后回車? 1>瀏覽器從url中解析出,若為域名,則需要進(jìn)行DNS解析? ? ? 2>瀏覽器從url中解析出,省略的則為對(duì)應(yīng)協(xié)議的默認(rèn)端口? ? ? ? 3>根據(jù)建立tcp連接? ? ? ? 4>web瀏覽器發(fā)送HTTP請(qǐng)求,在請(qǐng)求中包含5>web服務(wù)器接收并處理請(qǐng)求,將請(qǐng)求的結(jié)構(gòu)返回給web瀏覽器(回送http響應(yīng))
6>斷開tcp連接并解析顯示頁(yè)面
TCP vs UDP
UDP:用戶數(shù)據(jù)報(bào)協(xié)議,User Datagram protocol, 無(wú)連接服務(wù)
1,不需要事先建立連接,直接發(fā)送數(shù)據(jù)
2,每個(gè)報(bào)文都帶有完整的目的地址
3,不保證報(bào)文傳輸?shù)目煽啃?可能丟包
TCP:傳輸控制協(xié)議,transmission control protocol,面向連接的服務(wù)
1,先建立連接在傳輸數(shù)據(jù),之后再斷開連接
2,數(shù)據(jù)傳輸過(guò)程中,數(shù)據(jù)包不需要攜帶目的地址
3,保證數(shù)據(jù)傳輸?shù)目煽啃?/p>
tcp三次握手? ? 開始
tcp四次握手? ? 結(jié)束
相關(guān)技術(shù)
1.web客戶端
瀏覽器功能:發(fā)送HTTP請(qǐng)求,接受web服務(wù)器的響應(yīng)并解析成web頁(yè)面
瀏覽器的組成:
瀏覽器引擎:瀏覽器最重要或者說(shuō)核心的部分是”rendering engine”,可大概譯為”渲染引擎”,不過(guò)我們習(xí)慣稱為”瀏覽器內(nèi)核”.負(fù)責(zé)對(duì)網(wǎng)頁(yè)的標(biāo)記內(nèi)容(例如HTML`XML`JavaScript`圖片等)和格式化信息(例如CSS`XSL等)的語(yǔ)法的解釋并渲染顯示網(wǎng)頁(yè).
通常所謂的瀏覽器內(nèi)核也就是瀏覽器所采用的渲染引擎,渲染引擎決定了瀏覽器如何顯示網(wǎng)頁(yè)的內(nèi)容以及頁(yè)面的格式信息.不同的瀏覽器內(nèi)核對(duì)網(wǎng)頁(yè)編寫語(yǔ)法的解釋也有不同,因此同一網(wǎng)頁(yè)在不同內(nèi)核的瀏覽器的渲染顯示效果也可能不同,這也是網(wǎng)頁(yè)編寫者需要在不同內(nèi)核的瀏覽器中測(cè)試網(wǎng)頁(yè)顯示效果的原因
Trident(IE內(nèi)核):該內(nèi)核程序在1997年的IE4中首次被采用,是微軟在Mosaic代碼的基礎(chǔ)之上修改而來(lái)的,并沿用到IE11,也被普遍稱作”IE內(nèi)核”。Trident實(shí)際上是一款開放的內(nèi)核,其接口內(nèi)核設(shè)計(jì)的相當(dāng)成熟,因此才有許多采用IE內(nèi)核而非IE的瀏覽器涌現(xiàn)。
Gecko(firefox內(nèi)核,開源)
webkit(safari內(nèi)核,chrome內(nèi)核原型,開源):它是蘋果公司自己的內(nèi)核,也是蘋果的safari瀏覽器使用的內(nèi)核.webkit引擎包含WebCore排版引擎和JavaScriptCore解析引擎,
2.web服務(wù)器
Apache:在web服務(wù)器中,apache是純粹的web服務(wù)器,經(jīng)常與tomcat配對(duì)使用.它對(duì)HTML頁(yè)面具有強(qiáng)大的解釋能力,但是不能解釋嵌入頁(yè)面內(nèi)的服務(wù)器腳本代碼(jsp/servlet).
Apache源于NCSAhttpd服務(wù)器,經(jīng)過(guò)多次修改,成為世界上最流行的Web服務(wù)器軟件之一。 Apache是自由軟件,所以不斷有人來(lái)為它開發(fā)新的功能、新的特性、修改原來(lái)的缺陷。Apache的特點(diǎn)是簡(jiǎn)單、速度快、性能穩(wěn)定,并可做代理服務(wù)器來(lái)使用。本來(lái)它只用于小型或試驗(yàn)Internet網(wǎng)絡(luò),后來(lái)逐步擴(kuò)充到各種Unix系統(tǒng)中,尤其對(duì)Linux的支持相當(dāng)完美。
Apache是以進(jìn)程為基礎(chǔ)的結(jié)構(gòu),進(jìn)程要比線程消耗更多的系統(tǒng)開支,不太適合于多處理器環(huán)境,因此, 在一個(gè)Apache Web站點(diǎn)擴(kuò)容時(shí),通常是增加服務(wù)器或擴(kuò)充群集節(jié)點(diǎn)而不是增加處理器。到目前為止Apache仍然是世界上用的最多的Web服務(wù)器,世界上很多著名的網(wǎng)站都是Apache的產(chǎn)物,它的成功之處主要在于它的源代碼開放、有一支開放的開發(fā)隊(duì)伍、支持跨平臺(tái)的應(yīng)用以及它的可移植性等方面。
Tomcat:早期的tomcat是一個(gè)嵌入apache內(nèi)的jsp/servlet解釋引擎
apache+tomcat就相當(dāng)于IIS+ASP. 后來(lái)的tomcat已不再嵌入apache內(nèi),tomcat進(jìn)程獨(dú)立于apache進(jìn)程運(yùn)行.tomcat已經(jīng)是一個(gè)獨(dú)立的servlet和jsp容器,業(yè)務(wù)邏輯層代碼和界面交互層代碼可以分離了.因此,有人把tomcat叫做輕量級(jí)應(yīng)用服務(wù)器.
IIS:microsoft的web服務(wù)器產(chǎn)品為internet information server(iis),IIS是允許在公共intranet或internet上發(fā)布信息的web服務(wù)器,IIS是目前最流行的web服務(wù)器產(chǎn)品之一,很多著名的網(wǎng)站都是建立在IIS的平臺(tái)上.ISS提供了一個(gè)圖形界面的管理工具,稱之為internet的服務(wù)管理器,可用于監(jiān)視配置和控制internet服務(wù).
IIS是一種Web服務(wù)組件,其中包括Web服務(wù)器、FTP服務(wù)器、NNTP服務(wù)器和SMTP服務(wù)器, 分別用于網(wǎng)頁(yè)瀏覽、文件傳輸、新聞服務(wù)和郵件發(fā)送等方面,它使得在網(wǎng)絡(luò)(包括互聯(lián)網(wǎng)和局域網(wǎng))上發(fā)布信息成了一件很容易的事。它提供 ISAPI(Intranet Server API)作為擴(kuò)展Web服務(wù)器功能的編程接口;同時(shí),它還提供一個(gè)Internet數(shù)據(jù)庫(kù)連接器,可以實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)的查詢和更新。
微軟早期的IIS,就是一個(gè)純粹的Web服務(wù)器。后來(lái),它嵌入了ASP引擎,可以解釋VBScript和JScript服務(wù)器端代碼了,這時(shí),它就可以兼作應(yīng)用服務(wù)器。當(dāng)然,它與J2EE應(yīng)用服務(wù)器根本無(wú)法相比,但是,從功能上說(shuō),從原理上說(shuō),它勉強(qiáng)可以稱之為應(yīng)用服務(wù)器。確切地說(shuō),它是兼有一點(diǎn)應(yīng)用服務(wù)器功能的Web服務(wù)器
綜上:apache是純粹的web服務(wù)器,而tomcat和IIS因?yàn)榫哂辛私忉寛?zhí)行服務(wù)器端代碼的能力,可以稱作為輕量級(jí)應(yīng)用服務(wù)器或帶有服務(wù)器功能的web服務(wù)器.
應(yīng)用服務(wù)器
IBM WebSphere
WebSphere Application Server 是一種功能完善、開放的Web應(yīng)用程序服務(wù)器,是IBM電子商務(wù)計(jì)劃的核心部分,它是基于 Java 的應(yīng)用環(huán)境,用于建立、部署和管理Internet 和 Intranet Web應(yīng)用程序。這一整套產(chǎn)品進(jìn)行了擴(kuò)展,以適應(yīng)Web應(yīng)用程序服務(wù)器的需要,范圍從簡(jiǎn)單到高級(jí)直到企業(yè)級(jí)。
WebSphere 針對(duì)以 Web 為中心的開發(fā)人員,他們都是在基本 HTTP服務(wù)器和 CGI 編程技術(shù)上成長(zhǎng)起來(lái)的。IBM 將提供 WebSphere 產(chǎn)品系列,通過(guò)提供綜合資源、可重復(fù)使用的組件、功能強(qiáng)大并易于使用的工具、以及支持 HTTP 和 IIOP 通信的可伸縮運(yùn)行時(shí)環(huán)境,來(lái)幫助這些用戶從簡(jiǎn)單的 Web 應(yīng)用程序轉(zhuǎn)移到電子商務(wù)世界。
Oracle WebLogic
Oracle WebLogic Server 是一種多功能、基于標(biāo)準(zhǔn)的web應(yīng)用服務(wù)器,為企業(yè)構(gòu)建自己的應(yīng)用提供了堅(jiān)實(shí)的基礎(chǔ)。各種應(yīng)用開發(fā)、部署所有關(guān)鍵性的任務(wù),無(wú)論是集成各種系統(tǒng)和數(shù)據(jù)庫(kù), 還是提交服務(wù)、跨 Internet 協(xié)作,起始點(diǎn)都是 Oracle WebLogic Server。由于 它具有全面的功能、對(duì)開放標(biāo)準(zhǔn)的遵從性、多層架構(gòu)、支持基于組件的開發(fā),基于 Internet 的企業(yè)都選擇它來(lái)開發(fā)、部署最佳的應(yīng)用。
Oracle WebLogic Server 在使應(yīng)用服務(wù)器成為企業(yè)應(yīng)用架構(gòu)的基礎(chǔ)方面繼續(xù)處于領(lǐng)先地位。Oracle WebLogic Server 為構(gòu)建集成化的企業(yè)級(jí)應(yīng)用提供了穩(wěn)固的基礎(chǔ),它們以 Internet 的容量和速度,在連網(wǎng)的企業(yè)之間共享信息、提交服務(wù),實(shí)現(xiàn)協(xié)作自動(dòng)化。Oracle WebLogic Server 的遵從 J2EE 、面向服務(wù)的架構(gòu),以及豐富的工具集支持,便于實(shí)現(xiàn)業(yè)務(wù)邏輯、數(shù)據(jù)和表達(dá)的分離,提供開發(fā)和部署各種業(yè)務(wù)驅(qū)動(dòng)應(yīng)用所必需的底層核心功能。
***************************************************************************
理解HTTP協(xié)議
基礎(chǔ)概念:Http協(xié)議是一個(gè)屬于應(yīng)用層的面向?qū)ο蟮膮f(xié)議,由于其簡(jiǎn)捷`快速的方式,適用于分布式超媒體信息系統(tǒng).
HTTP協(xié)議的主要特點(diǎn)可概括如下:
1.支持客戶/服務(wù)器模式
2.簡(jiǎn)單快捷:客戶向服務(wù)器請(qǐng)求服務(wù)時(shí),只需傳送請(qǐng)求方法和路徑.請(qǐng)求方法常用的有GET`POST`HEAD.每種方法規(guī)定了客戶與服務(wù)器聯(lián)系的類型不同.由于HTTP協(xié)議簡(jiǎn)單,使得HTTP服務(wù)器的程序規(guī)模小,因而通信速度很快.
3.靈活:http允許傳輸任何類型的數(shù)據(jù)對(duì)象.正在傳輸?shù)念愋陀蒫ontent-type加以標(biāo)記.
4.無(wú)連接:無(wú)連接的含義是限制每次連接只處理一個(gè)請(qǐng)求.服務(wù)器處理完客戶請(qǐng)求,并受到介乎的應(yīng)答后,即斷開連接.采用這種方式可以節(jié)省傳輸時(shí)間.
5.無(wú)狀態(tài):HTTP協(xié)議是無(wú)狀態(tài)協(xié)議.無(wú)狀態(tài)是指協(xié)議對(duì)事務(wù)處理沒(méi)有記憶能力.缺少狀態(tài)意味著如果后續(xù)處理需要前面的信息,則它必須重傳,這樣可能導(dǎo)致每次連接傳送的數(shù)據(jù)量增大.另一方面,在服務(wù)器不需要先前信息時(shí)它的應(yīng)答就較快.>http事務(wù):一次http請(qǐng)求對(duì)應(yīng)一次http響應(yīng). http事務(wù)是獨(dú)立的,不存在上下文關(guān)系.
每次http請(qǐng)求都是由兩部分組成:
1>發(fā)送請(qǐng)求? ? ? http請(qǐng)求報(bào)文
2>回送響應(yīng)? ? ? http響應(yīng)報(bào)文
HTTP版本:? HTTP/0.9? - - HTTP/1.0 - - HTTP/1.1 - - HTTP/2.0
HTTP/1.0:短連接
HTTP/1.1:持久連接
HTTP報(bào)文