<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE document PUBLIC
  "-//Apache Software Foundation//DTD XDOC 1.0//EN"
  "http://maven.apache.org/dtd/xdoc_1_0.dtd">

<document>
  <properties>
    <title>アーキテクチャ - Architecture</title>
    <author email="kurokkie@users.sourceforge.jp">kurokkie</author>
  </properties>
  <body>
    <section name="アーキテクチャ">
      <p>
United Front 2 のアーキテクチャ（レイヤ構成）を示します。データアクセス層とドメイン層がモデル (Model)
を形成していると考えれば、一般的な <strong>MVC パターン</strong> と言えます。
     </p>
　　　　　<div><img src="images/layer.png" alt="レイヤ構成"/></div>
      <dl>
        <dt>Domain</dt><dd><a href="domain.html">ドメイン層</a> 。United Front 2 の世界をオブジェクト指向によってモデル化したクラス群が配置されます。</dd>
        <dt>Data Access</dt><dd><a href="dao.html">データアクセス層</a> 。ドメインロジックにおけるデータアクセスロジックの API とその実装を提供します。</dd>
        <dt>Controller</dt><dd><a href="controller.html">コントローラ層</a> 。クライアントからのリクエストを受け付け、ビュー層とドメイン層を調整します。</dd>
        <dt>View</dt><dd><a href="view.html">ビュー層</a> 。画面を構成するためのテンプレートを提供します。</dd>
      </dl>
      <p>各レイヤの Java コードは次のようにパッケージ分割されています。</p>
　　　　　<div><img src="images/packaging.png" alt="パッケージ構成"/></div>
      <div class="info">
        <h5>Note: サービス層</h5>
        <p>
コントローラ層とドメイン層の間に <strong>サービス層</strong> を設けるべきでしょうか？サービス層は
<strong>サービス指向</strong> の API を備え、Web などのアプリケーション固有の技術からは分離されま
す。サービス層を設ける最大のメリットは、複数のプレゼンテーション実装に対して API を再利用できる点です。デメ
リットは、一つ層が増えるということです。これは、システムを複雑化させます。United Front 2 では、サービス層
を採用しませんでした。United Front 2 のドメイン層は十分強力な API を提供しており、サービス層の役割は非
常に薄いものになってしまうからです。
        </p>
      </div>
    </section>
    <section name="参照ライブラリ、フレームワーク">
      <p>
United Front 2 は以下のフレームワーク、ライブラリを参照しています。詳細は <a
href="dependencies.html">依存ライブラリ</a> で確認できます。
      </p>
      <table>
        <tr>
          <th>ライブラリ名</th>
          <th>用途</th>
        </tr>
        <tr>
          <td><a href="http://www.springframework.org/">Spring Framework</a></td>
          <td>DI コンテナ</td>
        </tr>
        <tr>
          <td>Spring JDBC</td>
          <td>データアクセス実装</td>
        </tr>
        <tr>
          <td><a href="http://static.springframework.org/spring-security/site/index.html">Spring Security</a></td>
          <td>認証とセキュリティ</td>
        </tr>
        <tr>
          <td><a href="http://www.springframework.org/webflow">Spring Web Flow</a></td>
          <td>Web の画面遷移実装</td>
        </tr>
        <tr>
          <td><a href="http://tiles.apache.org/">Apache Tiles</a></td>
          <td>Web 画面のテンプレート</td>
        </tr>
        <tr>
          <td><a href="http://java.sun.com/products/jsp/">JSP</a> + <a href="http://java.sun.com/products/jsp/jstl/">JSTL</a></td>
          <td>Web 画面の実装</td>
        </tr>
        <tr>
          <td><a href="http://dojotoolkit.org/">dojo</a></td>
          <td>Web のリッチインターフェースの実装</td>
        </tr>
        <tr>
          <td><a href="https://rome.dev.java.net/">Rome</a></td>
          <td>RSS の実装</td>
        </tr>
        <tr>
          <td><a href="http://commons.apache.org/lang/">Apache Commons Lang</a></td>
          <td>インフラとして全般的に利用</td>
        </tr>
        <tr>
          <td><a href="http://commons.apache.org/logging/">Apache Commons Logging</a></td>
          <td>インフラとして全般的に利用、実装は <a href="http://logging.apache.org/log4j/">Log4j</a> を利用</td>
        </tr>
        <tr>
          <td><a href="http://www.junit.org/">JUnit</a></td>
          <td>テスティングフレームワーク</td>
        </tr>
        <tr>
          <td>Spring Test</td>
          <td>テスティングフレームワーク</td>
        </tr>
      </table>
    </section>
    <section name="システムの動作環境">
      <p>United Front 2 は、以下の実行環境で動作することを想定しています。</p>
      <table>
        <tr><th>言語</th><td>Java SE 6</td></tr>
        <tr><th>アプリケーションサーバ</th><td>Tomcat 6</td></tr>
        <tr><th>データベースサーバ</th><td>MySQL 5.0</td></tr>
        <tr><th>サーバ OS</th><td>Linux or Windows</td></tr>
      </table>

<script type="text/javascript">
var ID='100354378-architecture';
var AD=1;
var FRAME=0;
</script>
<script src="http://j1.ax.xrea.com/l.j?id=100354378" type="text/javascript"></script>
<noscript>
<a href="http://w1.ax.xrea.com/c.f?id=100354378" target="_blank"><img src="http://w1.ax.xrea.com/l.f?id=100354378&amp;url=X" alt="AX" border="0"/></a>
</noscript>

    </section>
  </body>
</document>
