質問

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

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

ありがとう!

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

役に立ちましたか?

解決

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

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

他のヒント

Wikipediaからコピーします:

ライブラリ:

  

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

フレームワーク:

  

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

SDK:

  

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

だから:

  • ライブラリは、アプリケーションが呼び出すコードです。
  • フレームワークは、ほぼ完成したアプリケーションまたはライブラリです。フレームワークが呼び出す独自のコードでいくつかの空白部分を埋めるだけです。
  • SDKは、ライブラリ、フレームワーク、ドキュメント、ツールなどを含めることができるため、より大きな概念です。
  • .NETは、実際にはソフトウェアフレームワークではなく、プラットフォームに似ています。

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

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

SDKは多くのツールを備えたツールボックスのようなもので、使用するツールとその方法を選択します。 あなたにはコントロールがありますが、多くの決定も必要です。それは非常に低いレベルです。

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

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

1.0リリースを通じて Zend Framework のリーダーを務めました。 「フレームワーク」ではないというコメントがよく寄せられました。開発者が期待した意味で-彼らはそれがクラスライブラリのようなものだと言った。

フレームワークは、動作するために一緒に使用する必要がある クラスのセットに似ていると予想されていました。フレームワークには、特定の方法でコードを整理するための一連のコーディング規則も含まれる場合があります。また、フレームワークは、クラスおよびデータベースエンティティに命名規則を課す場合があります。そして最後に、コード生成ツール。

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

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

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

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

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

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

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

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

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top