Реализация контрактов службImplementing Service Contracts

Служба - это класс, который предоставляет клиентам имеющиеся функциональные возможности в одной или нескольких конечных точках.A service is a class that exposes functionality available to clients at one or more endpoints. Чтобы создать службу, напишите класс, реализующий контракт службы Windows Communication Foundation (WCF).To create a service, write a class that implements a Windows Communication Foundation (WCF) contract. Это можно сделать одним из двух способов.You can do this in one of two ways. Во-первых, можно определить контракт отдельно в качестве интерфейса, а затем создать класс, реализующий этот интерфейс.You can define the contract separately as an interface and then create a class that implements that interface. Во-вторых, можно непосредственно создать класс и контракт, разместив атрибут ServiceContractAttribute в самом классе, а атрибут OperationContractAttribute - в методах, доступных клиентам службы.Alternatively, you can create the class and contract directly by placing the ServiceContractAttribute attribute on the class itself and the OperationContractAttribute attribute on the methods available to the clients of the service.

Создание класса службыCreating a service class

Ниже приведен пример службы, реализующей отдельно определенный контракт IMath.The following is an example of a service that implements an IMath contract that has been defined separately.

// 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; }  
}  

Кроме того, контракт может непосредственно предоставляться службой.Alternatively, a service can expose a contract directly. Ниже приведен пример класса службы, который определяет и реализует контракт MathService.The following is an example of a service class that defines and implements a MathService contract.

// 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; }  
}  

Обратите внимание, что описанные службы предоставляют разные контракты, так как имена контрактов различаются.Note that the preceding services expose different contracts because the contract names are different. В первом случае предоставленный контракт называется "IMath", а во втором - "MathService".In the first case, the exposed contract is named "IMath" while in the second case the contract is named "MathService".

Некоторые свойства (такие как параллелизм и создание экземпляров) можно задать на уровне реализации службы и операции.You can set a few things at the service and operation implementation levels, such as concurrency and instancing. Дополнительные сведения см. в разделе проектирование и реализация служб.For more information, see Designing and Implementing Services.

После реализации контракта службы необходимо создать для службы одну или более конечных точек.After implementing a service contract, you must create one or more endpoints for the service. Дополнительные сведения см. в разделе Общие сведения о создании конечной точки.For more information, see Endpoint Creation Overview. Дополнительные сведения о запуске службы см. в разделе размещение служб.For more information about how to run a service, see Hosting Services.

См. такжеSee also