1. 程式人生 > >《web應用程式——CGI到Web三層系統》---讀書筆記

《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:

把知識連線成系統,加入經驗