Windows Vistaがリリースされるタイミングで、WinFXが登場してくる。WinFXは次世代のクライアントOSであるWindows Vistaで搭載される、次世代アプリケーションのための開発・実行基盤だ。こういうと、従来の.NETテクノロジをリプレイスするような存在に誤解されがちであるが、実際は、.NET Framework 2.0をベースに拡張されたクラス・ライブラリ群といったものである。
そして下の図は、このWinFXの中でのWCFの位置付けを表したものである。
WinFXの中でWCFは、アプリケーション間のコミュニケーション全般の基盤技術を提供するものである。
なお、WinFX登場のタイミングで提供されるいわゆる「W*F」といったネーミングとなっているテクノロジには、WCF以外に、WPF(Windows Presentation Foundation:コードネーム“Avalon”)、WF(Windows Workflow Foundation)*4が存在しており、それぞれ非常に重要な次世代のWindowsの基盤(Foundation)技術と位置付けられている。
*4 発表当初はWWFと略されていたが、WWFは世界自然保護基金の団体名称となるため、現在ではWFと呼称している。
ちなみに、WCFのコアとなるDLLは、System.ServiceModel.dllであり、このファイルはWinFXランタイムのインストールによってGAC(グローバル・アセンブリ・キャッシュ)に登録される。
つまり、WCFは既存の分散アプリケーションをリプレイスするものではなく、アドオンで追加されるクラス・ライブラリなのである。このことからも、既存の分散テクノロジとサイド・バイ・サイドで共存できることがうかがえる。
なお、WinFXの提供はWindows Vistaのみではなく、.NET Framework 2.0がサポートするすべてのWindows OSが対象となる。具体的には下記のとおりである。
WCFは、一見、Webサービスのための新技術と誤解されがちだが、ここまでで述べてきたように、実際にはWebサービス技術を基盤にしてさまざまな既存の分散テクノロジ対象領域をトータルにカバーするテクノロジである。
従ってその適用範囲は、単に他プラットフォームとの相互運用を意識したWebサービス構築にとどまらない。例えば、従来、.NETリモート処理がターゲットにしていた1マシン上でのプロセス間通信もWCFでの構築対象となる。また、Windowsマシン間のネットワークをまたがった通信も対象となるし、当然、Webサービスを使用したほかのプラットフォーム間との通信も対象となる。
その広範な適用範囲を図示したのが次の図である。
つまり、WCFは既存のすべての分散テクノロジの次バージョンであり(例えば、既存のASP.NET Webサービスの次のバージョンがWCFということであり、同様に既存の分散テクノロジの次のバージョンがすべてWCFといった扱いである)、その守備範囲はおよそ分散される可能性のあるすべてのアプリケーション間通信に適用可能である。
よって、Vistaリリースのタイミングでカットオーバーが予定されている新規アプリケーションの開発であれば、WCFのさまざまなメリットを享受するために積極的に採用を検討されることをお勧めする。しかし、従来技術での構築に習熟されている場合は、従来どおりの構築スタイルでも構わない。WCFで作らないとVistaでは動作しないというわけではないからだ。
ただ、そうはいってもやはり、今後の分散アプリケーションで将来性を見据え、より高い拡張性と柔軟性を備えた、耐用年数の高いシステムを構築したい場合には、ぜひWCFの採用を検討すべきだろう。
【コラム】WCF登場によるサービス粒度への影響と新たなアーキテクチャ論に関して
Webサービスを構築する際に、プロトコルとしてはHTTP、メッセージのエンコーディングとしては「Text/XML」しか選択肢がなかった時代においては、Webサービスの粒度といえばある程度大きくなりがちであったし、複数のオブジェクトを連携したファサードとしてのサービス・インターフェイス構築が一般的であったといえる。
しかし前述したように、いまやプロセス間通信もWebサービス・テクノロジで実装可能であり、その性能も既存分散テクノロジと比較して劣らない(むしろ高速になっている)。もちろんインメモリのオブジェクト・コールと同様にとらえるわけにはいかないが、サービス粒度についても従来のWebサービスの固定観念よりも小さな粒度で十分対応可能なのである。
小さな粒度のWCFサービスの連携をWF(Workflow Foundation)で行い、それらをまとめた形でWCFによりサービス・ファサードとして公開し、さらにこれらサービス・ファサードのマルチ・プラットフォーム間連携をBizTalk Serverで行うといったパターンも十分あり得る。つまりサービスのマルチ・レベル化である。
トランスポートの選択やセキュリティの付加などの要件はWCFで外部(コンフィグレーション)から挿入することが可能であるし、変更が頻繁に発生するサービス連携部分のルールはWFによってモデル駆動開発(MDA)が可能になる。
WCFの登場により、まさに従来のDI(Dependency Injection:依存性の注入)コンテナの議論とはまったく違ったレベルの、新たなアーキテクチャの誕生が予感される。
さて、今回はWCF登場の背景からWCFとは何かといったところまでお伝えした。WCFがもたらす意味はある程度ご理解いただけたのではないだろうか。さて次回以降では基本的なWCFプログラミングに必要な概念を解説した後に、実際のアプリケーション・プログラミングに触れていく予定である。
Copyright© Digital Advantage Corp. All Rights Reserved.