《web應用程式——CGI到Web三層系統》---讀書筆記
第一章:何謂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:
把知識連線成系統,加入經驗