在本課中,我們將了解客戶端和伺服器之間的關係。客戶端/伺服器架構提供了無限數量的通訊可能性,正是它使互聯網成為可能。我們將介紹對客戶端/伺服器模型的基本了解,稍後將使用該模型來呼叫 API。涵蓋客戶端/伺服器架構的詳盡資源超出了本課程的範圍,相反,我們將重點放在客戶端/伺服器通訊的主要原則。
您將能夠:
通訊技術的客戶端伺服器模型是一組分散式應用程式架構和網路操作,用於管理服務提供者(稱為伺服器)和服務請求者(稱為客戶端)之間的工作負載。
儘管客戶端伺服器模型可以由單一電腦內的程式使用,但我們將重點放在處理網路環境的方面。在這種情況下,用戶端透過區域網路(LAN)、廣域網路(WAN)(例如網際網路)建立與伺服器的連線。您有玩過 Xbox Live 或使用過 PlayStation Network 嗎?您的 Xbox One 是用戶端,當它登入網路時,它會聯繫 Xbox Live 伺服器以檢索更新、視訊和遊戲演示等遊戲資源。
我們大多數人在日常生活中使用的典型的多層客戶端伺服器架構如下所示。
客戶端是請求伺服器提供的服務的電腦硬體設備或軟體。伺服器通常(但並非總是)位於單獨的實體電腦上。
伺服器是專門運行服務以滿足客戶端需求的實體電腦。根據正在運行的服務,它可以是檔案伺服器、資料庫伺服器、家庭媒體伺服器、列印伺服器、電子郵件伺服器或Web 伺服器。
客戶端和伺服器透過網路進行通訊的概念使得查看網站和與 Web 應用程式(如 Gmail、Facebook、LinkedIn)互動成為可能。該模型是一種描述 Web 應用程式中用戶端和伺服器之間的給予和接受關係的方法,並控制資訊如何在電腦之間傳遞。
讓我們看看一個基本的 Web 應用程式是什麼樣子的,它接收來自 Web 用戶端的請求並提供相應的服務。
Web應用程式(網頁應用程式)是儲存在遠端伺服器上並透過瀏覽器介面透過網路交付的應用程式。根據定義,Web 服務是 Web 應用程序,許多(儘管不是全部)網站都包含 Web 應用程式。任何為使用者執行某些功能的網站元件都可以稱為 Web 應用程式。谷歌的搜尋引擎是一個網路應用程序,但其根本概念與允許您搜尋姓名或號碼的電話簿幾乎沒有什麼不同。
大多數網頁應用程式實際上使用瀏覽器介面進行交互,即最終用戶透過現代網路瀏覽器介面請求存取並從這些應用程式請求資訊/服務。建置和設定 Web 應用程式的方法有數百種,但大多數都遵循相同的基本結構:Web 用戶端、Web 伺服器和資料庫。
客戶端是最終使用者與之互動的物件。 「客戶端」程式碼實際上負責用戶實際看到的大部分內容。對於以網頁形式請求某些訊息,客戶端可能負責: 包括:
這些任務大多由類似 HTML/CSS/JavaScript 的技術來管理,以建立資訊、頁面樣式並提供用於導航和焦點的互動式物件。
Web 應用程式中的 Web 伺服器負責偵聽來自用戶端的請求。當您設定 HTTP(超文本傳輸協定 - 網際網路語言)伺服器時,我們將其設定為偵聽連接埠號碼。連接埠號碼始終與電腦的 IP 位址相關聯。您可以將連接埠視為電腦上的單獨通道,我們可以使用它們來執行不同的任務:一個連接埠可以瀏覽 www.facebook.com,而另一個連接埠可以取得您的電子郵件。這是可能的,因為每個應用程式(Web 瀏覽器和電子郵件用戶端)使用不同的連接埠號碼。
一旦您設定了 HTTP 伺服器來偵聽特定端口,該伺服器就會等待到達該特定端口的客戶端請求。對客戶端進行身份驗證後,伺服器將執行請求指定的任何操作,並透過 HTTP 回應發送任何請求的資料。
資料庫是 Web 體系結構的基礎。 SQL/NoSQL 或類似類型的資料庫是儲存資訊的地方,以便可以輕鬆存取、管理和更新資訊。例如,如果您正在建立社群媒體網站,您可能會使用資料庫來儲存有關使用者、貼文、評論等的資訊。等網站或Gmail 等應用程式進行即時互動。
在上面的範例圖中,我們可以看到上述設定的實際效果。瀏覽器透過呼叫其網域(即 www.google.com)向網頁伺服器發送請求。根據請求者是誰,伺服器收集 SQL 資料庫的必要資訊。該資訊被包裝為 HTML 程式碼並發送回客戶端。 Web 瀏覽器讀取嵌入 HTML 中的結構和樣式信息,並相應地向使用者顯示頁面。
有很多關於客戶端/伺服器體系結構以及它們如何在 Internet 上表現的詳細資訊。我們將透過設定客戶端並在 Python 中發出請求來更專注於本節中強調的想法。這些技能將幫助我們從伺服器請求資料以進行分析實驗。如果您想深入了解客戶端伺服器模型以及如何為許多不同的體系結構設定它,這裡有一些額外的資源可供您使用。
在本課程中,我們了解了客戶端伺服器模型的基礎知識,並重點介紹如何為基於 Web 的應用程式實作該模型。我們研究了 Web 用戶端、Web 伺服器和承載客戶端資訊的資料庫的作用。在接下來的課程中,我們將了解如何使用 Python 實現這些想法!