アーキテクチャ・ジャーナル

CAB および SCSF を使用したコンポジット スマート クライアントの設計

Mario Szpuszta
2009/03/16
Page1 Page2 Page3 Page4

モジュールへの WorkItem のパッケージ化

 WorkItem を識別したら、これらをモジュールにパッケージ化する必要があります。モジュールは、CAB ベースのスマート クライアントを展開するための単位です。基本的に、同じビジネス スペースに対応している論理的に関連した WorkItem を 1 つのモジュールにパッケージ化します。図 4 に示す元のユース ケース図を使用した場合は、図 8 に示すように、株式コンサルテーションに 1 つのモジュール、株式ビジネス WorkItem に 1 つのモジュール、および株式管理に最後のモジュールを作成します。ただし、WorkItem をモジュールにパッケージ化する上での決定には、追加の条件が存在します。これらの追加条件は、次のとおりです。

  • セキュリティ
  • 構成可能性
  • 再利用性
図 8: モジュールへの WorkItem のパッケージ化

 まず、コンポジット スマート クライアントの起動時に動的に読み込む必要のある CAB モジュール一覧を含むプロファイル カタログで、モジュールを構成します。これらのモジュールは、ユーザーの役割メンバシップに基づいて構成できます。したがって、WorkItem をモジュールにパッケージ化する方法を決定する際は、セキュリティが中心的な役割を担います。上のユースケースに示すように、ユーザーには株式の管理が許可されていないものとします。ただし、新しい株式書類の作成や株式書類のロックが許可されていないユーザーでも、タスクの実行中にこれらの書類を検索する必要が必ずあります。銀行の従業員がバック オフィスを使用できないような方法で株式管理モジュール (図 8 のパッケージ化に従った “Find Stock” WorkItem を含む) を構成した場合、これらの従業員は “Find Stock” WorkItem を使用することも許可されません。ただし、これらの従業員は他のタスクを実行するためにこの WorkItem を必要としているので、この WorkItem を個別のモジュールにパッケージ化すると役立ちます。他の WorkItem とは独立して WorkItem を再利用する必要がある場合は、これらを個別のモジュールにカプセル化するのが適切です。同様に、WorkItem を個別に構成する必要がある場合も、これらを個別のモジュールに配置します。

 図 8 に示す例では、これは “株式の検索”、“取引の検索”、および “株式注文コレクション” の WorkItem に当てはまります。このため、図 9 に示すように、これらを個別のモジュールにカプセル化すると役立ちます。

図 9: セキュリティおよび再利用性の要件に従った新しいパッケージ化

 図 9 に従って個別のモジュールにアウトソーシングされる一部の WorkItem の構成、セキュリティ、および再利用性の要件が同等 (またはほとんど同じ) である場合は、これらを 3 つのモジュールではなく、1 つのモジュールにパッケージ化にすることもできます。たとえば、すべての “X の検索” WorkItem のセキュリティ、構成、および再利用性の要件が同等である場合は、すべての “X の検索” WorkItem を含む 1 つのモジュールを作成できます。

 最後に、各モジュールは個別の .NET アセンブリになることを認識することが重要です。シェルおよびインフラストラクチャ サービスを作成し、すべての WorkItem を、そのパッケージ化構造も含めて識別すると、開発チームがモジュールとその WorkItem の開発を開始できるようになります。

スマート クライアント ソフトウェア ファクトリ

 CAB は優れたインフラストラクチャを備えていますが、その習得には時間がかかる場合があります。また、CAB を使用した作業では、WorkItem ベース クラスから継承されたクラスを作成してユース ケース コントローラを作成したり、コントローラ クラス、ビュー クラス、およびモデル クラスを手動で作成するなどの数多くの手作業での手順が開発者に求められます。大規模なチームが関与する実世界のプロジェクトでは、開発者ごとに好みや作業スタイルが異なるので、これらの手順を完了するにあたって数多くの異なる方法が使用されることがあります。

 SCSF (スマート クライアント ソフトウェア ファクトリ) は、これらのタスクを自動化および合理化するための Visual Studio 2005 Professional (以降) の拡張機能です。SCSF は、同じく Microsoft Patterns & Practices チームが提供しているガイダンス自動化拡張 (GAE: Guidance Automation Extensions) に基づいています。GAE は、プロジェクトに共通するディレクティブやガイドラインの施行と保証を主な目標とする一般的な開発タスクを、アーキテクトやリード開発者が自動化するための拡張機能を Visual Studio で簡単に作成可能にするインフラストラクチャです。SCSF は、CAB ベースのスマート クライアントに対してこのようなガイドラインを提供し、新しいモジュールの作成、MVP パターンに基づいたビューの作成、イベントの公開やサブスクリプションなど作業を自動化します。SCSF および GAE の詳細については、次の MSDN の記事を参照してください。

 SCSF は、Visual Studio 2005 におけるその統合および自動化された開発者タスクを通じて、アーキテクチャに関する決定事項に従いながら CAB ベースのスマート クライアントを作成し、開発者の生産性を向上させる上で開発者をサポートする、非常に便利なツールです。

まとめ

 マイクロソフトの Patterns & Practices チームでは、コンポジット UI アプリケーション ブロックおよびスマート クライアント ソフトウェア ファクトリを通じて、コンポジット スマート クライアントを作成するための強力なインフラストラクチャを提供しています。シェルによって動的に読み込まれるモジュールにパッケージ化される WorkItem を識別するためのユース ケース指向の分析プロセスは、大規模なコンポジット スマート クライアントに対し、再利用可能な一元的機能を識別するための強力な手段をもたらします。これにより、重複した実装を回避できるため、保守のコスト削減につながります。CAB はそのフレームワーク内で必要なベース クラスすべてをもたらしますが、一方のスマート クライアント ソフトウェア ファクトリは、特定の開発者のタスクの自動化に必要なガイダンス パッケージを追加し、開発者にガイダンスを提供します。これらすべてを組み合わせて、開発者が敏捷で生産性の高い方法でリッチなコンポジット スマート クライアントを作成できるようにしています。

 RACON Software GmbH では、150 を超える WorkItem が共通の銀行デスクトップ フレームワークに統合されている、最初の大規模な一連のモジュールを現在実装しています。銀行デスクトップ フレームワークの最初のレビューでは、特に基幹業務開発者の開発作業をできる限り簡単にする上で、設計とインフラストラクチャのアプローチがうまく機能することが確認されています。使用したシェル拡張サービス パターンにより、Windows Presentation Foundation (WPF) を使用して構築した複雑なビューの統合が簡易化されます。これは、基幹業務開発者が Windows Forms および WPF の相互運用性について気にする必要がないためです。この機能は、シェル拡張サービスの 1 機能としてカプセル化されています。最後に、ユース ケース指向のアプローチは、さまざまなモジュールの異なるセットで再利用される WorkItem の識別に最適なソリューションをもたらしました。総合的に見て、CAB および SCSF は、開発チームが共通した拡張可能な銀行デスクトップ フレームワークを RACON Software GmbH 向けに作成するための実用的なアプローチを見いだすことに貢献しました。End of Article

著者について

Mario Szpuszta : Microsoft Austria の Developer and Platform Group に勤務しており、オーストリアの顧客企業のソフトウェア アーキテクトをサポートしている。Mario は、常にマイクロソフトのテクノロジを使用した業務に従事しており、非常に早い時期から .NET Framework を扱い始めた。この 2 年間は、セキュア ソフトウェア開発、ASP.NET Web 開発、および Web サービスに加えて、Visual Studio Tools for Office、XML、およびスマート ドキュメントに基づいて Microsoft .NET を使用したカスタム アプリケーションにおける Microsoft Office の統合に従事。Mario は、Ingo Rammer との共著者として『Advanced .NET Remoting, 2nd Edition』を執筆し、さらに Matthew MacDonald と共に『Pro ASP.NET 2.0 in C#』を執筆。


 

 INDEX
  [アーキテクチャ・ジャーナル]
  CAB および SCSF を使用したコンポジット スマート クライアントの設計
    1.コンポジット スマート クライアントのアーキテクチャ ガイダンス
    2.コンポジット UI アプリケーション ブロック
    3.WorkItemを識別するユース ケース指向とビジネス エンティティ指向のアプローチ
  4.WorkItemのパッケージ化とスマート クライアント ソフトウェア ファクトリ

インデックス・ページヘ  「アーキテクチャ・ジャーナル」


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Insider.NET 記事ランキング

本日 月間