Откройте файл 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 см. в разделе Предотвращение проблем при использовании операторов