web-dev-qa-db-ja.com

API、フレームワーク、ミドルウェアの違いは何ですか?

ちょうどこの質問がランダムに頭に浮かんだ! API、フレームワーク、ミドルウェアの違いは何ですか?基本的にそれらすべてがアプリに抽象的な低レベルのサービスを提供します。その場合、なぜドットネットはフレームワークと呼ばれ、Windows APIはよく呼ばれます。API?

23
Laz

APIはアプリケーションプログラマインターフェイスです。プログラマーがソフトウェアとのインターフェースに使用する方法を指すその単なる用語。たとえば、DAOにはsave()メソッドがある場合があります。保存はDAO APIの一部です。高レベルでは、システムにユーザーを追加する機能がある場合があります。それはシステムAPIの一部です。

フレームワークは、ツールまたはツールのセットです。たとえば、Springは、制御の反転、依存関係の注入を管理するフレームワークであり、気の利いたテンプレートを提供して、あなたの生活をより簡単にします。 APIを介してSpringを使用します。

ミドルウェアは、分離された一連のシステムや機能を相互作用させるソフトウェアです。したがって、ウェブサイトと支払いシステムがある場合、ミドルウェアを使用して接続します。

40
hvgotcodes

[〜#〜] api [〜#〜]はプログラミングライブラリへのインターフェースです(またはライブラリ)。それはあなたに何かをする方法を課しません。例えば。 OpenGLは、それで何ができるかを制限しません。

frameworkは、問題のpart completed solutionを提供します。あなたはあなたが望むものを作るために空白を埋めます。これはあなたがしていることを加速するかもしれませんが、フレームワークの制限、例えばデザイン、パフォーマンス、機能性。 -例MFCは、UIを作成する方法を提供しました。ダイアログはうまくサポートしましたが、フォームはサポートしていませんでした。ドッキングなどは制限されており、バグが含まれていました。 Windowsフォームは(ボーランドデルファイのアーキテクトによる)より優れたフレームワークであり、デザイン、柔軟性、ツールなど、あらゆる面で優れています。それらを回避しようとして得たほとんどの時間を失うかもしれません。

ミドルウェア垂直スライスです。ソフトウェアを階層化(OS、ハードウェアアブストラクション、ユーティリティライブラリなど)と見なす場合、ミドルウェアはこれらのレイヤーの多くを垂直に組み込みます。これは、アプリケーション内の領域に対する完全または部分的なソリューションを提供します。例えば。仲介メッセージングシステム、またはレンダリングライブラリ/エンジン。ミドルウェアは、基本的なライブラリだけでなく、ロギング、デバッグ、パフォーマンス測定などの関連ツールも提供します。ミドルウェアを使用するときに注意しなければならないことの1つは、 [〜#〜] dry [〜#〜] の原則です。ミドルウェアはverticalシステムであるため、アプリケーションの他の部分と競合または重複する可能性があります。

17
Nick

フレームワークはAPIを実装します。 APIは、基盤となるフレームワークの実装の詳細からフレームワーククライアントを分離します。したがって、(概して)Monoまたは.Net Frameworkを使用して、共通のソースコードに基づいてプログラムを実行できます。どちらのフレームワークへのAPIも同じであるためです。

ミドルウェアは通常、プロセス間通信に特化したフレームワークです。

6
Steve Townsend

APIは、システムへのプログラムによるインターフェースです。これを使用してシステムと対話しますが、プログラムの構造を強制することはありません(理想的には)。

フレームワークは、必要なボイラープレートの量を減らすために、特定のタイプのアプリケーションを作成する方法を指示します。それはそのタイプのアプリケーションのいくつかの一般的な問題を解決します。

ミドルウェアは主にマーケティングの話です。多くの定義がありますが、通常は、いくつかのツールが組み込まれた大きなフレームワークを伴います。一部の商用ゲームエンジンはミドルウェアと考えることができます。SOAプラットフォームはミドルウェアなどとも呼ばれます。

3
juancn

主な違いは、機能の目的です。

APIは、特定のドメインの特定の問題を解決するように設計されています。必要なデータ構造、クラス、メソッド、インターフェースなどが含まれています。ADO.netAPIなどは、Microsoft SQL Serverに接続する機能を提供します。

開発者が再利用可能でスケーラブルなソフトウェアアプリケーションに役立つように設計されたフレームワーク。フレームワークには、APIのような特定の機能はありませんが、APIによって公開されるさまざまな機能があります。など、ADO.netはデータサービスにアクセスするための.netフレームワークのAPIです。フレームワークには、コンパイラ、プログラム、クラスライブラリ、run-time.itがあり、プラグインを追加できます。

0
Mamunar Rashid