今日のITシステムのほとんどは、分散したコンピューターリソースを連携させる、いわゆる分散システムとして実現されており、以前はC/S(クライアント/サーバー)が、ここ数年ではSOA(サービス指向アーキテクチャ)やマイクロソフトが提唱しているソフトウェア+サービス(Software + Services)形態のシステムがその代表的なものとなっています。こうしたコンピュータ間の通信を実現する分散テクノロジは、UIテクノロジなどに比べると華やかさはないものの、非常に重要なテクノロジであり、システムを支える「縁の下の力持ち」とも言えるでしょう。

Note
 ソフトウェア+サービスは、クライアントPCの持つパワーとネットワーク越しに提供されるサービスの利便性をうまくミックス(組み合わせる)した形態のアプリケーション/システムです。ソフトウェア+サービスでは、単なるリッチなクライアント型アプリケーションや、単なるサービス型アプリケーション(たとえばSaaS)と比べ、よりユーザーが使いやすいアプリケーション/システムを提供することを目指しています。ソフトウェア+サービスについては、以下のドキュメントなどを参照してください。
ソフトウエアプラスサービスを動く図説でやさしく解説
ソフトウェア+サービスの概要と今後のアプリケーション開発
Note
 Webブラウザと Webアプリケーションの間の通信によって動作する Webアプリケーションも、もちろん分散システムの 1つの形態ですが、ここではUI(ユーザーインターフェイス)を介さない通信技術の話にフォーカスしているため割愛しています。

 .NET Frameworkは、その登場当初より通信要件などに応じたさまざまな通信技術を提供していましたが、.NET Framework 3.0から登場したWCF(Windows Communication Foundation)は、今日の.NETベースの分散アプリケーション/サービス開発のための基盤テクノロジを統合する存在であり、WCFによってXML Webサービス(以降、単に「Webサービス」と表現します)を始めとしたさまざまな形態の分散アプリケーション/サービスを開発することが可能となっています。

 ここでは、この今日の.NETにおける分散アプリケーション/サービス開発のメインストリームテクノロジであるWCFにフォーカスし、その特徴や基本的なプログラミング方法、活用ポイントについて解説します。