Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
[ПСП] Учебник WCF.docx
Скачиваний:
48
Добавлен:
26.03.2016
Размер:
147.76 Кб
Скачать

Как реализовать контракт службы WindowsCommunicationFoundation

Это вторая из шести задач, выполнение которых необходимо для создания базовой службы Windows Communication Foundation (WCF) и клиента, который может вызывать службу.

Следующий шаг по созданию приложения WCF — это реализация интерфейса службы. Этот шаг предполагает создание класса с именем CalculatorService, реализующего определенный пользователем интерфейс ICalculator.

Реализация контракта службы wcf

Откройте файл Service1.cs и добавьте следующий код:

//Service1.cs

using System;

using System.Collections.Generic;

using System.Linq;

using System.Runtime.Serialization;

using System.ServiceModel;

using System.Text;

namespace GettingStartedLib

{

public class CalculatorService : ICalculator

{

public double Add(double n1, double n2)

{

double result = n1 + n2;

Console.WriteLine("Received Add({0},{1})", n1, n2);

// Code added to write output to the console window.

Console.WriteLine("Return: {0}", result);

return result;

}

public double Subtract(double n1, double n2)

{

double result = n1 - n2;

Console.WriteLine("Received Subtract({0},{1})", n1, n2);

Console.WriteLine("Return: {0}", result);

return result;

}

public double Multiply(double n1, double n2)

{

double result = n1 * n2;

Console.WriteLine("Received Multiply({0},{1})", n1, n2);

Console.WriteLine("Return: {0}", result);

return result;

}

public double Divide(double n1, double n2)

{

double result = n1 / n2;

Console.WriteLine("Received Divide({0},{1})", n1, n2);

Console.WriteLine("Return: {0}", result);

return result;

}

}

}

Каждый метод реализует операцию калькулятора и выводит на консоль некоторый текст, чтобы упростить тестирование.

Пример

В следующем коде показан интерфейс, определяющий контракт, и реализация этого интерфейса.

// IService1.cs

using System;

using System.Collections.Generic;

using System.Linq;

using System.Runtime.Serialization;

using System.ServiceModel;

using System.Text;

namespace GettingStartedLib

{

[ServiceContract(Namespace = "http://Microsoft.ServiceModel.Samples")]

public interface ICalculator

{

[OperationContract]

double Add(double n1, double n2);

[OperationContract]

double Subtract(double n1, double n2);

[OperationContract]

double Multiply(double n1, double n2);

[OperationContract]

double Divide(double n1, double n2);

}

}

// Service1.cs

using System;

using System.Collections.Generic;

using System.Linq;

using System.Runtime.Serialization;

using System.ServiceModel;

using System.Text;

namespace GettingStartedLib

{

public class CalculatorService : ICalculator

{

public double Add(double n1, double n2)

{

double result = n1 + n2;

Console.WriteLine("Received Add({0},{1})", n1, n2);

// Code added to write output to the console window.

Console.WriteLine("Return: {0}", result);

return result;

}

public double Subtract(double n1, double n2)

{

double result = n1 - n2;

Console.WriteLine("Received Subtract({0},{1})", n1, n2);

Console.WriteLine("Return: {0}", result);

return result;

}

public double Multiply(double n1, double n2)

{

double result = n1 * n2;

Console.WriteLine("Received Multiply({0},{1})", n1, n2);

Console.WriteLine("Return: {0}", result);

return result;

}

public double Divide(double n1, double n2)

{

double result = n1 / n2;

Console.WriteLine("Received Divide({0},{1})", n1, n2);

Console.WriteLine("Return: {0}", result);

return result;

}

}

}

Теперь контракт службы был создан и реализован. Постройте решение, чтобы убедиться в отсутствии ошибок компиляции, затем переходите к разделу Как размещать и запускать базовую службу Windows Communication Foundationдля запуска службы. Сведения по устранению неполадок см. в разделеУстранение неполадок, связанных с учебником по началу работы.