CodeGym/Java Blog/Toto sisi/第 2 部分。讓我們談談軟件架構
John Squirrels
等級 41
San Francisco

第 2 部分。讓我們談談軟件架構

在 Toto sisi 群組發布
個成員
本資料是“企業發展概論”系列的一部分。第一部分,關於網絡,在這裡第 2 部分。讓我們談談軟件架構 - 1軟件架構是指在應用程序中創建的結構,即整個程序的模塊和組件以及它們如何交互。程序員長期以來一直致力於構建良好的架構,因此我們聽說過很多架構模式也就不足為奇了。您需要了解它們:在編寫 Web 應用程序時,提出一個好的架構至關重要,因為 Web 應用程序比常規應用程序具有更多的組件和模塊。一種架構模式是解決一些軟件設計問題的聰明方法。您可能遇到過設計模式,例如工廠方法、抽象工廠、構建器、原型、單例,可能還有其他模式。我們在編寫代碼、創建類和規劃類如何交互時使用它們。在規劃用戶與服務器、數據和其他組件的交互時,架構模式用於更高的抽象級別。讓我們快速瀏覽一些模式以及如何使用它們。

客戶端-服務器架構

這個名字給人的印像是這個模式的一切都簡單明了。但是讓我們澄清一些要點,這樣當你開始學習 Spring 時你就會明白我們在說什麼。假設您編寫了一個聊天應用程序,並且您和一個朋友開始使用它。您可以採用一種非常簡單的方法,使用已知 IP 地址通過 Internet 直接相互發送消息: 第 2 部分。讓我們談談軟件架構 - 2起初,一切似乎都很好,直到您的另一個朋友要求加入聊天。因此,當您決定將您共同的朋友添加到聊天中時,您將面臨一個架構問題:對於每個聊天參與者,您需要提供有關用戶數量和新用戶 IP 地址的當前信息。發送消息時,需要將其傳遞給所有參與者。這些是將出現的最明顯的問題。另一堆問題將隱藏在代碼本身中。為了避免它們,您需要使用服務器,它將存儲有關用戶的所有信息,包括他們的地址。消息只需要發送到服務器。反過來,它向每個收件人發送消息。當您決定將服務器部分添加到您的聊天應用程序時,您就開始構建客戶端-服務器架構。

客戶端-服務器架構的組件

讓我們看看這是怎麼回事。客戶端-服務器架構是一種用於創建 Web 應用程序的設計模式。該架構由三個組件組成: 第 2 部分。讓我們談談軟件架構 - 3
  1. 客戶端——從它的名字,我們可以看出這個組件使用一些服務(網絡應用程序),聯繫服務器請求一些信息。

  2. 服務器 — 這是您的 Web 應用程序或其服務器部分所在的位置。它存儲必要的用戶信息或可以請求它。此外,當客戶端發送請求時,返回請求信息的是服務器。

  3. 網絡——這部分很簡單。它促進了客戶端和服務器之間的信息交換。

服務器可以處理來自不同用戶的大量請求。這意味著可以有很多客戶。如果他們之間需要交換信息,則必須通過服務器進行。於是,服務器又多了一個功能:流量控制。關於我們的多用戶聊天程序,整個應用程序將由兩個模塊組成:
  • 客戶端模塊——包含用於登錄和發送/接收消息的圖形界面

  • 服務器模塊——託管在服務器上的 Web 應用程序,它接收來自用戶的消息,處理它們,然後將它們發送給收件人

第 2 部分。讓我們談談軟件架構 - 4當我們想在 Internet 上查看有用(或不太有用)的信息時,我們會打開瀏覽器,在搜索欄中輸入查詢,然後從搜索引擎中獲取信息作為響應。在這條鏈中,瀏覽器就是客戶端。它向服務器發送一個請求,其中包含有關我們要查找的內容的信息。服務器處理請求,找到最相關的結果,將它們以瀏覽器(客戶端)可以理解的格式打包並發回。像搜索引擎這樣的複雜服務可能有很多服務器。例如授權服務器、查找信息的服務器、生成響應的服務器等。但是客戶端對這一切都一無所知,也不關心:對於客戶端來說,服務器是一個統一的實體。客戶端只知道入口點,即 應向其發送請求的服務器地址。回想一下我們在本系列的前一部分。這是為了實時監測所有國家的平均氣溫。它的架構看起來像這樣: 第 2 部分。讓我們談談軟件架構 - 5我們的應用程序位於服務器上。假設它每五秒鐘向當地氣象站運行的服務器發送請求,從服務器接收特定國家/地區的溫度信息,並存儲此信息。當客戶要求我們“查看世界當前氣溫”時,我們返回最近存儲的信息,按國家排序。因此,我們的應用程序既充當服務器(當它處理用戶請求時)又充當客戶端(當它從其他服務器接收信息時)。
這裡有一個很重要的點:服務器的概念不是關於特定的計算機,而是關於網絡實體之間的關係
簡單的客戶端-服務器架構很少使用,而且只用於非常簡單的應用程序。對於真正大型和復雜的項目,我們使用不同的架構,您將來會遇到這些架構。現在讓我們來看一個與客戶端-服務器架構非常相似的模型。

三層架構

這是一種架構模式,引入了第三個模塊——數據存儲。在此模式中,三個級別通常稱為層或層: 第 2 部分。讓我們談談軟件架構 - 6
  1. 客戶端層是用戶界面,也稱為表示層。它可以是接收 HTML 頁面的 Web 瀏覽器,也可以是使用 JavaFX 編寫的圖形用戶界面。最主要的是這一層允許用戶向服務器發送請求並處理其響應。

  2. 邏輯層是處理請求/響應的服務器。通常它也被稱為服務器層。這也是所有邏輯操作發生的地方:數學計算、數據操作、調用其他服務或數據存儲等。

  3. 數據層是數據庫服務器:我們的服務器與之交互。該層存儲應用程序運行所需的所有信息。

因此,我們的服務器承擔訪問數據的所有責任,不允許用戶直接訪問它。

三層架構的優點

像這樣的架構為我們提供了許多優勢,包括:
  1. 防止 SQL 注入的能力(這是對服務器的攻擊;它涉及發送 SQL 代碼,執行時允許攻擊者影響我們的數據庫)。

  2. 分離我們要控制用戶訪問的數據。

  3. 在將數據發送給客戶端之前修改數據的能力。

  4. 可擴展性(將我們的應用程序擴展到將使用相同數據庫的多個服務器的能力。

  5. 對用戶連接質量的要求不那麼嚴格。在服務器上生成響應時,我們經常從數據庫中獲取大量不同的信息並對其進行格式化,只留下用戶需要的信息。這樣做可以減少我們在回复客戶時發送的信息量。

應該多久使用一次架構模式?

如果您熟悉工廠方法設計模式,您可能想知道何時使用它。有時很難決定要做什麼:使用 new 運算符或使用工廠方法創建對象。但隨著時間的推移,理解來了。當談到架構模式時,情況略有不同。企業框架旨在允許程序員根據一些普遍接受的模式創建項目。因此,在學習Spring Framework之前,一定要了解客戶端-服務器架構、三層架構和MVC架構。別擔心:我們還會討論 MVC 架構。 第 3 部分 HTTP/HTTPS 第 4 部分 Maven 的基礎知識 第 5 部分。Servlet 和 Java Servlet API。編寫一個簡單的 Web 應用程序 第 6 部分。Servlet 容器 第 7 部分。介紹 MVC(模型-視圖-控制器)模式
留言
  • 受歡迎
你必須登入才能留言
此頁面尚無留言