web-dev-qa-db-ja.com

APIとフレームワークの違い

これらの2つの用語の違いは何ですか。事前に良い簡略化と良い例をありがとうございます。

28
rookie

フレームワークは、クラス、インターフェイス、およびその他のプリコンパイル済みコードのグループであり、その上に、またはアプリケーションを使用してビルドできます。

APIはフレームワークの公開面です。適切に設計されたフレームワークは、フレームワークを使用するために必要なクラス、インターフェースなどのみを公開します。フレームワークの操作をサポートするが、フレームワークのユーザーには不要なコードは、フレームワークのアセンブリ/ dllの内部に保持されます。これにより、フレームワークの公の面が小さく保たれ、「成功の秘訣」、つまり正しいことを簡単に実行できるフレームワークの品質が促進されます。

(私は.NETの例を提供します)SqlConnectionクラスは、SQL Serverインスタンスへの接続に使用されます。そのパブリックAPIは非常に単純です。

using (SqlConnection connection = new SqlConnection(connectionString))
{
    connection.Open();
    // Do work here; connection closed on following line.
}

ただし、このクラスはSystem.Dataフレームワーク内の約200のメソッドに依存します(この場合、Assembly)、3/4は内部であり、System.DataのパブリックAPIの一部ではありません。フレームワークのAPIはシンプルに保たれているため、SqlConnectionを適切に使用することが容易になります。ユーザーがSqlConnectionFactorySqlDebugContextDbConnectionPoolGroup、またはSqlConnectionクラスに必要なその他の内部クラスを処理する必要がある場合、 SqlConnectionを適切に使用するのが指数関数的に難しくなります。 APIはフレームワークのごく一部しか公開しないため、接続を作成して使用する方が簡単です。

51
Will

APIは、機能をカプセル化するコンポーネント(のセット)へのインターフェースです。たとえば、GoogleMaps API、DirectXまたはOpenGL API。

フレームワークは、開発者が特定のフレームでプロジェクトを開発するのを支援することを目的とした、ツール、コンポーネントのセットです。フレームワークは通常、いくつかのコーディング標準を設定し、有用なコンポーネントを提供します...たとえば、Symfony/CakeはPHP Webアプリケーションフレームワークです。JUnitはJavaでのユニットテスト用のフレームワークです...

多くの場合、フレームワークは一部のAPIに統合されたインターフェイスをバンドル/提供できます。

一部のAPIは、フレームワークを使用して内部的に構築できます。

6
  1. API-アプリケーションプログラミングインターフェイス->ライブラリのAPIを使用する際に従う必要のある契約
  2. ライブラリ-特定の問題を解決するクラス/モジュールのセット-> APIがあります
  3. フレームワーク-使用方法に関する一連のルールを備えた「より大きな」ライブラリセット

すべてのライブラリにはAPIがあるため、例を挙げても意味がありません。

人気のあるJava時間のライブラリは Joda time です。

人気のあるJavaフレームワークは Springフレームワーク です。

Springを適切に使用するには、多くのルールに従う必要があります。 Joda時間を使用するために多くのルールに従う必要はありません。

3
darioo

APIは何かコードhas、何かそれではないis。フレームワークhas APIですが、それ自体はAPIではありません。

1
kindall

APIは、SDKから事前に組み込まれています(またはそこから組み込むことができます)。フレームワークは、そのようなバンドルの公開された機能を使用できるロード可能なバンドルです。関数へのポインターを使用して、これらのフレームワークの公開関数を取得できます。

例:

API:

-stringWithString:

フレームワークからの機能:

-myExposedMethod:
0
Neilvert Noval
  1. Java APIは、製品またはソフトウェアのすべての機能が記述されている... Application Programming Interfaceを意味します。

  2. Java Frameworkは、半完成のプロジェクトまたはコードを意味します。プロジェクトを作成するためのアーキテクチャを提供します。フレームワークには独自のクラスやメソッドなどがあります。

0
Ashish Gojiya

APIは、開発者がアプリケーションの構築に使用できる特定の言語で構築されたライブラリです。フレームワークは、APIと同様にライブラリのセットですが、構文は元の言語と異なる場合があります。したがって、開発者は、たとえばSymphonyを使用する場合、PHPの異なる構文を作成している可能性があります。

0
Ghassen BHS

フレームワークは、MVC、MEFなどのアプリケーションを設計するために使用されます。構築するモデルのように、アプリケーションで必要になる可能性のある特定の機能セットのほぼ基本です。

APIはアプリケーション間の対話用であり、アプリケーションはFacebook APIを使用してFacebookと対話します。

これがもう少し明確であることを願っています。

0
Pieter

フレームワークとAPIの主な違いは、開発者がライフサイクルコールバックメソッドメカニズムを通じてオブジェクトのライフサイクルにフックできることですが、APIはそうではなく、APIは機能のみを実行することのみを目的としています。

0
Satyam

それを視覚化する別の方法はこれです:(どのプログラミング言語にも当てはまります)

Any(!)「別のソフトウェアによって使用されることを意図したソフトウェア」定義 mustには、他のソフトウェアが使用することが期待されている(および許可されている)「ノブ、スイッチ、ダイヤル」を表す「アプリケーションプログラムインターフェイス(API)」が必要です。すべての内部実装の詳細は表示されず、到達できません。

「フレームワーク」は、人間が特定の一般的なタイプのアプリケーション(Webページなど)を簡単に作成できるように設計されたツールです。フレームワークは「everyこのようなアプリケーションが実行できる必要があるもの」を実装し、十分にテストされた方法でそれを実行します。 「正確にあなた(アプリケーション作成者)がする必要がないように。」 「同じ古いことをもう一度繰り返して、正しく実行したかどうか悩む」のではなく、単にフレームワークがすでに行っていることを活用するだけです。

結局...

Actum Ne Agas:すでに完了していることをしないでください。

0
Mike Robinson