Обучение
Модуль
Размещение веб-приложения с помощью Службы приложений Azure - Training
Создайте веб-сайт с помощью C#, Java, Python или Node.js и разверните его с помощью платформы размещенного веб-приложения в службе приложение Azure.
Этот браузер больше не поддерживается.
Выполните обновление до Microsoft Edge, чтобы воспользоваться новейшими функциями, обновлениями для системы безопасности и технической поддержкой.
В этом руководстве описывается третья из пяти задач, необходимых для создания базового приложения Windows Communication Foundation (WCF). Общие сведения о руководствах см. в руководстве по началу работы с приложениями Windows Communication Foundation.
Следующая задача для создания приложения WCF — размещение службы WCF в консольном приложении. Служба WCF предоставляет одну или несколько конечных точек, каждая из которых предоставляет одну или несколько операций службы. Конечная точка службы указывает следующие сведения:
В этом руководстве описано следующее:
Создайте проект консольного приложения в Visual Studio:
В меню "Файл" выберите "Открыть>проект или решение" и перейдите к ранее созданному решению GettingStarted (GettingStarted.sln). Выберите Открыть.
В меню "Вид" выберите Обозреватель решений.
В окне Обозреватель решений выберите решение GettingStarted (верхний узел), а затем выберите "Добавить>новый проект" в контекстном меню.
В окне "Добавление нового проекта" в левой части выберите категорию "Рабочий стол Windows" в разделе Visual C# или Visual Basic.
Выберите шаблон консольного приложения (платформа .NET Framework) и введите Метод GettingStartedHost для имени. Нажмите ОК.
Добавьте ссылку в проект GettingStartedHost в проект GettingStartedLib:
В окне Обозреватель решений выберите папку "Ссылки" в проекте GettingStartedHost и выберите пункт "Добавить ссылку" в контекстном меню.
В диалоговом окне "Добавить ссылку" в разделе "Проекты" в левой части окна выберите "Решение".
Выберите GettingStartedLib в центре окна и нажмите кнопку "ОК".
Это действие делает типы, определенные в проекте GettingStartedLib , доступными для проекта GettingStartedHost .
Добавьте ссылку в проект GettingStartedHost в сборкуSystem.ServiceModel:
В окне Обозреватель решений выберите папку "Ссылки" в проекте GettingStartedHost и выберите пункт "Добавить ссылку" в контекстном меню.
В окне "Добавить ссылку" в разделе "Сборки" в левой части окна выберите "Платформа".
Выберите System.ServiceModel и нажмите кнопку "ОК".
Сохраните решение, нажав кнопку "Сохранить все файлы>".
Чтобы разместить службу, добавьте код, чтобы выполнить следующие действия:
Внесите следующие изменения в код:
Откройте файл Program.cs или Module1.vb в проекте GettingStartedHost и замените его код следующим кодом:
using System;
using System.ServiceModel;
using System.ServiceModel.Description;
using GettingStartedLib;
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.");
// Close the ServiceHost to stop the service.
Console.WriteLine("Press <Enter> to terminate the service.");
Console.WriteLine();
Console.ReadLine();
selfHost.Close();
}
catch (CommunicationException ce)
{
Console.WriteLine("An exception occurred: {0}", ce.Message);
selfHost.Abort();
}
}
}
}
Imports System.ServiceModel
Imports System.ServiceModel.Description
Imports GettingStartedLib.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/GettingStarted/")
' Step 2: Create a ServiceHost instance.
Dim selfHost As New ServiceHost(GetType(CalculatorService), baseAddress)
Try
' Step 3: 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.")
' Close the ServiceHost to stop the service.
Console.WriteLine("Press <Enter> to terminate the service.")
Console.WriteLine()
Console.ReadLine()
selfHost.Close()
Catch ce As CommunicationException
Console.WriteLine("An exception occurred: {0}", ce.Message)
selfHost.Abort()
End Try
End Sub
End Class
End Module
Сведения о том, как работает этот код, см. в шагах программы размещения службы.
Обновите свойства проекта:
В окне Обозреватель решений выберите папку GettingStartedHost и выберите "Свойства" в контекстном меню.
На странице свойств GettingStartedHost выберите вкладку "Приложение":
Для проектов C# выберите "ПолучитьStartedHost.Program " в списке объектов Startup.
Для проектов Visual Basic выберите Service.Program из списка объектов Startup.
В меню "Файл" выберите "Сохранить все".
Создайте решение и запустите консольное приложение GettingStartedHost из Visual Studio.
Служба должна выполняться с правами администратора. Так как вы открыли Visual Studio с правами администратора, при запуске GettingStartedHost в Visual Studio приложение также выполняется с правами администратора. В качестве альтернативы можно открыть новую командную строку от имени администратора (выбрать "Больше>запуска от имени администратора" в контекстном меню) и запустить GettingStartedHost.exe в ней.
Откройте веб-браузер и перейдите на страницу http://localhost:8000/GettingStarted/
службы.
Примечание
Таким службам требуется соответствующее разрешение на регистрацию HTTP-адресов на компьютере для прослушивания. Учетные записи с уровнем доступа администратора имеют данное разрешение, а остальным учетным записям должно быть предоставлено разрешение на использование пространства имен HTTP. Дополнительные сведения о настройке резервирования пространств имен см. в разделе Настройка протоколов HTTP и HTTPS.
Действия в коде, добавленном для размещения службы, описаны следующим образом:
Шаг 1. Создание экземпляра Uri
класса для хранения базового адреса службы. URL-адрес, содержащий базовый адрес, имеет необязательный универсальный код ресурса (URI), определяющий службу. Базовый адрес форматируется следующим образом: <transport>://<machine-name or domain><:optional port #>/<optional URI segment>
Базовый адрес для службы калькулятора использует http-транспорт, localhost, порт 8000 и сегмент URI, GettingStarted.
Шаг 2. Создание экземпляра ServiceHost класса, который используется для размещения службы. Конструктор принимает два параметра: тип класса, реализующего контракт службы и базовый адрес службы.
Шаг 3. Создание экземпляра ServiceEndpoint . Конечная точка службы состоит из адреса, привязки и контракта службы. Конструктор ServiceEndpoint состоит из типа интерфейса контракта службы, привязки и адреса. Контракт службы - ICalculator
. Он определен и реализуется в типе службы. Привязка для этого примера — WSHttpBindingэто встроенная привязка и подключение к конечным точкам, которые соответствуют спецификациям WS-* . Дополнительные сведения о привязках WCF см. в обзоре привязок WCF. Добавьте адрес к базовому адресу, чтобы определить конечную точку. Код задает адрес в качестве калькулятора и полный адрес конечной точки в качестве http://localhost:8000/GettingStarted/CalculatorService
.
Важно!
Для платформа .NET Framework версии 4 и более поздних версий добавление конечной точки службы является необязательным. Если вы не добавите код или конфигурацию, WCF добавляет одну конечную точку по умолчанию для каждого сочетания базового адреса и контракта, реализованного службой. Дополнительные сведения о конечных точках по умолчанию см. в разделе "Указание адреса конечной точки". Дополнительные сведения о конечных точках, привязках и поведении по умолчанию см. в статье "Упрощенная конфигурация" и "Упрощенная конфигурация" для служб WCF.
Шаг 4. Включение обмена метаданными. Клиенты используют обмен метаданными для создания прокси-серверов для вызова операций службы. Чтобы включить обмен метаданными, создайте ServiceMetadataBehavior экземпляр, задайте его HttpGetEnabled свойство true
и добавьте ServiceMetadataBehavior
объект в Behaviors коллекцию экземпляра ServiceHost .
Шаг 5. Открытие ServiceHost для прослушивания входящих сообщений. Приложение ожидает нажатия клавиши ВВОД. После создания экземпляра ServiceHostприложения он выполняет блок try/catch. Дополнительные сведения о безопасном перехвате исключений, вызванных ServiceHost, см. в разделе "Закрыть" и "Прерывание", чтобы освободить клиентские ресурсы WCF.
Важно!
При добавлении библиотеки служб WCF Visual Studio размещает его для вас при отладке, запуская узел службы. Чтобы избежать конфликтов, вы можете запретить Visual Studio размещать библиотеку служб WCF.
Из этого руководства вы узнали, как:
Перейдите к следующему руководству, чтобы узнать, как создать клиент WCF.
Обучение
Модуль
Размещение веб-приложения с помощью Службы приложений Azure - Training
Создайте веб-сайт с помощью C#, Java, Python или Node.js и разверните его с помощью платформы размещенного веб-приложения в службе приложение Azure.