web-dev-qa-db-ja.com

アーキテクチャとフレームワークの違い

EJB 3とSpringを比較すると、用語の質問が出ました。

ウィキペディアは言う

Enterprise JavaBeans(EJB)は、エンタープライズアプリケーションのモジュール構成のための管理されたサーバー側コンポーネントアーキテクチャです。

そしてまた

Spring Frameworkは、オープンソースアプリケーションフレームワークであり、Javaプラットフォーム用のコントロールコンテナーの反転です。

「EJB 3 in Action」は、

コンポーネント、つまりEJB、およびコンテナーは、エンタープライズアプリケーション開発に価値のあるサービスを提供するフレームワークと見なすことができます。

フレームワークはアーキテクチャですか?そうでない場合、これらの用語の違いは何ですか? EJBはフレームワークと考えることができますか?

6
Limbo Exile

アーキテクチャは、アプリケーションの抽象的な設計概念です。基本的に、可動部品の構造とそれらの接続方法。

フレームワークは、拡張するように設計された、事前に構築された汎用または専用アーキテクチャです。

アーキテクチャが構造の設計である場合、フレームワークは基盤のアーキテクチャです。フレームワークは、特に構築または拡張されるように設計されています。

一部のフレームワークは、主に足場を扱います。つまり、開発者が最初から作成しなくても済むように、使用/拡張が容易なビルド済みモジュールを提供します。たとえば、ほとんどのMVC Webフレームワーク(Django、pylons、codeigniterなど)は、セッション、データベース接続、テンプレートなどの実装をはるかに簡単にします...

他のフレームワークは、主に言語自体の機能を拡張することを扱い、「欠けている部分」と見なされるものを埋めます。彼らは他の言語、シンタクティックシュガーから来る機能を追加したり、言語を拡張したりします。 Underscore libはこれの完璧な例です。アプリケーションの構築を支援することはあまりありません。主な目的は、JavaScriptのコア機能を拡張することです。

一部のフレームワークは、言語に新しい機能を追加したり、既存の機能を新しい方法で再ハッシュしたりするために存在します。たとえば、jQueryは、以前は面倒だったHTML DOMのクエリプロセスを実行して、それを簡単にしました。また、クロスブラウザー互換のAJAXリクエストを作成する手段も提供しました。jQueryは新しいスタイルの構文を追加しているように見えますが、背後ではバニラJavaScriptで実行されています。AngularJSは、JS /を活用する別のフレームワークです。 Vanilla JSを使用した新しい興味深い方法でのHTML。

あなたの場合。 SpringとEJBはどちらもMVCフレームワークの足場であり、それぞれ独自のトレードオフがあります。

9
Evan Plaice

一般的に言えば、architectureは、設計パターン、モジュール、およびそれらの相互作用を含めることができる抽象的な計画です。 Frameworksは、architectedアプリケーションを構築する「物理」構造です。

アーキテクチャには複数のフレームワークが組み込まれている場合があります。そして、フレームワークの複数のレイヤー。各層の「アーキテクチャ」は、文書化された「思考」であり、そこから層が構築されます。フレームワークは、それを構築するために使用される「物理的な」コンポーネントです。


ターゲット環境を「アーキテクチャ」と呼ぶときは、ソフトウェアの設計への影響を指します。それを「フレームワーク」と呼ぶとき、それはあなたがそれがあなたに与える機能性を指しています。

3
svidgen

ソフトウェアでは、フレームワークは、一般的な機能(ソフトウェアの意味でのコード)を再利用可能な形式に抽象化することにより、一般的なプログラミング概念をサポートするソフトウェアモジュールまたはモジュールのセットです。

アーキテクチャは、ビジネスニーズを解決するシステムのアセンブリです。 [〜#〜] togaf [〜#〜] によると

ANSI/IEEE Std 1471-2000で使用されているアーキテクチャの定義は次のとおりです。

「そのコンポーネントで具体化されたシステムの基本的な構成、相互の関係、環境、およびその設計と進化を支配する原則。」

TOGAFは、アーキテクチャの再利用可能な部分を再利用可能な形式に抽象化するため、それ自体がフレームワークです。これは、コードではなくドキュメントを通じて行われます。

0
jeremyjjbrown