Saturday, July 22, 2006

J2EE アプリケーションを構成する層(レイヤ)

J2EE アプリケーションを構成する層(レイヤ)は以下のように分けられる。


  • Web 層
  • アプリケーション層
  • EIS(Enterprize Infomation System)層


Web 層はプレゼンテーション層といえる。HTTP 等のリクエストを受け付け、アプリケーション層が提供するビジネスロジックを呼び出し、レスポンスを返す。

Web 層を実現するのが、サーブレットコンテナなどだ。Tomcat などがそうだ。

前述したように、ビジネスロジックを実装しているのがアプリケーション層だ。EJB コンテナなどが、これに該当する。アプリケーションサーバとよばれ、IBM の Websphere とか BEA の WebLogic などの製品がある。これらはサーブレットコンテナも含んでおり、Web 層を兼ねることもできる。

EIS 層にあるのが、リレーショナルデータベースや CRM(Customer Relationship Management)などであり、エンタープライズリソースへのアクセスを提供する。

これらの層は、物理的に分かれている場合もあれば、1台のサーバの中で論理的にのみ分かれている場合もある。

Web 層とアプリケーション層との通信には、通常 RMI over IIOP(RMI/IIOP)が使われる。RMI は Java に特化したリモートメソッド呼び出しの規約であり、IIOP は言語やプラットフォームに依存しない分散コンポーネントどうしの TCP/IP を使った通信プロトコルである。IIOP 上で RMI を使用することにより、Java 以外のコンポーネントともやり取りができるようになる。

EIS 層とアプリケーション層は、EIS 層のリソース固有のプロトコルを使って通信する。EIS 層の RDB と通信するなら、JDBC ドライバが使用されるだろう。

小規模なアプリケーションだと、アプリケーション層が存在しないことがある。つまり、EJB コンテナなどが使用されないことがある。この場合、Web 層でビジネスロジックを実装することになるのだが、プレゼンテーションとビジネスロジックをきちんと分けた方がよい。適切なデザインパターンを使えば実現できる。

たとえば、DTO パターンは、アプリケーション層と Web 層との通信に、ビジネス層の疎粒度のビューとなる DTO(Data Transfer Object)を使うというものだ。これにより、通信量を減らすことができた。この DTO に相当するものを Web 層でビジネスロジックを実装するときにも使うことができる。

DTO は、POJO である Java Bean だ。

No comments: