軟件框架和類庫的區別


本文源自《.NET通信框架的設計、實現與應用》書稿第一章內容

類庫是一些類的集合,只要我們將一些可以復用的類集中放到一個Library中,我們就可以稱其為一個類庫。

類庫中的許多元素(如類、結構、接口、枚舉、委托等)之間可能有一些關聯,但這些關聯通常用於支持一個類概念或接口概念的完整表達。

如果我們從一個更高的視角來審視類庫,可以發現類庫中的一個個“完整的概念”之間是無關的或是關系松散的。

 

再來說框架,框架的第一含義是一個骨架,它封裝了某領域內處理流程的控制邏輯,所以我們經常說框架是一個半成品的應用。

由於領域的種類是如此眾多,所以框架必須具有針對性,比如,專門用於解決底層通信的框架,或專門用於醫療領域的框架。

框架中也包含了很多元素,但是這些元素之間關系的緊密程度要遠遠大於類庫中元素之間的關系。框架中的所有元素都為了實現一個共同的目標而相互協作。

 

框架與類庫的區別主要表現在以下幾個方面:
(1)從結構上說,框架內部是高內聚的,而類庫內部則是相對松散的。


(2)框架封裝了處理流程的控制邏輯,而類庫幾乎不涉及任何處理流程和控制邏輯。

框架中的處理流程和控制邏輯需要經過精心的設計,因為所有使用了該框架的應用程序都會復用該設計。


(3)框架具有IOC(控制反轉)能力,而類庫沒有。IOC,即俗稱的好萊塢模式(Don’t call us, we will call you)。

對於類庫中的元素來說,通常都是由我們的應用來調用它;

而框架具有這種能力――在適當的時候調用我們應用中的邏輯。這種能力是通過框架擴展點(或稱為“插槽”)來做到的――具體的應用通過擴展點注入自己的邏輯,而在適當的時候,框架會調用這個擴展點中已注冊的邏輯。

 

(4)框架專注於特定領域,而類庫卻是更通用的。

框架着力於一個特定領域的解決方案的完整表達,而類庫幾乎不針對任何特定領域。比如,本書中提到的通信框架只適用於需要在TCP/UDP基礎上直接構建通信的應用程序,而像正則表達式這樣的類庫卻可以使用在各種不同的應用中。

 

(5)框架通常建立在眾多類庫的基礎之上,而類庫一般不會依賴於某框架。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM