Создание службы, размещенной в IIS

1. Убедитесь, что службы IIS установлены и выполняются на компьютере. Дополнительные сведения о о установке и настройке служб IIS см. в разделе Установка и настройка IIS 7.0.

2. Создайте новую папку с именем IISHostedCalcService для файлов приложения, убедитесь, что ASP.NET имеет доступ к содержимому этой папки, и воспользуйтесь средством управления IIS для создания нового приложения служб IIS, которое физически расположено в каталоге этого приложения. Создайте для каталога приложения псевдоним «IISHostedCalc».

3. Создайте в каталоге приложения новый файл с именем «service.svc». Измените этот файл, добавив следующий элемент @ServiceHost.

Копировать

<%@ServiceHost language=c# Debug="true" Service="Microsoft.ServiceModel.Samples.CalculatorService"%>

4. В каталоге приложения создайте подкаталог App_Code.

5. Создайте файл кода с именем Service.cs во вложенном каталоге App_Code.

6. Добавьте следующие операторы using в начало файла Service.cs.

Копировать

using System;using System.ServiceModel;

7. Добавьте следующее объявление пространства имен после операторов using.

Копировать

namespace Microsoft.ServiceModel.Samples{}

8. Определите контракт службы в пределах объявления пространства имен, как показано в следующем коде.

C#

VB

Копировать

[ServiceContract] 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); }

9. Реализуйте контракт службы после определения контракта службы, как показано в следующем коде.

C#

VB

Копировать

public class CalculatorService: ICalculator { public double Add(double n1, double n2) { return n1 + n2; } public double Subtract(double n1, double n2) { return n1 - n2; } public double Multiply(double n1, double n2) { return n1 * n2; } public double Divide(double n1, double n2) { return n1 / n2; } }

10. Создайте в каталоге приложения файл с именем Web.config и добавьте в него следующий код конфигурации. Во время выполнения инфраструктура WCF использует эти данные для создания конечной точки, с которой могут взаимодействовать клиентские приложения.

Xml

Копировать

<?xml version="1.0" encoding="utf-8"?><configuration> <system.serviceModel> <services> <!-- This section is optional with the default configuration model introduced in.NET Framework 4 --> <service name="Microsoft.ServiceModel.Samples.CalculatorService"> <!-- This endpoint is exposed at the base address provided by host: http://localhost/servicemodelsamples/service.svc --> <endpoint address="" binding="wsHttpBinding" contract="Microsoft.ServiceModel.Samples.ICalculator" /> <!-- The mex endpoint is exposed at http://localhost/servicemodelsamples/service.svc/mex --> <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" /> </service> </services> </system.serviceModel> </configuration>

В этом примере конечные точки явно задаются в файле конфигурации.Если в службу не добавлена ни одна конечная точка, то среда выполнения добавляет конечные точки по умолчанию.Дополнительные сведения о о конечных точках по умолчанию, привязках и поведениях см. в разделах Упрощенная конфигурация и Упрощенная конфигурация служб WCF.

11. Чтобы проверить правильность размещения службы, откройте экземпляр окна Internet Explorer и перейдите по URL-адресу службы: http://localhost/IISHostedCalc/Service.svc.

Пример

Далее представлен полный код службы калькулятора, размещаемой в IIS.

VB

Копировать

Imports SystemImports System.ServiceModel Namespace Microsoft.ServiceModel.Samples <ServiceContract()> _ Public Interface ICalculator <OperationContract()> _ Function Add(ByVal n1 As Double, _ ByVal n2 As Double) As Double <OperationContract()> _ Function Subtract(ByVal n1 As Double, _ ByVal n2 As Double) As Double <OperationContract()> _ Function Multiply(ByVal n1 As Double, _ ByVal n2 As Double) As Double <OperationContract()> _ Function Divide(ByVal n1 As Double, _ ByVal n2 As Double) As Double End Interface Public Class CalculatorService Implements ICalculator Public Function Add(ByVal n1 As Double, _ ByVal n2 As Double) As Double Implements ICalculator.Add Return n1 + n2 End Function Public Function Subtract(ByVal n1 As Double, _ ByVal n2 As Double) As Double Implements ICalculator.Subtract Return n1 - n2 End Function Public Function Multiply(ByVal n1 As Double, _ ByVal n2 As Double) As Double Implements ICalculator.Multiply Return n1 * n2 End Function Public Function Divide(ByVal n1 As Double, _ ByVal n2 As Double) As Double Implements ICalculator.Divide Return n1 / n2 End Function End Class

C#

Копировать

using System;using System.ServiceModel; namespace Microsoft.ServiceModel.Samples{ [ServiceContract] 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); } public class CalculatorService: ICalculator { public double Add(double n1, double n2) { return n1 + n2; } public double Subtract(double n1, double n2) { return n1 - n2; } public double Multiply(double n1, double n2) { return n1 * n2; } public double Divide(double n1, double n2) { return n1 / n2; } }

None

Копировать

<?xml version="1.0" encoding="utf-8"?><configuration> <system.serviceModel> <services> <service name="Microsoft.ServiceModel.Samples.CalculatorService"> <!-- This endpoint is exposed at the base address provided by host: http://localhost/servicemodelsamples/service.svc --> <endpoint address="" binding="wsHttpBinding" contract="Microsoft.ServiceModel.Samples.ICalculator" /> <!-- The mex endpoint is explosed at http://localhost/servicemodelsamples/service.svc/mex --> <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" /> </service> </services> </system.serviceModel> </configuration>

Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: