web-dev-qa-db-ja.com

「エンジン」と「フレームワーク」の違いは何ですか?

これらの用語は一見同じ意味で使用されていると聞いたので、少しわかりません。例を挙げてください。

23
Pup

これらの用語と他の用語は非常に似ているようです。これらは概念的な観点から名前が付けられているため、次のように定義できます。

  • 「フレームワーク」は、実際のアプリケーションを構築するための「基盤」または「サポート構造」です。 .NET Frameworkには、基盤(CLR)だけでなく、他の方法では自分で実装する必要がある標準化された機能を提供する一連のライブラリが含まれています。他のフレームワークまたは基盤は、UI、データストレージ、クライアント/サーバー相互作用など、より具体的なサポート領域を提供します。フレームワークは、特定の独自の何かを構築するための比較的静的で一般的な構造を提供します。
  • 「エンジン」は、特定のタイプの作業を実行するように設計された強力なロジックをカプセル化する、自己完結型であるが外部から制御可能なコードです。エンジンは「重い物を持ち上げる」ために存在し、複雑で抽象的なタスクを実行するように指示します。エンジンは、外部からのガイダンスなしに、比較的効率的な方法で詳細を処理します。 SQL実装、および検索を実行するその他のサービスは、通常、「エンジン」と呼ばれます。物理エンジンやグラフィックエンジンなどもありますが、これらはすべて、一般的な方法で「これを行う」と言うという共通の考えを持っており、詳細を処理します。
31
KeithS

フレームワークは、連携できるようにすることを目的とした一連のライブラリのようなものです。これは、一般的なアルゴリズムやデータ構造の実装を回避する必要がないことを意味します。これらのライブラリ(フレームワーク)を使用して、それらが提供する機能が問題の解決に役立つようにライブラリを配置します。

エンジンはシステムであり、データを供給し、それが仕事をします。

ライブラリには「エンジン」を含めることができ、エンジンはフレームワークを使用して構築できることに注意してください。

5
Trinidad

AFAIKフレームワークは、アプリケーションを構築するための構造です。制御の反転があるという点でライブラリとは異なります(つまり、ライブラリでは、コードからサブルーチンを呼び出して制御できますが、フレームワークでは、サブルーチンをフレームワークにバインドし、必要に応じてサブルーチンを呼び出します-したがって、制御はフレームワークを使用します)。

エンジンはまったく異なる概念です。フレームワークとライブラリのハイブリッドです。フレームワークのように、それはアプリケーションを制御します。ただし、フレームワークとは異なり、サブルーチンをエンジンにバインドするのではなく、組み込みのAPIを使用して特定のタスク(ライブラリのようなもの)を実行します。

要約すると、フレームワークは、サブルーチンをそれにバインドすることによって拡張および調整できるアプリケーションの構造です。 OTOH、エンジンはメインアプリケーション自体であり、パブリックAPIを使用して、必要なことを実行するように簡単に指示できます。

したがって、フレームワークはより柔軟です。ただし、エンジンは機能するアプリケーションです。プログラマーが車輪の再発明に時間を費やす必要がないため、エンジンはより速く作業を完了します。彼は単にエンジンに何をすべきかを指示することができ、エンジンが内部操作を処理します。

4
Aadit M Shah

http://indiegamesguild.com/sgtflame/2010/02/23/frameworks-vs-engines/

フレームワークは主に一連のコンポーネントインターフェイスですが、それらのコンポーネントを実装していません。フレームワークは、フレームワークを結び付けるのに役立つグルーコードを実装し、必要になる可能性のあるものにユーティリティの実装を提供します。

ゲームエンジンは、フレームワークで定義されているすべてのコンポーネントを実装します。または、少なくともゲームエンジン開発者が、ゲームエンジンを実装するために必要であると感じるすべてのコンポーネントを実装します。場合によっては、エンジンが物理やネットワークなどを必要としないことがあるため、ゲームエンジンの開発者は、これらのコンポーネントをエンジンから除外することを選択できます。

それはそれに答えますか?

4
Greg Treleaven

フレームワークの例:

エンジンの例:

それぞれの異なるタイプの調査は手がかりを与えます...

エンジン

  • 検索エンジン、コンピュータシステム上の情報を見つけるために設計された情報検索システム
  • コンピュータまたはビデオゲームのコアソフトウェアコンポーネントであるゲームエンジン
  • レイアウトエンジン、画面に表示するためにWebコンテンツをフォーマットするソフトウェア
  • 画像の仕様をピクセルに変換するレンダリングエンジン、ソフトウェア、またはハードウェア
  • レイトレーシングエンジン、シミュレートされた光線をトレースすることによってシーンをレンダリングするソフトウェア
  • ポリモーフィックエンジンまたはミューテーションエンジン、初期の概念的または機械的計算デバイス
  • 階差機関、多項式関数を表にするように設計された機械式計算機
  • チャールズ・バベッジによって設計された、コンピューターの概念である分析エンジン

    フレームワーク

  • 芸術的な描画、音楽の作曲、機械的なCAD

  • さまざまなプログラミング言語およびターゲットマシン用のコンパイラ。
  • 財務モデリングアプリケーション
  • 地球システムモデリングアプリケーション
  • 意思決定支援システム
  • メディアの再生とオーサリング
  • Webアプリケーション
  • ミドルウェア
1
Pup
An engine "does" the job for you.

単純な乗算プログラム。

A framework "simplifies" the job for you.

文字列をintに変換してからエンジンに提示するコードを書く代わりに、それを変換する別のコードがあります。この簡略化コードはフレームワークです。

1
Daniel Sampras