連載アプリケーション・アーキテクチャ設計入門 第3回 論理アーキテクチャを構成するコンポーネントの設計(ビジネス/データ層編) 日本ユニシス 猪股 健太郎2003/10/25 |
前回では、Application Architecture for .NET(以下AAfN)で推奨されている論理アーキテクチャから、プレゼンテーション層を構成する2つのコンポーネントについて、その設計指針について解説した。 |
Application Architecture for .NETで推奨されている論理アーキテクチャ(再掲) |
3つの論理階層(レイヤ)とそれらに属する8種類のコンポーネント、そして論理階層(レイヤ)に属さないコンポーネント群から構成されている。 |
今回はビジネス層とデータ層に含まれる5つのコンポーネントの設計指針について引き続き見ていく。
ビジネス層
ビジネス・ルールを実装してビジネス処理を実行するコンポーネントが「ビジネス・コンポーネント」である。
ビジネス・コンポーネントは、上位レイヤのユーザー・プロセス・コンポーネントや、サービス・インターフェイス、ビジネス・ワークフロー、およびほかのビジネス・コンポーネントから、ビジネス・データをパラメータとして呼び出される。
特徴
|
* 例えば「予約処理」の補償処理は「予約キャンセル処理」であるが、これはトランザクションのロールバックとは異なり、独立したビジネス処理である。従って「キャンセル手数料が発生する」といったビジネス上のルールが適用される場合もあり得る。 |
役割 ビジネス・コンポーネントは以下のことを実現するために使用する。
|
推奨
|
ビジネス処理の実装では、さまざまなパターンが存在する。ここでは、マイクロソフトが提供する技術を使って実装することができる2つのパターンを紹介する。それは、PipelineパターンとEventパターンである。
Pipelineパターンは、すべてのビジネス機能が順番に実行されるパターンである。ある処理の途中で外部サービスを非同期に呼び出す場合、その後の処理でサービスの戻り値が必要であれば待ち、必要でないなら次の処理に移る。このようなパターンを実装する場合は、Commerce Serverのビジネス・プロセス・パイプライン機能を利用できる。
Eventパターンは、特定のビジネス状況をきっかけとして複数の処理が開始されるが、それらの処理は互いに独立していて戻り値が必要ないようなパターンである。このようなパターンを実装する場合は、COM+の疎結合イベント・サービスを利用できる。
.NET Frameworkに用意されているエンタープライズ・サービスとしては、ロールベース・セキュリティ、異種トランザクション、オブジェクト・プーリング、キュー・コンポーネント、COM+イベントといったCOM+の機能を利用することができる。そのような機能がビジネス・コンポーネントに必要なのであれば、エンタープライズ・サービスを用いてビジネス・コンポーネントを実装することもできる。ただし、エンタープライズ・サービスにはリモート通信チャネル、厳密名での署名、デプロイメントなどに制限がある。後になってエンタープライズ・サービスを追加したり削除したりすることは難しいので、設計の初期段階で検討すべきである。
あるビジネス・プロセスが、複数のサービスから構成されていたり、長期に及ぶトランザクションを複数必要とする場合は、複数のサービスとの会話状態を制御したり、メッセージを交換したりするためにワークフロー機能が必要になることもある。「ビジネス・ワークフロー」は、そのような長期に及ぶ多ステップのビジネス・プロセスを定義・調整するコンポーネントだ。
ビジネス・ワークフローの実装にはBizTalk Serverを利用することもできる。BizTalk Serverは、オーケストレーション・サービスとメッセージング・サービスの2つの機能を提供する。オーケストレーション・サービスは長期に及ぶビジネス・プロセスの状態を管理し、事前に実装しておいたビジネス処理を適切なタイミングで起動してくれる。メッセージング・サービスはさまざまな通信プロトコルやメッセージ形式に対応して各種サービスや外部アプリケーションとメッセージを交換する。
AAfNでは、以下のような場合において、ビジネス・ワークフローの実装にBizTalk Serverを利用することを推奨している。
-
複数のステップと長期に及ぶトランザクションからなるビジネス・プロセスを管理する場合
-
外部のサービスとの会話や契約に基づいて実行されるビジネス・プロセスのインターフェイスを公開する場合
-
BizTalk Serverが提供する、さまざまな技術に接続するアダプタやコネクタを利用する場合
BizTalk Serverを使った開発の詳細は、MSDNで公開されているドキュメントなどが参考になるだろう。
INDEX | ||
[連載] アプリケーション・アーキテクチャ設計入門 | ||
第3回 論理アーキテクチャを構成するコンポーネントの設計(ビジネス/データ層編) | ||
1.ビジネス層コンポーネントの設計(1) | ||
2.ビジネス層コンポーネントの設計(2) | ||
3.データ層コンポーネントの設計 | ||
「アプリケーション・アーキテクチャ設計入門」 |
- 第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用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
|
|