3層クライアントと2層クライアント、どっちが良いの?

コンピュータシステム

今回は多層アーキテクチャのお話です!

まず前段の知識として必要なのがシステム構成ですが、システムの構成を大きく分類すると、次のように3つに分けられます。

メインフレーム

大型汎用機・ホストなんて呼びますね。

クライアント・アプリケーション(クライアントサーバシステム)

オフコンやクラサバと呼ぶ種類がありますね。

Webアプリケーション

クライアントサイドやサーバサイドという種類がありますね。

Webアプリケーションやクライアントサーバシステムにおいては、3層クライアント、2層クライアントという考え方があります。今回は2層と3層の違いをまとめてみました。

 

3層クライアント、2層クライアントの違いは?

実は現在の主流は3層クライアントです!という結論みたいなことを書いてしますのですが、先ずはこの層の中には何があるか説明します。

層の中身

アプリケーションを製作する際に大きく部品を三つに分けることができます。

① プレゼンテーション層(ユーザーインターフェース)
② ファンクション層(ビジネスロジック)
③ データ層(データベース)

※ファンクション層はアプリケーション層なんて呼び方もします。

この3つの層を繋げてクライアントからの支持をサーバで処理して、サーバの処理をクライアントに返したりしています。

イメージとしては以下の通りですが、クライアントに近い部分がプレゼンテーション層、サーバ(データベース)に近い部分がデータ層で、その間を取り持つ部分としてファンクション層があります。

3層の機能間イメージ

ポイントは3つの層の関係性です、プレゼンテーション層はデータ層にはアクセスしません。つまり、それぞれの層が直線的に情報が繋がります。これを3層アーキテクチャと呼びます。

 

3層と2層の違いと使い方

では、いよいよ3層クライアントと2層クライアントの違いとなりますが、実はここまで理解すれば後は簡単です。

◎3層クライアント
クライアント側(PC側)に「プレゼンテーション層」があり、サーバ側に「ファンクション層とデータ層」があります。
◎2層クライアント
クライアント側(PC側)に「プレゼンテーション層とファンクション層」があり、サーバ側に「データ層」があります。

 

3つの層が、クライアント側なのかサーバ側にあるのかで、呼び方が違うのですね。

3層クライアントの場合はサーバ側にファンクション層の仕組み(アプリケーションサーバ)とデータ層の仕組み(データベースサーバ)が分かれていますので、実際はサーバが二つあるようなイメージですね。

ざっくり分けると、2層と3層の違いはアプリケーションサーバの有無なのかなとも思います。

2層構成は3層構成が主流となる以前によく利用されていた方式のようです。2層構造ではクライアント側やバックエンド側にビジネスロジックが実装されており、WebサーバでJava、PHP、Rubyなどの処理を含めたすべての処理を行っていたようですね。

そして、3層クライアントのメリットは以下のようなものがあります。

・処理結果をクライアントに返すだけなので、ネットワーク上を流れるデータ量が軽減できる
・ビジネスロジックに変更があってもサーバ側だけの変更で済む(クライアント1台1台への適用は不要)
・サーバ側でデータベースとのやり取りが完結するので、データベースをロックする時間が短くて済む

 

それぞれのシステム構成でのパターンを整理すると次のようになります。

★Webアプリケーションのパターン
【3層の場合】
・Webブラウザ、Webサーバ : プレゼンテーション層
・Webアプリケーション : ファンクション層
・データベース : データ層

【2層の場合】
・Webブラウザ、Webサーバ : プレゼンテーション層、ファンクション層
・データベース : データ層

★クライアントサーバ(クラサバ)システムのパターン
【3層の場合】
・クライアントアプリ : プレゼンテーション層
・アプリケーションサーバ : ファンクション層
・データベース : データ層

【2層の場合】
・クライアントアプリ : プレゼンテーション層、ファンクション層
・データベース : データ層

 

MVCモデルとの違いは?

3層という言葉を調べているとよくMVCモデル(アーキテクチャ)という言葉が出てきますが、これは3層アーキテクチャとは全く別のアーキテクチャのことです。

詳しくはwiki(多層アーキテクチャ)をご参考にして頂ければと思いますが、大きな違いはMVCモデルは3つの部品がそれぞれ相互に通信するところです。JAVAでいうところのViewが「jsp」、Controllerが「Servlet」、Modelが「EJB」みたいな組み合わせで、jspがEJBとやり取りするこものあったりします。

MVCモデル(アーキテクチャ)

 

まとめ

今回はアプリケーションのアーキテクチャである多層アーキテクチャの3層クライアントと2層クライアントの違いに関して調べてみました。

現在は3層クライアントの方が主流のようですが、2層クライアントは専用のビューワーを導入することができるので、高度な画面構成や表現の仕組みが可能で、利用箇所や台数が限られる専用のシステム構成の場合は2層クライアントを採用することもあるようですね。

以上です!

 

参考URL)
・Webアプリケーションサーバとは?3層構成の仕組みと導入のメリット(発注ラウンジ)

 

コメント

タイトルとURLをコピーしました