Windows Communication Foundation
サービスコントラクトには、明示的または暗黙的なデータコントラクトが必ず対応しており、そのサービスが使うデータを定義している。あるサービスが必要とするデータが単純な型だった場合(整数、浮動小数点数など)、WCF は自動的にデータコントラクトを定義する。一方、データが複雑なオブジェクトや構造体だった場合、明示的に定義しなければならない。データコントラクトは、データのシリアライズ方法を規定するものである。
データコントラクトは、DataContract 属性をクラスや構造体に付与することで定義される。サービスで使用される構造体メンバーには、DataMember 属性が付与されなければならない。そうすることで、その値がサービスとクライアント間で転送される。
サービスの通常の振る舞いと特定の操作は ServiceBehavior 属性と OperationBehavior 属性でそれぞれ制御される。ServiceBehavior 属性にはいくつかのプロパティがある。ConcurrencyMode プロパティは、サービスが同時並行して複数のクライアントに提供されるかどうかを示す。InstanceMode プロパティは、唯一のインスタンスで全要求に対応するのか、それとも要求毎に新たなインスタンスを生成するのか、あるいはセッション毎に生成するのかを指定する。
Windows Communication Foundation(WCF)は、.NET Framework 3.0における新しい通信サブシステムであり、アプリケーション同士をネットワーク経由で接続する仕組みである。開発時のコードネームはIndigoであった。.NETでサポートされている言語であれば、どの言語でもWCFアプリケーションを開発できる。
.NET Framework 3.0で新たに導入された4つの主なAPIの1つである。Windows Vistaと Windows Server 2008には最初から含まれている。Windows XPとWindows Server 2003でもサポートされている。