- 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 だ。