17

私はちょうど次の文に出くわしました:

業界が3層モデルからn層モデルに移行するにつれて、オブジェクトの関係インピーダンスの不一致がより一般的になりました。

しかし、3層とn層の違いについての簡潔な説明は見つかりません。私は3層が何であるかを知っており、n層は1つ以上の層を追加するだけだと思います。これらの追加の層がどうなるかはわかりません。誰かが短い説明または単に良いリンクを持っているなら、それは大いにありがたいです。

4

9 に答える 9

26

開発では、ティアを「責任のレベル」の抽象化として理解します。

このようなレベルの責任は、概念をグループ化して、現実の一貫したセマンティックビュー、または少なくとも現実に類似したものを提供します。

そのような意味で、いわゆる3層モデルまたはn層モデルは、その概念の単なる異なる実装です。

ティアの良い例は、責任が適切な人々に注意深く向けられているジェラキカルモデルに従います。たとえば、一般的なビジネスには、ビジネスの層を表す商業、マーケティング、システム、開発、およびテスト部門があります。そうすれば、責任は明確になり、開発は製品を提供し、テストはそれをテストし、マーケティングはそれを宣伝し、コマーシャルはそれを販売します。

この比喩は、3つの層が識別される3層モデルで最初にアプローチされました。通常、この層は、データベースの通信と抽象化を担当するデータベース抽象化レイヤー、ビジネスプロセスを記述するルールを保持するビジネスルールレイヤー、およびユーザーとシステムの対話を抽象化するユーザーインターフェイスレイヤーです。

このように、各レイヤーの責任の役割があり、ユーザーがシステムと対話する必要がある場合、ホールシステム全体で混乱することなく、1つのレイヤーと通信します。

N層は、特定のニーズに対応するためにより多くの層を使用することにより、以前の概念の進化を表しています。通常、ユーザーインターフェイスレイヤーとデータベース抽象化レイヤーは、ビジネスルールレイヤーがさらに洗練されている間、それらの役割がかなり明確であるため、変更されません。

そのために、私たちは常に問題の特徴と、現在および将来提供したい機能を考慮に入れています。たとえば、アプリケーションがスマートクライアントと連携する必要がある場合、またはアプリケーションがスマートクライアントと連携することが予測される場合、ビジネスレイヤーは通常、プロキシレイヤーとバックエンドレイヤーに分割され、最初にコールをルーティングする必要があります。

結局のところ、重要なのは、異なるレイヤー間で責任を抽象化し、関連するすべての操作を同じ場所のセマンティックビューから一元化するという概念です。

さらに、n層アーキテクチャでは、開発者間でこれらの「責任」を分散できることに注意してください。そうすれば、特定のチームがデータベース抽象化レイヤーに対して責任を持つことができ、他のチームはプロキシレイヤーで作業し、別のチームはグラフィックス抽象化レイヤーで作業します。チームのメンバーがデータベースにアクセスする必要がある場合、彼はDALドキュメントを検索し、提供されている機能の1つを使用するか、DALチームに必要な機能を提供するように依頼します。これにより、データベースに直接対応するのではなく、人々を通じて対応できるようになります。データベース自体の設計と複雑さをよく知っています。

于 2009-01-18T18:27:43.270 に答える
11

層をケーキの層のように見た場合。 各レイヤーには独自の成分があり、独自のことを行います。各アプリケーションの層は、その上または下の層とのみ対話します。

3段とは、ケーキが3段になっていること。通常、データは一番下にあり、次にアプリケーション ロジック層 (PHP/ruby/etc)、そしてプレゼンテーション層 (html) が一番上にあります。

n層アーキテクチャを持つということは、それに複数の層を重ねて設計することを意味します。作成するレイヤーの数は、作成方法によって異なります。

大規模なアプリケーションや Web アプリケーションでは、より理にかなっているようです。

私は通常、5層のアプリケーションになります。各層は、その上または下の層とのみ対話できます。これにより、アプリケーション全体で優れた拡張性と標準化を実現できます。

クライアント層

ウェブブラウザ


プレゼンテーション層

HTML をレンダリングします - Coldfusion/Flash/Ruby/PHP など。


ビジネスロジック層

必要に応じてプロセスと計算を実行します - Coldfusion/Flash/Ruby/PHP など。


データ統合層

(私の開発言語、ストアド プロシージャなどからのクエリ)


データ層

(データベース - MySQL など)

于 2009-01-18T19:53:54.203 に答える
8

引用はこのcodeprojectページからのもののようです。また、Webサービス、JavaScript、ワークフローなどを含めるようにn層を説明するのにもかなり良い仕事をしているようです。3層モデルに含まれるとは限らないすべてのもの。

于 2009-01-18T18:01:05.817 に答える
7

n層は、nが任意の数であることを意味します。n= 3の場合、n層と同じです。

3層の通常の定義は、プレゼンテーション、ロジック、およびデータ(任意の順序)です。そうです、SOAは、データ層、ロジック層、およびロジックとデータ層の両方に存在する場合があるため、新人を混乱させる可能性があります。

主題全体は...主観的です。いくつかの層が必要な場合は、それをn層と呼びます。n= 7であることがわかっている場合は、7層またはn層と呼びます。

于 2009-01-18T18:17:28.920 に答える
3

ねえ、私は3層の定義さえも得ることができません。クライアントのJavaScriptを割引する場合もあれば、クライアントとクライアントのWebブラウザーのJavaScriptを別の層と見なす場合もあります。したがって、データベース=ティア3、Webサーバー=ティア2、クライアントWebブラウザー=ティア1と仮定すると、データベースと通信するASPページは3ティアになる可能性があります。それ以外の場合は、Webサーバー=ティア1、ミドルウェア=ティア2、データベース=ティア3。それは本当に誰が定義/本を書いているかに依存します。

一般に、n層は、ミドルウェア層をさらに分割することを指しているようです。しかし、それを除けば、一貫した定義は見当たりません。

于 2009-01-18T17:56:53.877 に答える
1

その引用はどこからですか?彼らはどの業界を指しているのですか?この種のステートメントに意味があるのはSOAだけなので、これはSOAと関係があると想像する必要があります。

この種の発言をする私が聞いたほとんどの人は、サービス指向ドメインでは、各サービスはどういうわけか独自の層であると信じています。ほとんどの場合、これらの異なるサービスは、論理的に共通の3つの層(プレゼンテーション、ロジック、およびデータ)にグループ化できるため、私は同意しません。しかし、繰り返しになりますが、そのすべてはかなり主観的です。

于 2009-01-18T17:49:26.497 に答える
1

アプリケーションアーキテクチャに関するこのWikiブックの章は、レイヤー、ティア、および使用する必要があるものを決定するための簡単なガイドです。

于 2012-03-27T15:33:47.090 に答える
1

こんにちは、このリンクをチェックしてください。これに関する良いアイデアを得ることができます

http://msdn.microsoft.com/en-us/library/ms973829.aspx

于 2009-12-16T15:23:00.400 に答える
0

文脈の中で文章を見ることなく、私はそれがサービスとミドルウェアの爆発的な増加を指していると思います。

于 2009-01-18T17:43:53.700 に答える