サービス コントラクトの実装
サービスは、1 つ以上のエンドポイントでクライアントが使用できる機能を公開するクラスです。 サービスを作成するには、Windows Communication Foundation (WCF) コントラクトを実装するクラスを記述します。 2 つの方法のいずれかでこれを行うことができます。 コントラクトを個別にインターフェイスとして定義し、そのインターフェイスを実装するクラスを作成できます。 または、クラスに ServiceContractAttribute 属性を配置し、サービスのクライアントが使用できるメソッドに OperationContractAttribute 属性を配置することによって、クラスとコントラクトを直接作成することもできます。
サービス クラスの作成
個別に定義された IMath
コントラクトを実装するサービスの例を次に示します。
// Define the IMath contract.
[ServiceContract]
public interface IMath
{
[OperationContract]
double Add(double A, double B);
[OperationContract]
double Multiply (double A, double B);
}
// Implement the IMath contract in the MathService class.
public class MathService : IMath
{
public double Add (double A, double B) { return A + B; }
public double Multiply (double A, double B) { return A * B; }
}
また、サービスは直接コントラクトを公開できます。 MathService
コントラクトを定義し、実装するサービス クラスの例を次に示します。
// Define the MathService contract directly on the service class.
[ServiceContract]
class MathService
{
[OperationContract]
public double Add(double A, double B) { return A + B; }
[OperationContract]
private double Multiply (double A, double B) { return A * B; }
}
コントラクト名が異なるので、上記の 2 つのサービスが公開するコントラクトはそれぞれ異なります。 最初の例では、公開されるコントラクトの名前が "IMath
" であるのに対し、2 番目の例では、コントラクトの名前は "MathService
" です。
コンカレンシーやインスタンス化など、いくつかの項目は、サービス実装レベルと操作実装レベルで設定できます。 詳細については、「サービスの設計と実装」を参照してください。
サービス コントラクトを実装したら、そのサービスに 1 つ以上のエンドポイントを作成する必要があります。 詳細については、「エンドポイントの作成の概要」を参照してください。 サービスの実行方法の詳細については、「ホスティング サービス」を参照してください。