本資料是“企業發展概論”系列的一部分。第一部分,關於網絡,在這裡。 軟件架構是指在應用程序中創建的結構,即整個程序的模塊和組件以及它們如何交互。程序員長期以來一直致力於構建良好的架構,因此我們聽說過很多架構模式也就不足為奇了。您需要了解它們:在編寫 Web 應用程序時,提出一個好的架構至關重要,因為 Web 應用程序比常規應用程序具有更多的組件和模塊。一種架構模式是解決一些軟件設計問題的聰明方法。您可能遇到過設計模式,例如工廠方法、抽象工廠、構建器、原型、單例,可能還有其他模式。我們在編寫代碼、創建類和規劃類如何交互時使用它們。在規劃用戶與服務器、數據和其他組件的交互時,架構模式用於更高的抽象級別。讓我們快速瀏覽一些模式以及如何使用它們。
簡單的客戶端-服務器架構很少使用,而且只用於非常簡單的應用程序。對於真正大型和復雜的項目,我們使用不同的架構,您將來會遇到這些架構。現在讓我們來看一個與客戶端-服務器架構非常相似的模型。
客戶端-服務器架構
這個名字給人的印像是這個模式的一切都簡單明了。但是讓我們澄清一些要點,這樣當你開始學習 Spring 時你就會明白我們在說什麼。假設您編寫了一個聊天應用程序,並且您和一個朋友開始使用它。您可以採用一種非常簡單的方法,使用已知 IP 地址通過 Internet 直接相互發送消息: 起初,一切似乎都很好,直到您的另一個朋友要求加入聊天。因此,當您決定將您共同的朋友添加到聊天中時,您將面臨一個架構問題:對於每個聊天參與者,您需要提供有關用戶數量和新用戶 IP 地址的當前信息。發送消息時,需要將其傳遞給所有參與者。這些是將出現的最明顯的問題。另一堆問題將隱藏在代碼本身中。為了避免它們,您需要使用服務器,它將存儲有關用戶的所有信息,包括他們的地址。消息只需要發送到服務器。反過來,它向每個收件人發送消息。當您決定將服務器部分添加到您的聊天應用程序時,您就開始構建客戶端-服務器架構。客戶端-服務器架構的組件
讓我們看看這是怎麼回事。客戶端-服務器架構是一種用於創建 Web 應用程序的設計模式。該架構由三個組件組成:-
客戶端——從它的名字,我們可以看出這個組件使用一些服務(網絡應用程序),聯繫服務器請求一些信息。
-
服務器 — 這是您的 Web 應用程序或其服務器部分所在的位置。它存儲必要的用戶信息或可以請求它。此外,當客戶端發送請求時,返回請求信息的是服務器。
-
網絡——這部分很簡單。它促進了客戶端和服務器之間的信息交換。
-
客戶端模塊——包含用於登錄和發送/接收消息的圖形界面
-
服務器模塊——託管在服務器上的 Web 應用程序,它接收來自用戶的消息,處理它們,然後將它們發送給收件人
這裡有一個很重要的點:服務器的概念不是關於特定的計算機,而是關於網絡實體之間的關係。 |
三層架構
這是一種架構模式,引入了第三個模塊——數據存儲。在此模式中,三個級別通常稱為層或層:-
客戶端層是用戶界面,也稱為表示層。它可以是接收 HTML 頁面的 Web 瀏覽器,也可以是使用 JavaFX 編寫的圖形用戶界面。最主要的是這一層允許用戶向服務器發送請求並處理其響應。
-
邏輯層是處理請求/響應的服務器。通常它也被稱為服務器層。這也是所有邏輯操作發生的地方:數學計算、數據操作、調用其他服務或數據存儲等。
-
數據層是數據庫服務器:我們的服務器與之交互。該層存儲應用程序運行所需的所有信息。
三層架構的優點
像這樣的架構為我們提供了許多優勢,包括:-
防止 SQL 注入的能力(這是對服務器的攻擊;它涉及發送 SQL 代碼,執行時允許攻擊者影響我們的數據庫)。
-
分離我們要控制用戶訪問的數據。
-
在將數據發送給客戶端之前修改數據的能力。
-
可擴展性(將我們的應用程序擴展到將使用相同數據庫的多個服務器的能力。
-
對用戶連接質量的要求不那麼嚴格。在服務器上生成響應時,我們經常從數據庫中獲取大量不同的信息並對其進行格式化,只留下用戶需要的信息。這樣做可以減少我們在回复客戶時發送的信息量。