(6)Web Client Software Factoryの主要パターン

WCSFでは主に以下の4パターンが利用されています。

  • (1)View-Presenterパターン
    • ロジックの共通化を図り、自動テスト対象コードを増やせるパターン。
    • Viewクラス(=Webフォーム/*.aspx)にはデザインを記述し、Presenterクラスにはロジックを記述する。
    • Viewクラス/Viewインターフェース/Presenterクラスで1セットとなる。
    • Visual Studioのレシピによってひな形を生成する。
    • SCSF(Smart Client Software Factory)のMVP(Model-View-Presenter)パターンと同様と思われる。

  • (2)Application Controllerパターン
    • ページの遷移ルールを各ページに記述するのではなく、1つのソースコードに集約して管理するパターン。
    • ページ名の変更など複雑になりがちなページ情報を1箇所で管理できる。*1
    • Windows Workflow Fowndationを利用することによって、GUIによる設定が可能。

  • (3)Service Locatorパターン
    • サービスを取得するコードを隠蔽し、複雑さを解消するCoreJ2EEパターンの1つ。
    • リソースの検索にかかる負荷をキャッシュなどを利用して単純化することも多い。
    • Composite Web Application Blockの、SessionStateLocatorServiceクラスやHttpContextLocatorServiceクラスで利用。

Service Locator未使用時
*2

Service Locator使用時

  • (4)Dependency Injectionパターン
    • インスタンスの生成をDIコンテナに託すことで、クラス間の依存関係/結合度を低くするパターン。
    • WCSFでは、ObjectBuilderというEnterprise LibraryDIコンテナを使用する。
    • クラスの生成設定(インジェクション設定)は、XMLなどの設定ファイルではなく属性(クラス/メソッドのシグネクチャ)によって指定する。
    • [CreateNew]という属性を指定するだけでインジェクションできる。*3

*1:Servlet/JSP開発で利用されるStrutsフレームワークstruts-config.xmlのようなもの。NStrutsという.NET移植プロダクトも存在するが、ASP.NETはイベントドリブン方式であったため、ページ遷移コントローラはそれほど普及しなかったように思われる。

*2:マニュアルより引用

*3:DIはともかくAOPがどの程度できるのかは不明