Windows Communication Foundation
WCFサービスは3つの部分から成る。「サービス; service」クラスは提供すべきサービスを実装している。「ホスト環境; host environments」はサービスのための環境である。「エンドポイント; endpoints」は、クライアントと接続する部分である。WCFサービスとの通信は全てエンドポイントを通して行われる。エンドポイントには「コントラクト; contract」として、そのエンドポイントを通してServiceクラスのどのメソッドにアクセスできるかが指定されている。つまり、エンドポイントによって利用可能なメソッドが異なる場合もある。また、クライアントとの通信方法を指定する「バインディング; binding」があり、エンドポイントの存在するアドレスも指定されている。
WCFサービスのホストとしてはWindows Activation Servicesがある。他にも、IISをホストとすることもできるし、ServiceHostクラスを使った任意のプロセスをホストとすることができる。また、WCFサービス自身がホストとなることも可能である。
WCFサービスとの通信をクライアントから見れば、メソッド呼び出しでサービスを利用しているように見え、一種のRPC機構になっている。サービスの呼び出しはブロックされることがあり、クライアントはそのサービス要求が実行されるまで待たされる。クライアントはサービスとの接続に Proxy パターン を使用する必要がある。これにより、サービスのエンドポイントとの接続がオブジェクトとして抽象化される。proxy オブジェクトのメソッド呼び出しは、全てサービス要求となり、proxy はWCFサービスが返した結果を呼び出し側に返す。
WCF はローカルな proxy 生成を扱う。エンドポイントの設定に従って下位の処理を担当し、呼び出し側には必要な形式で結果を返す。
WCF はメッセージにサービスが使うデータを含ませて渡す呼び出し方だけでなく、ブロックされない呼び出し方法もサポートしている。メッセージを使った通信は必ずしも proxy オブジェクトを必要としない。その場合、戻ってくるデータもメッセージ形式で戻ってくる。呼び出し側はサービスの処理が完了するまでブロックされる。ブロックされないようにするには、メッセージキューを使ってメッセージの受け渡しをする必要がある。メッセージキューを使えば、サービスが一時的にダウンしている状態でもアプリケーションを実行し続けることができ、サービスが復旧したときに、溜まっていた要求が処理される。