40

フレームワークと SDK の違いは何ですか? たとえば、MS プラットフォーム SDK と .NET フレームワークを考えてみましょう。どちらにも API があり、どちらも内部の仕組みを隠しており、他の方法ではすばやく簡単にアクセスできない機能を提供します (つまり、現実世界の目的に役立ちます)。

違いは何ですか?それは主にセマンティクスのマーケティング ゲームですか、それとも開発者がソフトウェアと対話する方法 (逆に、開発者がソフトウェアの動作を期待できる方法) に実際の違いはありますか? 一方が他方よりも高いレベルまたは低いレベルであると予想されますか?

ありがとう!

編集: この質問は、上記の 2 つだけでなく、SDK とフレームワーク全般に適用されます。

4

8 に答える 8

50

ウィキペディアからコピーします:

としょうかん:

ライブラリは、ソフトウェアの開発に使用されるサブルーチンまたはクラスのコレクションです。ライブラリには、独立したプログラムにサービスを提供するコードとデータが含まれています。これにより、コードとデータをモジュール形式で共有および変更できます。

フレームワーク:

コンピューター プログラミングにおけるソフトウェア フレームワークは、一般的な機能を提供する共通コードを、特定の機能を提供するユーザー コードによって選択的にオーバーライドまたは特殊化できる抽象化です。フレームワークは、適切に定義された API にラップされたコードの再利用可能な抽象化であるという点で、ソフトウェア ライブラリに似ています。ただし、ライブラリとは異なり、プログラム全体の制御の流れは呼び出し元ではなく、フレームワークによって決定されます。この制御の反転は、ソフトウェア フレームワークの際立った機能です。

SDK:

ソフトウェア開発キット (SDK または「devkit」) は通常、ソフトウェア エンジニアが特定のソフトウェア パッケージ、ソフトウェア フレームワーク、ハードウェア プラットフォーム、コンピューター システム、ビデオ ゲーム コンソール、オペレーティング システムなどのアプリケーションを作成できるようにする一連の開発ツールです。プラットホーム。特定のプログラミング言語に接続するためのいくつかのファイルの形式のアプリケーション プログラミング インターフェイスのような単純なものであったり、特定の組み込みシステムと通信するための洗練されたハードウェアを含んでいたりする場合があります。一般的なツールには、IDE に表示されることが多いデバッグ支援やその他のユーティリティが含まれます。SDK には、多くの場合、主要な参照資料からポイントを明確にするのに役立つサンプル コードとサポート テクニカル ノートまたはその他のサポート ドキュメントも含まれています。

そう:

  • ライブラリは、アプリケーションが呼び出すコードです。
  • フレームワークは、ほぼ既製のアプリケーションまたはライブラリです。フレームワークが呼び出す独自のコードで空白の場所を埋めるだけです。
  • SDK は、ライブラリ、フレームワーク、ドキュメント、ツールなどを含めることができるため、より大きな概念です。
  • .NET は、ソフトウェア フレームワークではなく、むしろプラットフォームに似ています。
于 2009-01-08T19:13:32.670 に答える
19

SDK は、特定のシステム リソースまたは機能に対してプログラミングするためのツールを提供することが期待されています。フレームワークは必ずしも必要ではありません (ただし、.NET はコンパイラなどのツール セット全体を提供しますが、いずれにせよ動作するためにはこれらが必須です)。

したがって、ライブラリだけで構成されるフレームワークを開発することもできますが、それを SDK と呼ぶと、開発をサポートする何かを提供することが期待されます。

于 2009-01-08T16:15:07.723 に答える
11

一言で言えば、違いは次のとおりです。

  • SDK 関数を呼び出します。
  • フレームワークが関数を呼び出します。

SDK は、多くのツールを備えたツールボックスのようなもので、どのツールをどのように使用するかを選択します。あなたはコントロールできますが、多くの決定を下す必要もあります。かなりの低レベルです。

フレームワークが多くの決定を下すため、一からやり直す必要はありません。それは「空白を埋める」アプローチです。自由度は低くなりますが、多くの時間を節約でき、間違いを避けることができます。

.NETフレームワークの特定のケースでは、それを使用してアプリケーションを実行するために必要なランタイムファイルも指しますが、プログラミングコンテキストで単語が使用される方法ではありません...

于 2009-01-08T16:20:08.603 に答える
2

Microsoft SDK は、開発者がプロ​​グラムを作成するために使用できます。通常、最終ユーザーには必要ありません。

マシン上で .NET アプリケーションを実行する場合は、代わりに Microsoft Framework が必須です。

于 2009-01-08T16:15:42.293 に答える
1

あいまいな領域ですが、フレームワークはコーディング対象のライブラリである傾向があり、SDK には多くの場合、フレームワークをさらに活用するのに役立つ追加のツールがあります。個別にインストールする .NET Framework SDK が良い例です。SDK には、実際にはフレームワークの一部ではない ildasm や cordb などの追加ツールがあります。

于 2009-01-08T16:17:13.897 に答える
1

私はZend Frameworkの 1.0 リリースまでリードしていました。開発者が期待する意味での「フレームワーク」ではなく、クラス ライブラリに近いというコメントをよく受け取りました。

彼らは、フレームワークは、機能するために一緒に使用する必要がある一連のクラスに似ていると考えていました。フレームワークには、特定の方法でコードを整理するための一連のコーディング規約が含まれている場合もあります。また、フレームワークによって、クラスとデータベース エンティティに命名規則が課される場合があります。最後に、コード生成ツールです。

Zend Framework は疎結合になるように設計されているため、必要に応じて任意のクラスをスタンドアロンで使用できます。コードやデータベースにいくつかの規則を課しました。また、コード ジェネレーターを開発するつもりでしたが、まだ実装していませんでした。

しかし、Zend Framework は、SDK ではなく、別の方法でフレームワークとして認定されていると感じました。つまり、フレームワークは拡張可能です。オブジェクト指向の基本クラスのセットとして設計されており、開発者がextendこれらのクラスを作成するか、単純なプラグイン クラスを作成して機能を追加することを目的としています。

従来の SDK は拡張できません。提供されたクラスで API メソッドを呼び出すだけで、そのメソッドが行うことを実行し、結果を処理できます。カスタマイズは、API の使用方法と結果の利用方法にあります。

于 2009-01-08T18:28:29.937 に答える
0

ある比較では、次のように言うことができます。
ライブラリ->フレームワーク-> SDK
フレームワークは、いくつかのライブラリといくつかのツール(コンパイラなど)で構成されており、特定のプラットフォームを対象としていません。プラットフォームの場合、それぞれが異なる目的を果たすために開発されたいくつかのフレームワークが存在する可能性があります。SDKは、特定のプラットフォーム用のソフトウェアを開発するために必要なフレームワークやその他すべてを提供します。

于 2012-10-29T07:53:02.363 に答える
0

クラス ライブラリは、通常同じ大まかなアプリケーション領域 (数学、レンダリング) を共有するクラスを提供しますが、互いにほとんど独立して使用することを目的としています。

フレームワークは、拡張して具体化するだけのアプリケーションの基礎を一緒に形成するクラスを提供します。

SDK には、SDK が提供されているテクノロジを使用するために必要なすべてが含まれています。多くの場合、ドキュメント、サンプル、およびツールが、フレームワークやクラス ライブラリ、さらにはまったく異なるものである実際のコア コンテンツと共に含まれています。

于 2009-01-08T18:58:25.883 に答える