Размещение службы

Откройте файл Program.cs или Module.vb и введите следующий код:

// program.cs

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.ServiceModel;

using GettingStartedLib;

using System.ServiceModel.Description;

namespace GettingStartedHost

{

class Program

{

static void Main(string[] args)

{

// Step 1 Create a URI to serve as the base address.

Uri baseAddress = new Uri("http://localhost:8000/GettingStarted/");

// Step 2 Create a ServiceHost instance

ServiceHost selfHost = new ServiceHost(typeof(CalculatorService), baseAddress);

try

{

// Step 3 Add a service endpoint.

selfHost.AddServiceEndpoint(typeof(ICalculator), new WSHttpBinding(), "CalculatorService");

// Step 4 Enable metadata exchange.

ServiceMetadataBehavior smb = new ServiceMetadataBehavior();

smb.HttpGetEnabled = true;

selfHost.Description.Behaviors.Add(smb);

// Step 5 Start the service.

selfHost.Open();

Console.WriteLine("The service is ready.");

Console.WriteLine("Press <ENTER> to terminate service.");

Console.WriteLine();

Console.ReadLine();

// Close the ServiceHostBase to shutdown the service.

selfHost.Close();

}

catch (CommunicationException ce)

{

Console.WriteLine("An exception occurred: {0}", ce.Message);

selfHost.Abort();

}

}

}

}

‘Module1.vb

Imports System

Imports System.ServiceModel

Imports System.ServiceModel.Description

Imports GettingStartedLibVB.GettingStartedLib

Module Service

Class Program

Shared Sub Main()

' Step 1 Create a URI to serve as the base address

Dim baseAddress As New Uri("http://localhost:8000/ServiceModelSamples/Service")

' Step 2 Create a ServiceHost instance

Dim selfHost As New ServiceHost(GetType(CalculatorService), baseAddress)

Try

' Step 3 Add a service endpoint

' Add a service endpoint

selfHost.AddServiceEndpoint(_

GetType(ICalculator), _

New WSHttpBinding(), _

"CalculatorService")

' Step 4 Enable metadata exchange.

Dim smb As New ServiceMetadataBehavior()

smb.HttpGetEnabled = True

selfHost.Description.Behaviors.Add(smb)

' Step 5 Start the service

selfHost.Open()

Console.WriteLine("The service is ready.")

Console.WriteLine("Press <ENTER> to terminate service.")

Console.WriteLine()

Console.ReadLine()

' Close the ServiceHostBase to shutdown the service.

selfHost.Close()

Catch ce As CommunicationException

Console.WriteLine("An exception occurred: {0}", ce.Message)

selfHost.Abort()

End Try

End Sub

End Class

End Module

1. Шаг 1 - Создание экземпляра класса с именем с базовым адресом службы. Службы задаются URL-адресом, содержащим базовый адрес и дополнительный универсальный код ресурса (URI). Базовый адрес формируется следующим образом: [транспорт]://[имя компьютера или домена][:необязательно порт #]/[необязательный фрагмент универсального кода ресурса (URI)]. Базовый адрес службы калькулятора использует транспорт HTTP, localhost, порт 8000, и сегмент URI «приступая к работе»

2. Шаг 2 — создает экземпляр класса ServiceHost для размещения службы. Конструктор принимает 2 параметра: тип класса, который реализует контракт службы, и базовый адрес службы.

3. Шаг 3 — создает новый экземпляр ServiceEndpoint.Конечная точка — это комбинация контракта службы, привязки и адреса.Таким образом, конструктор ServiceEndpoint принимает тип интерфейса контракта службы, привязки и адреса конечной точки. Контракт службы — ICalculator, который вы определили в реализации типа службы. В этом образце используется встроенная привязка WSHttpBinding, подключаемая к конечным точкам, соответствующим спецификациями WS-*.Дополнительные сведения об WCF см. в разделе Общие сведения о привязках Windows Communication Foundation.Адрес добавляется к базовому адресу для определения конечной точки. Адрес, указанный в этом коде “Calculator”, полный адрес конечной точки “http://localhost:8000/GettingStartedService/Calculator”

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

4. Шаг 4 — включение обмена метаданными. Клиенты могут использовать обмен метаданными для создания прокси-объектов, которые будут использоваться для вызова операции службы. Для поддержки обмена метаданными создайте экземпляр ServiceMetadataBehavior, установите HttpGetEnabled в значении true, добавьте поведение в коллекцию Behaviors экземпляр ServiceHost.

5. Шаг 5 — откройте ServiceHost, чтобы прослушивать входящие сообщения.Обратите внимание, что код ожидает пока пользователь не нажмет ENTER.Если этого не сделать, то приложение немедленно закроется и служба завершит работу. Также обратите внимание, что используется блок try/catch. После создания экземпляра ServiceHost весь следующий код помещается в блок try/catch. Дополнительные сведения о перехвате исключений, формируемых системой безопасности ServiceHost см. в разделе Предотвращение проблем при использовании операторов


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



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