Windows Communication Foundation とは
Windows Communication Foundation (WCF) とは、サービス指向アプリケーションを構築するためのフレームワークです。 WCF を使用すると、1 つのサービス エンドポイントから別のサービス エンドポイントに非同期メッセージとしてデータを送信できます。 サービス エンドポイントには、IIS でホストされている、継続的に使用可能なサービスの一部を使用したり、アプリケーションでホストされているサービスを使用できます。 エンドポイントには、サービス エンドポイントからデータを要求するサービスのクライアントを使用できます。 メッセージは XML として送信された 1 文字または 1 語の簡単なものでも、バイナリ データのストリームのような複雑なものでも構いません。 サンプル シナリオをいくつか挙げます。
ビジネス トランザクションを処理するセキュリティ保護サービス。
トラフィック レポートやその他のモニタリング サービスなど、現在のデータを他のサービスに提供するサービス。
2 人のユーザーがリアル タイムで通信したりデータを交換したりできるチャット サービス。
データの 1 つ以上のサービスをポーリングし、論理プレゼンテーションで表示するダッシュボード アプリケーション。
Windows Workflow Foundation を WCF サービスに使用した、実装されたワークフローの公開。
WCF が登場する前もそのようなアプリケーションの作成は可能でしたが、WCF によってエンドポイントの開発が一段と簡単になりました。 要約すると、WCF は Web サービスと Web サービス クライアントを作成するための管理しやすいアプローチを提供するように設計されています。
WCF の代替としての gRPC
gRPC は、WCF の一般的な代替手段である最新の RPC フレームワークです。 gRPC は HTTP/2 に基づいて構築されており、WCF と比べて以下のような多くの利点があります。
- パフォーマンス: gRPC は WCF よりもはるかに効率的であり、特に、実行時間の長い接続の場合に顕著です。
- スケーラビリティ: gRPC は、多数のクライアントとサーバーにスケーリングするように設計されています。
- セキュリティ: gRPC は、TLS や認証など、多様なセキュリティ メカニズムをサポートしています。
- クロスプラットフォーム: gRPC はプラットフォームに依存せず、多様なプログラミング言語で使用できます。
gRPC アプリの開発または WCF アプリの gRPC への移行の詳細については、次の項目を参照してください。
WCF の機能
WCF には次の機能セットがあります。 詳細については、「WCF 機能の詳細」を参照してください。
サービス指向
WS 標準を使用する結果として、WCF を使用して "サービス指向" アプリケーションを作成できます。 サービス指向アーキテクチャ (SOA) は、データの送受信に Web サービスを使用します。 このサービスを使用する一般的な長所は、1 つのアプリケーションから別のアプリケーションへハードコーディングせずに、疎結合にできるということです。 疎結合リレーションシップでは、必須のコントラクトが一致していれば、任意のプラットフォームで作成した任意のクライアントを任意のサービスに接続できます。
相互運用性
WCF は、Web サービスの相互運用性を図るために、最新の業界標準を実装しています。 サポートされている標準の詳細については、「相互運用性と統合」を参照してください。
複数のメッセージ パターン
メッセージは複数のパターンの 1 つを使用して交換されます。 最も一般的なパターンは要求/応答パターンです。このパターンでは 1 つのエンドポイントが 2 番目のエンドポイントからデータを要求し、 2 番目のエンドポイントが応答します。 その他にも一方向のメッセージなどのパターンがあります。一方向のメッセージでは、1 つのエンドポイントが応答を期待せずにメッセージを送信します。 より複雑なパターンとして、2 つのエンドポイントが接続を確立し、インスタント メッセージング プログラムのようにデータをやり取りする双方向交換パターンがあります。 WCF を使用して異なるメッセージ交換パターンを実装する方法の詳細については、「コントラクト」を参照してください。
サービス メタデータ
WCF では、WSDL、XML スキーマ、WS-Policy などの業界標準で指定された形式を使用するサービス メタデータの公開をサポートしています。 このメタデータを使用して、WCF サービスにアクセスするためのクライアントを自動生成および構成できます。 メタデータは HTTP や HTTPS 上で、または Web サービス メタデータ交換標準を使用して公開できます。 詳細については、「メタデータ」を参照してください。
データ コントラクト
WCF は .NET Framework を使用して作成されているため、適用するコントラクトを提供するコードフレンドリなメソッドが含まれています。 汎用的な型のコントラクトの 1 つにデータ コントラクトがあります。 本質的に、Visual C# または Visual Basic を使用してサービスをコード化した場合、データを処理する最も簡単な方法は、データ エンティティを表すクラスにデータ エンティティに属するプロパティを作成する方法です。 WCF には、このような簡単な方法でデータを使用する包括的なシステムがあります。 データを表すクラスを作成すると、設計したデータ型にクライアントが準拠できるメタデータがサービスによって自動生成されます。 詳細については、「データ コントラクトの使用」を参照してください。
Security
メッセージを暗号化してプライバシーを保護し、メッセージを受信する前にユーザーが自身を認証することを必須化することができます。 SSL や WS-SecureConversation などよく知られた標準を使用してセキュリティを実装できます。 詳細については、セキュリティに関するページをご覧ください。
複数のトランスポートとエンコーディング
メッセージは複数の組み込みトランスポート プロトコルおよびエンコーディングのいずれかを使用して送信できます。 最も一般的なプロトコルとエンコーディングは、World Wide Web で HTTP (ハイパーテキスト転送プロトコル) を使用して、テキスト エンコードされた SOAP メッセージを送信するものです。 また、WCF では、TCP、名前付きパイプ、MSMQ でメッセージを送信することもできます。 これらのメッセージはテキストとしてエンコードするか、最適化されたバイナリ形式を使用することができます。 バイナリ データは MTOM 標準を使用することで効率的に送信できます。 提供されているトランスポートまたはエンコーディングのいずれもニーズを満たさない場合は、独自のカスタム トランスポートまたはエンコーディングを作成できます。 WCF でサポートされているトランスポートとエンコーディングの詳細については、「トランスポート」を参照してください。
キューに置かれた信頼性のあるメッセージ
WCF では、WS-Reliable Messaging 経由で MSMQ を使用して実装された、信頼性の高いセッションで信頼性の高いメッセージ交換をサポートしています。 WCF でサポートされている、キューに置かれた信頼性の高いメッセージングの詳細については、「キューと信頼できるセッション」を参照してください。
非揮発性メッセージ
非揮発性メッセージは、通信の中断によって失われることがないメッセージです。 非揮発性メッセージ パターンのメッセージは常にデータベースに保存されます。 中断が発生した場合、接続復旧時にデータベースでメッセージの交換を再開できます。 Windows Workflow Foundation (WF) を使用して非揮発性メッセージを作成することもできます。 詳細については、「ワークフロー サービス」を参照してください。
トランザクション
WCF では、WS-AtomicTtransactions、System.Transactions 名前空間の API、および Microsoft 分散トランザクション コーディネーターの 3 つのトランザクション モデルの 1 つを使用したトランザクションもサポートしています。 WCF でのトランザクションのサポートの詳細については、トランザクションに関するページを参照してください。
AJAX および REST サポート
REST は、進化し続ける Web 2.0 テクノロジの一例です。 SOAP エンベロープにラップされていない "書式なし" XML データを処理するように WCF を構成できます。 また、WCF を拡張して、ATOM (一般的な RSS 標準) などの特定の XML 形式や、JSON (JavaScript Object Notation) などの XML 以外の形式をサポートすることもできます。
拡張性
WCF アーキテクチャには多数の機能拡張ポイントがあります。 追加の機能が必要になった場合、サービスの動作をカスタマイズできる多数のエントリ ポイントがあります。 使用可能な拡張ポイントの詳細については、「WCF の拡張」を参照してください。
WCF と他のマイクロソフト テクノロジと統合
WCF は柔軟性の高いプラットフォームです。 この柔軟性を活かして、WCF は他のいくつかの Microsoft 製品でも使用されています。 WCF の基本を理解することで、これらの製品を使用するときにもすぐにこの利点を活用できます。
WCF とペアを組んでいる最初のテクノロジは、Windows Workflow Foundation (WF) です。 ワークフローではワークフローの手順を "アクティビティ" としてカプセル化することで、アプリケーション開発を簡単にできます。Windows Workflow Foundation の最初のバージョンでは、開発者がワークフローのホストを作成しなければなりませんでした。 次のバージョンの Windows Workflow Foundation は WCF と統合されました。 これにより、任意のワークフローを WCF サービスで簡単にホストできるようになりました。 これは、Visual Studio 2012 以降で WF/WCF プロジェクト タイプを自動的に選択して実行できます。
Microsoft BizTalk Server R2 でも WCF を通信テクノロジに使用しています。 BizTalk は、1 つの標準化形式のデータを受け取り、別の形式に変換するように設計されています。 メッセージは、厳密なマッピングか、またはワークフロー エンジンなどの BizTalk 機能の 1 つを使用してメッセージを変換できる、中央管理のメッセージ ボックスに配信する必要があります。 BizTalk では、WCF 業務基幹 (LOB) アダプターを使用してメッセージをメッセージ ボックスに配信できます。
Windows Server AppFabric アプリケーション サーバーのホスティング機能は、WCF を通信に使用するアプリケーションを展開および管理するように特別に設計されています。 ホスティング機能には、WCF 対応アプリケーション向けに特別に設計された豊富なツールおよび構成オプションが含まれています。