web-dev-qa-db-ja.com

「レイヤー」と「ティア」の違いは何ですか?

「レイヤー」と「ティア」の違いは何ですか?

200
cretzel

論理layersは、単にコードを整理する方法です。典型的なレイヤーには、プレゼンテーション、ビジネス、およびデータが含まれます。これは、従来の3層モデルと同じです。しかし、レイヤーについて話しているとき、私たちはコードの論理的な組織化について話しているだけです。これらのレイヤーが異なるコンピューター上で実行されることも、単一コンピューター上の異なるプロセスで実行されることも、単一コンピューター上の単一プロセスで実行されることもありません。私たちがしていることは、特定の機能によって定義された一連のレイヤーにコードを編成する方法を議論することです。

しかし、物理は、コードの実行場所に関するものです。具体的には、層は、レイヤーがデプロイされ、レイヤーが実行される場所です。言い換えれば、層は層の物理的な展開です。

出典:Rockford Lhotka、 すべてのアプリはn層である必要がありますか?

239
Panos

この問題に関するScott Hanselmanの投稿を読んでください: http://www.hanselman.com/blog/AReminderOnThreeMultiTierLayerArchitectureDesignBroughtToYouByMyLateNightFrustrations.aspx

ただし、 "Scott World"(できればあなたの世界でもあります)では、 "Tier"は展開の単位であり、 "Layer"はコード内の責任の論理的な分離であることに注意してください。 「3層」システムはあるが、1台のラップトップで実行していると言うかもしれません。 「3層」システムを持っているが、データベースと通信するASP.NETページのみを持っていると言うかもしれません。正確さには力があります。

42
Josh

レイヤーとは、コードの論理的な分離を指します。論理層を使用すると、コードをより適切に整理できます。たとえば、アプリケーションは次のレイヤーを持つことができます。

1)プレゼンテーション層またはUI層2)ビジネス層またはビジネスロジック層3)データアクセス層またはデータ層

上記の3つのレイヤーは、独自のプロジェクトに存在し、3つ以上のプロジェクトである場合があります。プロジェクトをコンパイルすると、それぞれのレイヤーDLLが取得されます。したがって、3つのDLLがあります。

アプリケーションのデプロイ方法に応じて、1〜3層になります。現在3つのDLLがあるので、すべてのDLLを同じマシンにデプロイすると、物理層は1つだけで論理層は3つになります。

各DLLを別々のマシンにデプロイすることを選択した場合、3つの層と3つのレイヤーがあります。

したがって、レイヤーは論理的な分離であり、ティアは物理的な分離です。階層は、レイヤーの物理的な展開であるとも言えます。

30
Satish

常に複雑な単語を使用しようとするのはなぜですか?

layer=コードの一部、アプリケーションがケーキ、これはスライスです。

tier=物理マシン、サーバー。

層は1つ以上の層をホストします。


レイヤーの例:

  • プレゼンテーション層=通常、ユーザーインターフェイスに関連するすべてのコード
  • データアクセス層=データベースアクセスに関連するすべてのコード

ティア:

コードはサーバーでホストされています=コードは層でホストされています。

コードは2台のサーバーでホストされています=コードは2層でホストされています。

たとえば、Webサイト自体をホストする1台のマシン(プレゼンテーションレイヤー)、セキュリティに敏感なコード(実際のビジネスコード-ビジネスレイヤー、データベースアクセスレイヤーなど)をより安全にホストする別のマシン。


階層化アーキテクチャを実装することには、非常に多くの利点があります。これには注意が必要であり、階層化されたアプリケーションを適切に実装するには時間がかかります。ある場合は、Microsoftからのこの投稿をご覧ください。 http://msdn.Microsoft.com/en-gb/library/ee658109.aspx

25
Matt

レイヤーは論理的な分離であり、層は物理的な分離であるという定義を見つけました。

12
cretzel
  1. 平易な英語では、Tierは「上下に配置された構造の一連の行またはレベルのそれぞれ」を指し、Layerは「シート、数量、または材料の厚さ、通常、表面または身体を覆ういくつかの内の1つ」。
  2. 層は物理ユニットであり、コード/プロセスが実行されます。例:クライアント、アプリケーションサーバー、データベースサーバー。

    レイヤーは論理ユニット、コードの編成方法です。例:プレゼンテーション(ビュー)、コントローラー、モデル、リポジトリ、データアクセス。

  3. 層は、デザインのプレゼンテーション、ビジネス、サービス、およびデータ機能を、別々のコンピューターとシステムに物理的に分離することを表します。

    レイヤーは、アプリケーションまたはサービスを構成するソフトウェアコンポーネントの論理グループです。コンポーネントによって実行されるさまざまな種類のタスクを区別するのに役立ち、コンポーネントの再利用性をサポートする設計を簡単に作成できます。各論理層には、サブレイヤーにグループ化された多数の個別のコンポーネントタイプが含まれ、各サブレイヤーは特定のタイプのタスクを実行します。

2層パターンは、クライアントとサーバーを表します。

このシナリオでは、クライアントとサーバーが同じマシン上に存在する場合と、2つの異なるマシン上に存在する場合があります。次の図は、クライアントがクライアント層にあるWebサーバーと対話する一般的なWebアプリケーションのシナリオを示しています。この層には、プレゼンテーション層ロジックと必要なビジネス層ロジックが含まれます。 Webアプリケーションは、データ層ロジックを含むデータベース層をホストする別のマシンと通信します。

Layers vs Tiers

レイヤーとティアの利点:

  • レイヤー化は、コードの保守性を最大限に高め、さまざまな方法でデプロイされた場合のアプリケーションの動作を最適化し、特定のテクノロジーまたは設計の決定が必要な場所を明確に区別するのに役立ちます。

  • レイヤーを個別の物理層に配置すると、複数のサーバーに負荷を分散することでパフォーマンスが向上します。また、より機密性の高いコンポーネントとレイヤーを異なるネットワークまたはインターネットとイントラネットに分離することにより、セキュリティの面でも役立ちます。

1層アプリケーションは、3層アプリケーションにすることができます。

8
TryinHard

はい、私の親愛なる友人は正しく言いました。層はアプリケーションの論理パーティションであり、層はシステム層パーティションの物理パーティションであり、層パーティションに依存しています。アプリケーションが1台のマシンで実行されるのと同じように、3層アーキテクチャに従うため、層アーキテクチャには層アーキテクチャが存在すると言えます。簡単に言うと、3層アーキテクチャは1台のマシンに実装でき、1層アーキテクチャと言えます。各層を別々のマシンに実装すると、3層アーキテクチャと呼ばれます。レイヤーは複数の層を実行することもできます。相互に簡単に通信するためのレイヤーアーキテクチャ関連コンポーネント。
以下のアーキテクチャに従ってください

  1. プレゼンテーション層
  2. ビジネスロジック層
  3. データアクセス層

クライアントは「プレゼンテーションレイヤー」と対話できますが、セキュリティ上の理由により、ビジネスロジックレイヤーのパブリックコンポーネントなどの下位レイヤーのパブリックコンポーネントにアクセスします。
Q *レイヤーアーキテクチャを使用する理由レイヤーアーキテクチャを実装すると、アプリケーションの効率が向上するためです。

==>セキュリティ

==>管理性

==>スケーラビリティ

アプリケーションを開発した後、dbmsを変更したり、ビジネスロジックを変更したりする必要がある場合など、他のニーズはすべて必要です。

Q *ティアアーキテクチャを使用する理由

各層を物理的に実装すると効率が向上するため、層アーキテクチャを使用しないと、階層アーキテクチャを実装できません。別個の層を実装するための別個のマシンと別個の層は1つ以上の層を実装するため、これを使用します。
フォールトトレランスの目的で使用します。 ==>メンテナンスが簡単。

簡単な例

商工会議所で開かれている銀行のように、従業員を分類する:

  1. ゲートキーパー
  2. 現金の人
  3. 銀行制度を導入する責任がある人
  4. 部長

それらはすべてシステムの関連コンポーネントです。

ローンの目的で銀行に行く場合は、まずゲートキーパーが笑顔でドアを開け、その後ローンのすべてのスキームを紹介する人の近くに行き、その後マネージャーのキャビンに行き、ローンを渡します。その後、最後にレジのカウンターテイクローンに行きます。これらは銀行のレイヤーアーキテクチャです。

ティアはどうですか?銀行の支店が町で開き、その後別の町で、その後別の町で開きますが、各支店の基本的な要件は何ですか

  1. ゲートキーパー
  2. 現金の人
  3. 銀行制度を導入する責任がある人
  4. 部長

レイヤーと層の概念はまったく同じです。

5
atul

レイヤーを使用して、ソリューションのコンポーネント内のアーキテクトまたはテクノロジースタックを記述します。通常、ネットワークまたはプロセス間通信が関係する場合、階層を使用してこれらのコンポーネントを論理的にグループ化します。

4
Brian Matthews

Microsoft Application Architecture Guide 2 の以下の説明が気に入っています

レイヤーは、アプリケーションの機能とコンポーネントの論理的なグループ分けを記述します。一方、層は、別個のサーバー、コンピューター、ネットワーク、または遠隔地にある機能とコンポーネントの物理的な分布を表します。層と層の両方が同じ名前のセット(プレゼンテーション、ビジネス、サービス、およびデータ)を使用しますが、層のみが物理的な分離を意味することに注意してください。

4
sanjaykumar81

レイヤーはアプリケーション内のrelated-functionality[code]の論理的な分離であり、レイヤー間の通信は明示的で疎結合です。 [プレゼンテーションロジック、アプリケーションロジック、データアクセスロジック]

階層layers [個々のサーバーでホストされる]の物理的な分離です個々のコンピューター(プロセス)で。

enter image description here

図に示すように:

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をスケールアップできます他の層に触れる
Maintainability:Webデザイナーは、他のレイヤーに触れることなく、View-codeを変更できます。層。
簡単にUpgradeまたはEnhance[例:アプリケーションコードを追加したり、ストレージエリアをアップグレードしたり、さらにモバイル、タブレット、PCなどの個別のデバイスに複数のプレゼンテーションレイヤーを追加]

3
Yash

技術的には、Tierはコードの実行に必要な最小限の環境の一種です。

例えば。仮に3層アプリを実行できます

  1. OSのない3台の物理マシン。
  2. OSのない3つの仮想マシンを持つ1つの物理マシン。

    (これは3(ハードウェア)層のアプリでした)

  3. 3つの異なる/同じOSを備えた3つの仮想マシンを持つ1つの物理マシン

    (これは3(OS)層アプリでした)

  4. 1つのOSと1つのAppServerを備えた1つの仮想マシンを持つ1つの物理マシン

    (これは3(AppServer)層アプリでした)

  5. 1つの物理マシンと1つの仮想マシンと1つのOSと1つのAppServer、3つのDBMS

    (これは3(DBMS)層アプリでした)

  6. 1つのAppServerと1つのDBMSを含む1つのOSを備えた1つの仮想マシンと1つのExcelブックを含む1つの物理マシン。

    (これは3(AppServer)層アプリでした)

Excelブックは、VBAコードを実行するために最低限必要な環境です。

これらの3つのワークブックは、単一の物理コンピューターまたは複数のコンピューターに配置できます。

実際、アプリの説明コンテキストで「Tier」と言うとき、人々は「OS Tier」を意味することに気付きました。

つまり、アプリが3つの異なるOSで実行されている場合、その3層アプリです。

したがって、アプリを説明するための教育的に正しい方法は

「1から3層に対応、2層で実行」アプリ。

:)


レイヤーは、アプリに関する機能の職務分離に関する単なるコードの種類です(例:プレゼンテーション、データ、セキュリティなど)

0
Dimitri KOH

プレゼンテーション、サービス、データ、ネットワークレイヤーについて話すとき、レイヤーについて話します。 「それらを個別にデプロイする」とき、層について話します。

層はすべてデプロイメントに関するものです。このように考えてください。Angularで作成されたフロントエンドを持つアプリケーションがあり、MongoDBとしてのバックエンドと、フロントエンドとバックエンドの間でやり取りする中間層があります。したがって、このフロントエンドアプリケーション、データベースアプリケーション、および中間層がすべて個別にデプロイされる場合、3層アプリケーションと言います。

利点:バックエンドを将来的に拡張する必要がある場合、バックエンドを個別に拡張するだけでよく、フロントエンドを拡張する必要はありません。

0
Aarzoo Trehan

レイヤーは概念的なエンティティであり、ソフトウェアシステムの機能を論理的な観点から分離するために使用されます。システムを実装するとき、異なる方法を使用してこれらのレイヤーを整理します。この状態では、それらをレイヤーではなくティアと呼びます。

0
gst