2009-01-08 122 views
20

框架和SDK有什麼區別?以MS平臺SDK和.NET框架爲例。兩者都有API,都隱藏了它們的內部工作原理,並且都提供了可能不能快速/容易訪問的功能(換句話說,它們服務於真實世界的目的)。框架與軟件開發工具包

那有什麼區別?它主要是一種語義營銷遊戲,還是開發人員與軟件的交互方式存在實際差異(相反,開發人員如何期望軟件的行爲)?預計會比另一個等級更高或更低?

謝謝!

編輯:這個問題一般適用於SDK和框架,而不僅僅是上面提到的兩個。

回答

12

SDK預計會提供工具來針對某個系統資源或功能進行編程。一個框架不一定(儘管.NET提供了一整套工具,如編譯器等 - 但這些工具無論如何都是強制性的)。因此,你可以開發一個僅由庫組成的框架,但是如果你稱之爲SDK,你將被期望提供一些支持開發的東西。

+1

這是很好的解釋。如果我想讓任何人在示例的幫助下理解,請爲觀衆添加一點: .Net Framework =形成CLR的框架類庫(FCL)集合 .Net SDK = .Net Framework + C#&VB編譯器+ MS構建工具,用於打包由開發人員編寫的代碼+ Debugger + IIS express Web服務器在VS +中還有許多其他幫助您編寫針對.Net框架類庫(FCL)的程序以開發.Net應用程序的工具。 – RBT 2015-01-23 08:07:12

+2

另一個例子:Qt框架(庫)和Qt SDK(Qt框架+ Qmake + Qt Creator + Qt Linguist + ...) – rbaleksandar 2016-11-24 09:17:45

1

開發人員可以使用Microsoft SDK來創建他們的程序。最終用戶通常不需要它。

如果你想在一臺機器上運行.NET應用程序,微軟框架是強制性的。

1

這是一個灰色地帶,但框架往往是你編碼的庫,SDK通常有額外的工具來幫助你從框架中獲得更多的功能。作爲單獨安裝的.NET Framework SDK的一個很好的例子,SDK有額外的工具,如ildasm,cordb,它們不是框架的真正組成部分。

5

簡而言之所不同的是:

  • 您調用SDK函數。
  • 框架調用你的函數。

SDK就像一個有許多工具的工具箱,您可以選擇使用哪些工具以及如何工作。 你有控制權,但也有很多決定。這是相當低的水平。

一個框架爲你做出了很多決定,所以你不必重新發明輪子; 這更多的是「填補空白」的方法。 自由度較低,但可以節省大量時間,並可能避免一些錯誤。

在.NET Framework它也指運行使用它的應用程序所需的運行時文件的具體情況,但它不是這個詞在編程環境中使用的方式......

+0

我不確定爲什麼這會得到downvoted ...迄今爲止的答案,這是最接近我對術語含義的理解。 – 2009-01-08 18:59:23

0

我是領導在Zend Framework通過其1.0版本。我們經常得到的評論是,它不是開發人員期望的「框架」 - 他們說它更像是一個類庫。

他們預計一個框架更像是一組類必須一起使用他們的工作。框架還可能包含一組編碼約定,指導您以某種方式組織您的代碼。此外,框架可能會爲您的類和數據庫實體強加命名約定。最後,代碼生成工具。

Zend Framework被設計爲鬆散耦合的,因此如果您願意,您可以使用任何類別的獨立程序。它在你的代碼或數據庫上強加了一些約定。我們打算開發代碼生成器,但尚未實現它們。

但我仍然認爲Zend Framework以一種其他方式被限定爲框架而不是SDK:框架是可擴展。它被設計爲一組面向對象的基類,其用途是開發人員可以使用這些類,或者編寫簡單的插件類來添加功能。

傳統SDK是不可擴展。你只需要在提供的類中調用API方法,他們做他們所做的事情,然後處理結果。任何定製都在您對API的使用以及您如何使用結果。

0

類庫提供的類通常共享相同的粗略應用程序區域(數學,渲染),但打算彼此獨立使用。

一個框架提供了一些類,這些類一起構成了一個只能擴展和充實的應用程序的基礎。

SDK包含使用SDK提供的技術所需的一切。它通常包含dokumentation,樣本和工具以及可能是框架或類庫的實際核心內容,甚至完全不同的東西。

26

我只是維基百科複製:

庫:

庫是用於開發軟件子程序或類的集合。庫包含爲獨立程序提供服務的代碼和數據。這允許代碼和數據以模塊化方式共享和更改。

框架:

軟件框架,在計算機編程,是在其中提供通用功能的通用代碼可以選擇性地覆蓋或由用戶代碼提供特定功能專門的抽象。框架類似於軟件庫,因爲它們是可重複使用的抽象代碼,包含在定義良好的API中。然而,與庫不同,整體程序的控制流程不是由調用者決定的,而是由框架決定的。這種控制反轉是軟件框架的顯着特徵。

SDK:

軟件開發工具包(SDK或「的devkit」)通常是一套開發工具,可以讓軟件工程師創建一個特定的軟件應用,軟件框架,硬件平臺,計算機系統,視頻遊戲控制檯,操作系統或類似平臺。它可以像應用程序編程接口一樣簡單,以一些文件的形式與特定的編程語言接口,或包含複雜的硬件與特定的嵌入式系統進行通信。常用的工具包括調試輔助工具和其他常用於IDE的工具。SDK也經常包含示例代碼和支持技術說明或其他支持文檔,以幫助澄清主要參考資料中的要點。

所以:

  • 庫是代碼,你的應用程序調用。
  • 框架是一個幾乎就緒的應用程序或庫。您只需使用框架調用的自己的代碼填充一些空白區域即可。
  • SDK是一個更大的概念,因爲它可以包括庫,框架,文檔,工具等。
  • .NET更像是一個平臺,而不是軟件框架。
0

在一個比較,你可以說:
圖書館 - >框架 - > SDK
框架由幾個圖書館,加上一些工具(編譯器等),以及不針對特定的平臺。對於一個平臺,可能會有幾個開發的框架各自用於不同的目的。 SDK爲您提供框架以及爲特定平臺開發軟件所需的一切。

相關問題