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