サービスは、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; }
}
上記のサービスはコントラクト名が異なるため、異なるコントラクトを公開することに注意してください。 最初のケースでは、公開されたコントラクトの名前は "IMath
" で、2 番目のケースではコントラクトの名前は "MathService
" です。
コンカレンシーやインスタンス化など、サービスと操作の実装レベルでいくつかの設定を行うことができます。 詳細については、「サービスの 設計と実装」を参照してください。
サービス コントラクトを実装した後、サービスのエンドポイントを 1 つ以上作成する必要があります。 詳細については、「 エンドポイント作成の概要」を参照してください。 サービスを実行する方法の詳細については、「 ホスティング サービス」を参照してください。