回答:
論理層は、単にコードを編成する方法です。通常のレイヤーには、従来の3層モデルと同じ、プレゼンテーション、ビジネス、データが含まれます。しかし、レイヤーについて話しているときは、コードの論理的な編成について話しているだけです。これらのレイヤーが、異なるコンピューターで、または単一のコンピューターの異なるプロセスで、あるいは単一のコンピューターの単一のプロセスで実行される可能性があることを意味するものでは決してありません。私たちがしていることは、特定の関数によって定義された一連のレイヤーにコードを編成する方法を議論することです。
ただし、物理層は、コードが実行される場所についてのみです。具体的には、層は、レイヤーがデプロイされ、レイヤーが実行される場所です。つまり、層はレイヤーの物理的な配置です。
出典:Rockford Lhotka、すべてのアプリをn層にする必要がありますか?
この問題に関するスコットハンセルマンの投稿をご覧ください。http://www.hanselman.com/blog/AReminderOnThreeMultiTierLayerArchitectureDesignBroughtToYouByMyLateNightFrustrations.aspx
ただし、「スコットワールド」(できればあなたの世界でもあります)では、「層」はデプロイメントの単位であり、「層」はコード内での責任の論理的な分離であることに注意してください。「3層」システムを持っていると言うかもしれませんが、それを1つのラップトップで実行しています。「3層」システムを持っていると言うかもしれませんが、データベースと通信するASP.NETページしかありません。精度には力があります。
レイヤーとは、コードの論理的な分離を指します。論理層は、コードをよりよく整理するのに役立ちます。たとえば、アプリケーションは次のレイヤーを持つことができます。
1)プレゼンテーション層またはUI層2)ビジネス層またはビジネスロジック層3)データアクセス層またはデータ層
上記の3つのレイヤーは、独自のプロジェクトに存在します。プロジェクトをコンパイルすると、それぞれのレイヤーDLLが取得されます。これで3つのDLLができました。
アプリケーションの展開方法に応じて、1〜3の層があります。DLLが3つあるので、すべてのDLLを同じマシンに展開すると、物理層は1つだけですが、論理層は3つになります。
各DLLを別のマシンに展開することを選択した場合、3つの層と3つの層があります。
したがって、レイヤーは論理的な分離であり、層は物理的な分離です。また、層は層の物理的な配置であるとも言えます。
なぜ常に複雑な単語を使用しようとするのですか?
層 = あなたのコードの一部、アプリケーションがケーキがある場合、これはスライスです。
ティア = 物理マシン、サーバーを。
層は1つ以上のレイヤーをホストします。
レイヤーの例:
層:
コードはサーバーでホストされています=コードは層でホストされています。
コードは2つのサーバーでホストされている=コードは2つの層でホストされています。
たとえば、Webサイト自体(プレゼンテーションレイヤー)をホストする1台のマシン、より機密性の高いコード(ビジネスレイヤー、データベースアクセスレイヤーなど)をホストする、より安全なマシン。
階層化アーキテクチャを実装することには、非常に多くの利点があります。これはトリッキーであり、階層化アプリケーションを適切に実装するには時間がかかります。ある場合は、Microsoftからのこの投稿をご覧ください。http://msdn.microsoft.com/en-gb/library/ee658109.aspx
平易な英語でTier
は、「上下に配置された構造の一連の行またはレベルのそれぞれ」を指しますが、Layer
「表面または物体をカバーする材料のシート、数量、または厚さ、通常はいくつかのうちの1つ」を指します」
層は、コード/プロセスが実行される物理的なユニットです。例:クライアント、アプリケーションサーバー、データベースサーバー。
レイヤーは論理的な単位であり、コードの編成方法です。例:プレゼンテーション(ビュー)、コントローラー、モデル、リポジトリ、データアクセス。
層は、設計のプレゼンテーション、ビジネス、サービス、およびデータ機能の物理的な分離を表し、別々のコンピューターおよびシステムにまたがります。
レイヤーは、アプリケーションまたはサービスを構成するソフトウェアコンポーネントの論理グループです。これらは、コンポーネントによって実行されるさまざまな種類のタスクを区別するのに役立ち、コンポーネントの再利用性をサポートする設計の作成を容易にします。各論理レイヤーには、サブレイヤーにグループ化された多数の個別のコンポーネントタイプが含まれ、各サブレイヤーは特定のタイプのタスクを実行します。
2層パターンは、クライアントとサーバーを表します。
このシナリオでは、クライアントとサーバーが同じマシン上に存在する場合と、2つの異なるマシン上に存在する場合があります。下の図は、クライアントがクライアント層にあるWebサーバーと対話する一般的なWebアプリケーションのシナリオを示しています。この層には、プレゼンテーションレイヤーロジックと必要なビジネスレイヤーロジックが含まれます。Webアプリケーションは、データ層ロジックを含むデータベース層をホストする別のマシンと通信します。
レイヤーと層の利点:
階層化により、コードの保守性を最大化し、さまざまな方法で展開したときのアプリケーションの動作を最適化し、特定のテクノロジーまたは設計の決定を行う必要がある場所を明確に区別できます。
レイヤーを別々の物理層に配置すると、複数のサーバーに負荷を分散することでパフォーマンスを向上させることができます。また、より機密性の高いコンポーネントとレイヤーを異なるネットワーク上に、またはイントラネットではなくインターネット上に分離することにより、セキュリティの向上にも役立ちます。
1層アプリケーションは、3層アプリケーションにすることができます。
はい、私の親愛なる友人たちは正しく言った。層はアプリケーションの論理パーティションであり、層はシステム層の物理パーティションです。パーティションは層パーティションに依存します。アプリケーションが単一のマシンで実行されるのと同じですが、3層のアーキテクチャーに従うため、層のアーキテクチャーは層アーキテクチャーに存在する可能性があると言えます。簡単に言うと、3層アーキテクチャは単一のマシンで実装でき、それが1層アーキテクチャであると言えます。各レイヤーを別々のマシンに実装すると、その3層アーキテクチャーと呼ばれます。層は複数の層を実行できる場合もあります。レイヤーアーキテクチャ関連のコンポーネントで、相互に簡単に通信できます。
私たちが従うように、以下のアーキテクチャ
クライアントは「プレゼンテーションレイヤー」と対話できますが、セキュリティ上の理由により、クライアントは下のレイヤーのパブリックコンポーネント(ビジネスロジックレイヤーのパブリックコンポーネントなど)から「ビジネスロジックレイヤー」にアクセスします。
Q *なぜレイヤーアーキテクチャを使用するのですか?レイヤーアーキテクチャを実装すると、アプリケーションの効率が向上します。
==>セキュリティ
==>管理性
==>スケーラビリティ
アプリケーションを開発した後、dbmsを変更したり、ビジネスロジックを変更したりする必要がある場合など、その他の必要性もあります。
Q *ティアアーキテクチャを使用する理由
各層を物理的に実装すると効率が向上するため、層アーキテクチャがないと層アーキテクチャを実装できません。別の層を実装する別のマシンと別の層は、1つ以上のレイヤーを実装するため、それを使用しています。
フォールトトレランスの目的で使用します。==>メンテナンスが簡単。
簡単な例
商工会議所で開かれた銀行のように、従業員は次のカテゴリに分類されます。
それらはすべてシステムの関連コンポーネントです。
ローン目的で銀行に行く場合、最初にゲートキーパーが笑顔でドアを開けてから、ローンのすべてのスキームを紹介する人の近くに行き、その後マネージャーのキャビンに行き、ローンを渡します。その後、最後にレジのカウンターに行き、ローンを受けます。これらは銀行の層構造です。
ティアはどうですか?銀行の支店が町に開き、その後別の町に、その後別の町に開きますが、各支店の基本的な要件は何ですか
レイヤーと階層の概念はまったく同じです。
レイヤー は アプリケーション内の論理的な分離であり、レイヤー間の通信は明示的であり、疎結合です。【プレゼンテーションロジック、アプリケーションロジック、データアクセスロジック】related-functionality[code]
層 はlayers
、個々のコンピューター(プロセス)における[個々のサーバーでホストされる]の物理的な分離です。
図に示すように:
1-Tier & 3-Layers « App Logic with out DB access store data in a files.
2-Tier & 3-Layers « App Logic & DataStorage-box.
2-Tier & 2-Layers « Browser View[php] & DataStorage[procedures]
2-Tier & 1-Layers « Browser View[php] & DataStorage, query sending is common.
3-Tier & n-Layer « Browser View[php], App Logic[jsp], DataStorage
n- Tierの利点:
セキュリティの
スケーラビリティの向上 :組織の成長に応じてDB-Clusteringを使用してDB-Tierを他の層に触れることなくスケールアップできます。
保守性 :Webデザイナーは、他の層の他のレイヤーに触れることなく、ビューコードを変更できます。
簡単なアップグレードまたは強化[例:アプリケーションコードの追加、ストレージエリアのアップグレード、またはモバイル、タブレット、PCなどの個別のデバイス用の複数のプレゼンテーションレイヤーの追加も可能]
マイクロソフトアプリケーションアーキテクチャガイド2の以下の説明が好き
レイヤーは、アプリケーションの機能とコンポーネントの論理グループを記述します。一方、層は、個別のサーバー、コンピューター、ネットワーク、またはリモートロケーションでの機能とコンポーネントの物理的な分散を表します。レイヤーと層の両方が同じ名前のセット(プレゼンテーション、ビジネス、サービス、データ)を使用していますが、物理的な分離を意味するのは層だけであることを覚えておいてください。
レイヤーを使用して、ソリューションのコンポーネント内のアーキテクトまたはテクノロジースタックを説明します。層を使用して、通常、ネットワークまたはプロセス間通信が関与する場合に、これらのコンポーネントを論理的にグループ化します。
技術的には、Tierは、コードの実行に必要な最小限の環境の一種です。
たとえば、仮想的に3層アプリを実行できるとします。
OSのない3つの仮想マシンを持つ1つの物理マシン。
(これは3(ハードウェア)層のアプリでした)
3つの異なる/同じOSを持つ3つの仮想マシンを備えた1つの物理マシン
(これは3(OS)層のアプリでした)
1つの物理マシン、1つの仮想マシン、1つのOS、ただし3つのAppServer
(これは3(AppServer)層のアプリでした)
1台の物理マシン、1台の仮想マシン、1台のOS、1台のAppServer、3台のDBMS
(これは3(DBMS)層のアプリでした)
1台の物理マシンと1台の仮想マシン、1台のOSに1台のAppServersと1台のDBMS、3つのExcelワークブック
(これは3(AppServer)層のアプリでした)
Excelワークブックは、VBAコードを実行するために最低限必要な環境です。
これらの3つのワークブックは、1台または複数の物理コンピューター上に配置できます。
アプリの説明のコンテキストで「Tier」と言う場合、実際には「OS Tier」を意味することに気づきました。
つまり、アプリが3つの個別のOSで実行されている場合は、3層アプリです。
したがって、アプリを説明するための正確な方法は
「1〜3層対応、2層で実行」アプリ。
:)
レイヤーは、アプリでの職務の機能分離(例:プレゼンテーション、データ、セキュリティなど)に関するコードの一種です。
プレゼンテーション、サービス、データ、ネットワークレイヤーについて話すときは、レイヤーについて話しています。「それらを別々にデプロイする」とき、層について話します。
層はすべてデプロイメントに関するものです。このようにしてください。Angularで作成されたフロントエンドを持つアプリケーションがあり、MongoDBのようなバックエンドと、フロントエンドとバックエンドの間で相互作用する中間層があります。したがって、このフロントエンドアプリケーション、データベースアプリケーション、および中間層がすべて個別にデプロイされる場合、それは3層アプリケーションであると言います。
利点:将来的にバックエンドをスケーリングする必要がある場合は、バックエンドを個別にスケーリングするだけでよく、フロントエンドをスケールアップする必要はありません。