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


214

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


3
ソフトウェアの世界で出会ったほとんどすべての人が、これら2つの用語をまったく同じように交換可能に使用しています。
RBT

回答:


260

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

ただし、物理は、コードが実行される場所についてのみです。具体的には、層は、レイヤーがデプロイされ、レイヤーが実行される場所です。つまり、層はレイヤーの物理的な配置です。

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


43

この問題に関するスコットハンセルマンの投稿をご覧ください。http//www.hanselman.com/blog/AReminderOnThreeMultiTierLayerArchitectureDesignBroughtToYouByMyLateNightFrustrations.aspx

ただし、「スコットワールド」(できればあなたの世界でもあります)では、「層」はデプロイメントの単位であり、「層」はコード内での責任の論理的な分離であることに注意してください。「3層」システムを持っていると言うかもしれませんが、それを1つのラップトップで実行しています。「3層」システムを持っていると言うかもしれませんが、データベースと通信するASP.NETページしかありません。精度には力があります。


36

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

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

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

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

各DLLを別のマシンに展開することを選択した場合、3つの層と3つの層があります。

したがって、レイヤーは論理的な分離であり、層は物理的な分離です。また、層は層の物理的な配置であるとも言えます。


3つの異なるサーバーに3つのレイヤー(DLL)を展開できるというあなたの回答から私が理解したこと。正しい ?プレゼンテーションレイヤーでビジネスロジックレイヤーを参照する方法を教えてください。
Mazhar Khan

@MazharKhanサービスを使用して、ビジネスレイヤーの機能をプレゼンテーションレイヤーに公開したい場合があります
Amit Saxena '30

32

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

= あなたのコードの一部、アプリケーションがケーキがある場合、これはスライスです。

ティア = 物理マシン、サーバーを。

層は1つ以上のレイヤーをホストします。


レイヤーの例:

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

層:

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

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

たとえば、Webサイト自体(プレゼンテーションレイヤー)をホストする1台のマシン、より機密性の高いコード(ビジネスレイヤー、データベースアクセスレイヤーなど)をホストする、より安全なマシン。


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


13

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


10
  1. 平易な英語でTierは、「上下に配置された構造の一連の行またはレベルのそれぞれ」を指しますが、Layer「表面または物体をカバーする材料のシート、数量、または厚さ、通常はいくつかのうちの1つ」を指します」

  2. 層は、コード/プロセスが実行される物理的なユニットです。例:クライアント、アプリケーションサーバー、データベースサーバー。

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

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

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

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

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

層と層

レイヤーと層の利点:

  • 階層化により、コードの保守性を最大化し、さまざまな方法で展開したときのアプリケーションの動作を最適化し、特定のテクノロジーまたは設計の決定を行う必要がある場所を明確に区別できます。

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

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


6

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

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

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

==>セキュリティ

==>管理性

==>スケーラビリティ

アプリケーションを開発した後、dbmsを変更したり、ビジネスロジックを変更したりする必要がある場合など、その他の必要性もあります。

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

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

簡単な例

商工会議所で開かれた銀行のように、従業員は次のカテゴリに分類されます。

  1. ゲートキーパー
  2. 現金の人
  3. 銀行スキームを導入する責任がある人
  4. マネージャー

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

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

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

  1. ゲートキーパー
  2. 現金の人
  3. 銀行スキームを導入する責任がある人
  4. マネージャー

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


素晴らしい説明
Dulaj Kulathunga

6

レイヤー アプリケーション内の論理的な分離であり、レイヤー間の通信は明示的であり、疎結合です。【プレゼンテーションロジック、アプリケーションロジック、データアクセスロジック】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などの個別のデバイス用の複数のプレゼンテーションレイヤーの追加も可能]


6

マイクロソフトアプリケーションアーキテクチャガイド2の以下の説明が好き

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


5

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


1

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

たとえば、仮想的に3層アプリを実行できるとします。

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

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

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

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

  4. 1つの物理マシン、1つの仮想マシン、1つのOS、ただし3つのAppServer

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

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

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

  6. 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層で実行」アプリ。

:)


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


0

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


0

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

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

利点:将来的にバックエンドをスケーリングする必要がある場合は、バックエンドを個別にスケーリングするだけでよく、フロントエンドをスケールアップする必要はありません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.