質問

の違いは何ですかa 枠組み図書館?

私は、いかに答えを言わずに図書館として設定オブジェクトの機能に着目した解決、特定の問題や特定のアプリケーション開発(すなわちデータベースアクセス);と枠組みそのコレクションとしての図書館を中心に、特定の方法論(MVC)のすべての分野をカバーする分野に申請できます。

役に立ちましたか?

解決

実際には、これらの用語は、使用されるコンテキストに応じて、さまざまな意味を持ちます。

たとえば、Mac OS Xでは、フレームワークは単なるライブラリであり、バンドルにパックされています。バンドル内には、実際の動的ライブラリ(libWhatever.dylib)があります。ベアライブラリとMacのフレームワークの違いは、フレームワークに複数の異なるバージョンのライブラリを含めることができることです。追加のリソース(画像、ローカライズされた文字列、XMLデータファイル、UIオブジェクトなど)を含めることができ、フレームワークが公開されていない限り、通常、ライブラリを使用するために必要な.hファイルが含まれます。

したがって、アプリケーションでライブラリを使用するために必要なものはすべて単一のパッケージ内にあります(.hファイルのないC / C ++ / Objective-Cライブラリは、ライブラリのドキュメントに従って自分で記述しない限り、ほとんど役に立ちません)。移動するファイルの束ではなく(MacバンドルはUnixレベルの単なるディレクトリですが、UIはそれを単一のファイルのように扱います。JavaにJARファイルがあるのと同じように、クリックすると通常コンテンツを表示するよう明示的に選択しない限り、中身を確認しないでください。

Wikipediaはフレームワークを「流行語」と呼んでいます。ソフトウェアフレームワークを次のように定義します

  

ソフトウェアフレームワークは再利用可能です   ソフトウェアシステムの設計(または   サブシステム)。ソフトウェアフレームワークは   サポートプログラム、コードを含む   ライブラリ、スクリプト言語、または   開発を支援する他のソフトウェアと   さまざまなコンポーネントを接着します   ソフトウェアプロジェクトの。各種部品   フレームワークの公開   APIを介して..

つまり、ライブラリはまさに「ライブラリ」だと思います。これは、オブジェクト/関数/メソッド(言語によって異なります)およびアプリケーションの「リンク」のコレクションです。それに対して、オブジェクト/関数/メソッドを使用できます。基本的に、再利用可能なコードを含むファイルであり、通常は複数のアプリケーション間で共有できます(同じコードを何度も記述する必要はありません)。

フレームワークは、アプリケーション開発で使用するすべてのものです。ライブラリ、多くのライブラリのコレクション、スクリプトのコレクション、またはアプリケーションを作成するために必要なソフトウェアの一部になります。フレームワークは非常に曖昧な用語です。

トピック" ライブラリとフレームワーク"。私はこの記事は非常に議論の余地があると思う。彼がそこで言っていることは間違いではありませんが、彼はフレームワークの複数の定義の1つを選択し、それをライブラリの古典的な定義と比較しています。例えば。彼は、サブクラス化のためのフレームワークが必要だと言います。本当に?ライブラリでオブジェクトを定義し、それに対してリンクし、コード内でサブクラス化できます。 「フレームワーク」の必要性がわからないそのために。何らかの方法で、彼はむしろフレームワークという用語が現在どのように使用されているかを説明しています。前に言ったように、それは単なる誇大宣伝の言葉です。一部の企業は、(古典的なライブラリの意味で)通常のライブラリのみをリリースし、「フレームワーク」と呼びます。派手に聞こえるからです。

他のヒント

ライブラリは、明確で明確な操作を実行します。

フレームワークは、アプリケーションが「肉」を定義するスケルトンです。スケルトンに記入することによる操作の。スケルトンにはパーツをリンクするコードがまだありますが、最も重要な作業はアプリケーションによって行われます。

ライブラリの例:ネットワークプロトコル、圧縮、画像操作、文字列ユーティリティ、正規表現の評価、数学。操作は自己完結型です。

フレームワークの例: Webアプリケーションシステム、プラグインマネージャー、GUIシステム。フレームワークは概念を定義しますが、アプリケーションはエンドユーザーが気にする基本的な機能を定義します。

主な違いは、フレームワークが" ハリウッドの原則"に従うことです。つまり、「電話しないでください。電話します。」

Martin Fowler によると:

  

ライブラリは、基本的に   呼び出すことができる関数、これら   通常、日はクラスに編成されます。   各呼び出しはいくつかの作業を行い、戻ります   クライアントへの制御。

     

フレームワークは抽象的   より多くの動作が組み込まれた設計。   それを使用するには、挿入する必要があります   のさまざまな場所への行動   サブクラス化または   独自のクラスをプラグインします。の   次に、フレームワークのコードがコードを呼び出します   これらの時点で。

ライブラリ:

これは、ルーチン(関数型プログラミング)またはクラス定義(オブジェクト指向プログラミング)の単なるコレクションです。背後にある理由は、単にコードの再利用、つまり、他の開発者によって既に記述されたコードを取得することです。通常、クラスまたはルーチンは、ドメイン固有の領域で特定の操作を定義します。たとえば、開発者がアルゴリズムの動作方法の実装をやり直さずに関数を呼び出すことができる数学のライブラリがいくつかあります。

フレームワーク:

フレームワークでは、すべての制御フローが既に存在し、 コードを埋める必要がある定義済みの白い斑点がたくさんあります em>。通常、フレームワークはより複雑です。これは、アプリケーションがスケルトンを埋めるために独自の機能を定義するスケルトンを定義します。このようにして、適切なときにフレームワークによってコードが呼び出されます。利点は、開発者が設計の良し悪しを気にする必要がなく、ドメイン固有の機能を実装するだけでよいことです。

ライブラリ、フレームワーク、およびコードイメージ表現:

ライブラリ、フレームワーク、およびコードイメージの関係

KeyDifference:

ライブラリとフレームワークの主な違いは、 “ Inversion of Control” です。ライブラリからメソッドを呼び出すときは、制御できます。しかし、フレームワークでは、コントロールが逆になります。フレームワークがあなたを呼び出しますソース。

関係:

どちらも、プログラマが使用するAPIを定義しています。これらをまとめると、ライブラリはアプリケーションの特定の機能、フレームワークはアプリケーションのスケルトン、APIはそれらをまとめるコネクタと考えることができます。通常、典型的な開発プロセスはフレームワークから始まり、APIを介してライブラリで定義された関数に入力します。

ライブラリを呼び出します。

フレームワークがあなたを呼び出します。


  

図書館 助け
  足場が痛い
  多くの涙

これまで説明してきたように:

ライブラリはツールです。

フレームワークは生き方です。

どんな小さな部品でも役立つライブラリ。プロジェクト全体をコミットする必要があるフレームワーク。

コーエンスの回答が好きですが、より技術的な定義は次のとおりです。あなたのコードはライブラリを呼び出します。 フレームワークがコードを呼び出します。たとえば、GUIフレームワークはイベントハンドラーを介してコードを呼び出します。 Webフレームワークは、何らかの要求/応答モデルを介してコードを呼び出します。

これは inversion of control とも呼ばれます-突然、フレームワークは、ライブラリの場合とは逆にコードを実行するタイミングと方法を決定します。つまり、フレームワークは、コードをどのように構造化する必要があるかに非常に大きな影響を及ぼします。

Web開発者の観点から:

  1. ライブラリは、別のライブラリに簡単に置き換えることができます。しかし、フレームワークはできません。

    jquery日付ピッカーライブラリが気に入らない場合は、ブートストラップ日付ピッカーやpickadateなどの他の日付ピッカーに置き換えることができます。

    製品を構築したAngularJSが気に入らない場合は、他のフレームワークに置き換えることはできません。コードベース全体を書き直す必要があります。

  2. ほとんどのライブラリは、フレームワークと比較して学習曲線が非常に少なくなります。例:underscore.jsはライブラリー、Ember.jsはフレームワークです。

この定義を見た場所を忘れましたが、かなりいいと思います。

ライブラリはコードから呼び出すモジュールであり、フレームワークはコードを呼び出すモジュールです。

の枠組みでの異なる。みましょう。

ということかしたい料理は魚のカレー。され、その後必要な食材にとことんこだわってい , スパイス その他の 光熱費.る必要がありま あなたのベースお料理(これはデータのものとします。すべての食材は一緒という 枠組み.まえて一つ一つまたは複数の組み合わせくお魚のカレーがお 最終製品.を比較すると ウェブフレームワーク であるの underscore.js, ブートストラップ.css, bootstrap.js, fontawesome, AngularJS など。例えば、 Twitterブートストラップv35.

現在、一度中をご覧頂ければその一成分のように、い .使用できなくなりオイルしたいのでその破綻に魚のデータ。のみ使用することができ オリーブオイル.を比較すると underscore.js.そのブランドの石油を使用するかはあなた次第です。一部の料理で作った アメリカのオリーブオイル (underscore.js又は インドのオリーブオイル (lodash.js).この変更のみが味わいのご使用をご検討ください。そのとほぼ同様の目的、その利用により、開発者の好みも簡単に交換可能。●

enter image description here


枠組み :を集めている図書館の独特な特性を実環境で期待通りに動作します。(すべての食材)

図書館 :特定の設定の指示を提供する独自の特性実環境で期待通りに動作します。(油魚)

プラグイン :ユー構築のためのライブラリ(ui-ルーター->AngularJS)は多くの図書館組合せ(日時-ピッカー->ブートストラップ.css+jQueryなるプラグインが現在勤務しています。


P.S.AngularJSであるMVCの枠組みがJavaScriptライブラリ。していくものだと思うから図書館に及ぶデフォルトの挙動のネイティブ技術(JavaScriptしています。

これは私が考える方法です(そして他の人によって合理化されているのを見ました):

ライブラリは、コード内に含まれるものです。フレームワークはアプリケーションのコンテナです。

ここには Joel Spolskyによる苦い記事がリンクされていますが、ツールボックス、ライブラリ、フレームワークなどの優れた区別

ライブラリは、狭い範囲の目的のために機能を実装しますが、フレームワークは、より広範な機能のサポートを提供するライブラリのコレクションになる傾向があります。たとえば、ライブラリSystem.Drawing.dllは描画機能を処理しますが、.NETフレームワーク全体の一部にすぎません。

ライブラリ-クライアントが特定のタスクを達成するのに適していると判断した場合に使用できるクラスまたはコンポーネントのセット。
フレームワーク-「プラグイン」するための特定のガイドラインを義務付けています。あなたより大きな何かに。 「フレームワークによって生活が楽になる」ように、アプリケーション/要件に固有の部分を公開された方法で提供するだけです

ライブラリは、使いやすさと効率性のためのものです。たとえば、Zendライブラリは、明確に定義されたクラスと関数を使用してさまざまなタスクを達成するのに役立ちます。 MVC(Model-view-controller)(参照)。 MVCのようにタスクを分散するための明確に定義されたシステムです。モデルにはデータベース側が含まれ、ビューはUIインターフェイス用、コントローラーはビジネスロジック用です。

あなたはその違いを非常によく特定していると思います。フレームワークは、私たちが仕事をするフレームを提供します。単純なライブラリよりも。
フレームワークは、ライブラリのセットに一貫性を追加することも想定されています。

ライブラリは、目標を達成するためのユーティリティのセットだと思います(たとえば、ソケット、暗号化など)。 フレームワークは、ライブラリ+ランタイムの環境です。たとえば、ASP.NETはフレームワークです。HTTPリクエストの受け入れ、ページオブジェクトの作成、lyfe cicleイベントの呼び出しなどを行います。フレームワークはこれをすべて行います。現在のリクエスト!

とにかく、非常に興味深い質問です!

この回答のソースは覚えていません(インターネットの.pptで見つけたと思います)が、答えは非常に簡単です。

ライブラリとフレームワークは、アプリケーションで使用でき、特定の「問題」を解決するのに役立つクラス、モジュール、および/またはコード(プログラミング言語に依存)のセットです。

その問題は、アプリケーションの情報のログまたはデバッグ、チャートの描画、特定のファイル形式(html、pdf、xls)の作成、データベースへの接続、アプリケーションの一部または完全なアプリケーションまたはコードの作成です。 デザインパターンに適用されます。

これらのすべての問題を解決するフレームワークまたはライブラリを持つことができ、さらに多くの場合、フレームワークはより複雑またはより大きな問題を解決するのに役立ちますが、主な定義ではなく、それらの主な違いの理解両方。

  

ライブラリとフレームワークの主な違いは、フレームワークを使用するための言葉で言えば、独自のコード間の依存関係です。   FWのほぼすべてのクラス、モジュール、またはコードを使用する必要がありますが、   ライブラリを使用します。1つまたはいくつかのクラス、モジュール、またはコードを使用できます。   独自のアプリケーションのlib

これは、使用する必要があるアプリでフレームワークを使用するために、たとえばフレームワークに50個のクラスがある場合、コードで10-15個以上のクラスを使用することを意味します。フレームワーク、一部のクラス(そのクラスのオブジェクト)は、フレームワーク内の他のクラスのメソッドの入力/パラメーターです。 .NETフレームワーク、Spring、またはMVCフレームワークを参照してください。

たとえば、ログライブラリの場合、コードでLogクラスを使用するだけで、「ロギングの問題」の解決に役立ちます。これは、ログライブラリにクラスがもうないという意味ではありません彼のコードでは、ファイルを処理するクラス、画面出力、またはデータベースを処理するクラスのようですが、コードでそのクラスに触れたり使用したりすることはありません。これがフレームワークではなくライブラリである理由です。

また、フレームワークとライブラリよりも多くのカテゴリがありますが、それはトピックから外れています。

あなたの解釈は私にはかなりいいですね... ライブラリは、他のコードで再利用するためにコンパイルされ、自己完結しているものであれば何でもかまいません。その内容には文字通り制限がありません。

一方、フレームワークには、MVCの例のように、アプリケーション開発の特定の分野で使用するためのさまざまな機能が必要です。

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