《軟體架構》總覽
注意:本教程仍在更新,它將被一點點完善,但是現在你仍可以從中學到一些東西。
軟體架構和軟體設計是一個話題的兩個不同方面,它們都是關於如何構造軟體來完成任務的,通常軟體架構是指軟體系統中較大的結構,而軟體設計指較小的結構。
因為系統架構影響著軟體設計,所以很難準確定義軟體架構和軟體設計的邊界。較大結構的設計影響著較小結構的設計。為了使本教程更有意義(即包含哪些內容),我通過程序來做區分,軟體設計考慮單個軟體程序的內部設計,而軟體架構考慮如何設計多個軟體程序合作完成它們的任務。

我對軟體架構的定義是如何適用於分散式系統,依我來看,軟體架構提供了可以執行各種分散式演算法的基本結構。雖然軟體架構和分散式系統之間存在一定的重疊,但是各種不同的分散式演算法都可以在相同的基礎架構之上執行。
整個系統(軟體+硬體)的硬體架構也影響著軟體架構。你可能需要根據不同的硬體設計不同的軟體架構。或者根據不同的軟體架構選擇不同的硬體。
常用軟體架構
軟體架構有很多種,有些比較常用,下面列舉一些常用的軟體架構模型:
- 單程序
- 客戶端/伺服器(2個程序互動)
- 3層系統(3個程序序列互動)
- N層系統(N個程序序列互動)
- 面向服務的系統(大量程序互動)
- 混合架構(上面這些架構的組合)
- 對等架構(有中央伺服器的情況下,大量程序互動)
下面是這些架構的簡單說明。

程序通訊渠道
程序通常有三種通訊媒體。他們是:
- 網路
- 磁碟
- 管道
程序間可以通過電腦網路進行通訊。通過網路,只要執行著程序的兩臺電腦通過網路連線,那麼一個程序可以和執行在同一臺電腦上的程序通訊,也可以和執行在不同電腦上的程序通訊。
執行在同一臺電腦上的程序也可以通過電腦硬碟進行通訊(或其他磁碟,例如USB磁碟等。)程序A可以將由程序B處理的檔案寫入磁碟。程序B也可以傳送一個磁碟中的檔案作為回覆,之後執行緒A讀取該答覆。
程序也可以通過網路儲存進行通訊,網路儲存本質上是連線到計算機網路的硬碟。這樣,程序也可以通過網路和磁碟通訊的組合與執行在不同計算機上的程序進行通訊。
依靠執行著程序的作業系統,執行在相同機器上的程序可以通過管道通訊。管道是作業系統為程序提供的通訊渠道。通過管道的通訊就像網路通訊一樣,但是交換的訊息保留在計算機內部的RAM中。管道比網路通訊更快,因為當通訊程序在同一臺計算機上執行時,可以避免許多網路協議開銷。
程序也可以通過RAM磁碟進行通訊,RAM磁碟是分配在計算機RAM中的虛擬硬碟。對於程序來說,RAM磁碟就像磁碟一樣,但它比磁碟快得多,因為資料僅儲存在RAM中。
程序通訊模式
程序通訊有兩種模式:
- 同步模式
- 非同步模式
當程序A與程序B同步通訊時,表示程序A向程序B傳送訊息並等待B答覆。程序A在收到程序B的答覆之前不會做任何事情。
當兩個程序非同步通訊時,這兩個程序相互發送訊息,而無需等待答覆。程序A可以給程序B傳送一條訊息後繼續去做其他工作。在某個時候,程序B回覆程序A一條訊息,當程序A有時間時,再來處理這條訊息。
同步和非同步通訊各有優點和用處。你可以使用非同步通訊來實現同步通訊,也可以使用同步通訊來實現非同步通訊。
同步和非同步通訊模式如下圖所示:

原創文章,轉載請註明: 轉載自併發程式設計網 – ifeve.com本文連結地址: 《軟體架構》總覽


- 用Python講述:地理“經緯度”資料的4種轉換方法!
- 17 張程式設計師桌布(使用頻率很高)
- [總結]高效能人士的七個習慣
- 為什麼你的程式總是出現 bug?
- GB28181協議錯誤碼返回碼整理
- 還在用 Windows 自帶的搜尋工具嗎?你 out 啦!
- 動畫: 一個瀏覽器是如何工作的?
- 8小時刪除,這波資源碉堡了 ! @所有人
- 新手上路第一篇C語言部落格
- ESP8266_NONOS_SDK--UART實驗
- 2021-01-05
- 《軟體架構》總覽
- 修改Exchange資訊儲存佔用記憶體大小
- uart232串列埠之二——fpg內部迴環模擬
- 3.18PMP試題每日一題
- 2020-12-28
- 一文詳細講解SQL語句中可以提高執行效率的方法
- 小程式開發遇到的坑,知道下總是好的!
- 如何通過 Spring 框架進行JDBC操作?
- GSYVideoPlayer播放器框架使用、播放元件原始碼探究(一)