JavaRush /Java Blog /Random-TW /第 2 部分:讓我們來談談軟體架構

第 2 部分:讓我們來談談軟體架構

在 Random-TW 群組發布
本資料是「企業發展概論」系列的一部分。關於網路的第一部分在這裡第 2 部分:讓我們來談談軟體架構 - 1軟體架構是創建應用程式以及整個程式的模組和元件互動的基礎的結構。長期以來,程式設計師一直在嘗試創建良好的架構,因此我們現在了解許多架構模式也就不足為奇了。您需要理解它們:當您編寫 Web 應用程式時,架構問題變得很尖銳,因為其中比常規應用程式有更多的元件和模組。 架構模式是解決某些軟體設計問題的一種經過深思熟慮的方法。您可能已經遇到工廠方法、抽象工廠、建構器、原型、單例等設計模式。它們用於簡單地編寫程式碼、創建類別並規劃它們的互動方式。架構模式用於更高的抽象層級 - 當規劃應用程式使用者與伺服器、資料和專案的其他元件的互動時。讓我們快速瀏覽一下一些模板以及如何使用它們。

客戶端-伺服器架構

從名字上就可以看出這個主題的一切都很簡單明了。但讓我們澄清一些要點,以便當您開始研究條件 Spring 時,您可以準確地理解我們在說什麼。假設您編寫了一條聊天記錄,並且您和您的朋友開始使用它。這裡有一個簡單的選擇 - 您使用您知道的 IP 位址直接透過網路向對方發送訊息: 第 2 部分:讓我們來談談軟體架構 - 2起初,似乎一切正常,直到您的另一個朋友出現並提出問題:「為什麼不這樣做?你不把我加入你的聊天室嗎?” 當您決定將共同的朋友添加到聊天中時,您將面臨一個架構問題:每個聊天用戶都需要更新有關用戶數量的信息,並添加新用戶的 IP 位址。並且在發送訊息時,必須將其傳遞給所有參與者。這些是將會出現的最明顯的問題。更多的問題將隱藏在程式碼本身。為了避免它們,您需要使用一個伺服器來儲存有關用戶的所有資訊並知道他們的地址。該訊息只需發送到伺服器即可。反過來,他會將訊息傳送給所有收件人。當您決定在聊天中新增伺服器端時,您將開始建立客戶端-伺服器架構。

客戶端-伺服器架構的元件

讓我們弄清楚她是什麼。 客戶端-伺服器架構是一種設計模式,是創建 Web 應用程式的基礎。該架構由三個組件組成: 第 2 部分:讓我們來談談軟體架構 - 3
  1. 客戶端 - 從名稱中可以清楚地看出這是一個服務(Web 應用程式)的用戶,他聯繫伺服器以獲取某些資訊。

  2. 伺服器是您的 Web 應用程式或其伺服器部分所在的位置。他擁有或可以要求有關用戶的必要資訊。此外,當客戶端聯繫時,伺服器傳回請求的資訊。

  3. 網路很簡單:它保證客戶端和伺服器之間的資訊交換。

伺服器可以處理來自不同用戶的大量請求。也就是說,可以有很多客戶端,如果它們需要相互交換訊息,則必須透過伺服器來完成。這樣,伺服器就多了一項附加功能──流量控制。如果我們談論的是我們創建的多用戶聊天,整個程式碼將由兩個模組組成:
  • 客戶端 - 包含用於授權、發送/接收訊息的圖形介面;

  • 伺服器端 - 託管在伺服器上的 Web 應用程序,接收來自使用者的訊息,對其進行處理,然後將其發送給收件者。

第 2 部分:讓我們來談談軟體架構 - 4當我們想要在網路上查看有用(或不太有用)的資訊時,我們打開瀏覽器,在搜尋欄中輸入查詢,作為回應,我們從搜尋引擎接收資訊。在這個鏈條中,瀏覽器就是我們的客戶端。它會向伺服器發送一個請求,其中包含有關我們正在查找的內容的資訊。伺服器處理請求,找到最相關的結果,將它們打包成瀏覽器(客戶端)可以理解的格式並將其發回。在像搜尋引擎這樣的複雜服務中,可能有很多伺服器。例如,授權伺服器、用於搜尋資訊的伺服器、用於產生回應的伺服器。但客戶端對此一無所知:對他來說,伺服器是統一的東西。客戶端只知道入口點,即它需要向其發送請求的伺服器的位址。讓我們記住我們在上一部分中看到的應用程式- 用於即時監控所有國家的平均氣溫。它的架構看起來像這樣: 第 2 部分:讓我們來談談軟體架構 - 5我們的應用程式位於伺服器上。比方說,它每五秒鐘向當地水文氣像中心的伺服器發送一次請求,從它們接收有關特定國家溫度的信息,並儲存這些資訊。當客戶聯絡我們請求「查看世界當前氣溫」時,我們會傳回最新儲存的資訊(按國家/地區排序)。因此,我們的應用程式既是伺服器(當它處理用戶請求時)又是客戶端(當它從其他伺服器接收資訊時)。
重要提示:伺服器的概念不是關於特定的計算機,而是關於網路訂閱者之間的關係
簡單的客戶端-伺服器架構很少使用,並且僅用於非常簡單的應用程式。對於真正大型且複雜的項目,會使用不同類型的架構,您將來會更加熟悉這些架構。現在,讓我們來看一個與客戶端-伺服器模型非常相似的模型。

三層架構

這種架構模式引入了第三個參與者:資料倉儲。使用此模式時,這三個層級通常稱為層: 第 2 部分:讓我們來談談軟體架構 - 6
  1. 客戶端層是使用者介面。這可以是 HTML 頁面傳送到的 Web 瀏覽器,也可以是使用 JavaFX 編寫的 GUI 應用程式。最主要的是,在它的幫助下,用戶可以向伺服器發送請求並處理其回應。

  2. 邏輯層是處理請求/回應的伺服器。它通常也稱為伺服器層。所有邏輯操作也發生在這裡:數學計算、資料操作、呼叫其他服務或資料儲存。

  3. 資料層是資料庫伺服器:我們的伺服器存取它。此層儲存應用程式在操作期間使用的所有必要資訊。

因此,我們的伺服器承擔存取資料的所有義務,不允許使用者直接存取資料。

三層架構的優點

使用這樣的架構,我們獲得了很多優勢,包括:
  1. 建立針對SQL注入的防護能力是對傳輸SQL程式碼的伺服器進行攻擊,當執行此程式碼時,攻擊者可以影響我們的資料庫。

  2. 我們想要規範使用者存取的資料的界定。

  3. 能夠在將資料傳送給客戶端之前修改資料。

  4. 可擴展性 - 將我們的應用程式擴展到使用相同資料庫的多個伺服器的能力。

  5. 對用戶連線品質的要求較低。當在伺服器上產生回應時,我們經常從資料庫中獲取大量不同的信息,對其進行格式化,只留下使用者需要的資訊。透過這種方式,我們可以減少作為回應發送給客戶端的信息量。

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

如果您熟悉工廠方法設計模式,您可能想知道何時使用它。有時很難決定要做什麼:使用 new 運算子還是使用工廠方法建立物件。但隨著時間的推移,理解就會到來。對於架構模式,情況有些不同。企業框架是為程式設計師使用它們來創建基於某種普遍接受的模式的專案而設計的。因此,在學習Spring框架之前,你肯定需要了解什麼是客戶端-伺服器架構、三層架構和MVC架構。別擔心:我們稍後會討論 MVC 架構。 第 1 部分:學習 Spring 和 JavaEE 之前需要了解的內容 第 3 部分:HTTP/HTTPS 協定 第 4 部分:Maven 基礎知識 第 5 部分:Servlet。寫一個簡單的 Web 應用程式 第 6 部分. Servlet 容器 第 7 部分. 介紹 MVC(模型-視圖-控制器)模式 第 8 部分. 編寫一個小型 spring-boot 應用程序
留言
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION