Службы Wcf в Windows 10 что это такое

Обновлено: 21.11.2024

Visual Studio предоставляет инструменты для работы с Windows Communication Foundation (WCF) и WCF Data Services, технологиями Microsoft для создания распределенных приложений. В этом разделе представлено введение в службы с точки зрения Visual Studio. Полную документацию см. в разделе WCF Data Services 4.5.

Что такое WCF?

Что такое службы данных WCF

Модель программирования WCF

Служба WCF

Служба WCF основана на интерфейсе, определяющем контракт между службой и клиентом. Он отмечен атрибутом ServiceContractAttribute, как показано в следующем коде:

Вы определяете функции или методы, предоставляемые службой WCF, помечая их атрибутом OperationContractAttribute.

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

После определения интерфейса и его методов они инкапсулируются в класс, реализующий интерфейс. Один класс службы WCF может реализовывать несколько контрактов службы.

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

Для одной службы WCF может быть предоставлено несколько конечных точек. Это позволяет различным клиентам взаимодействовать с одной и той же службой по-разному. Например, банковская служба может предоставить одну конечную точку для сотрудников и другую для внешних клиентов, каждая из которых использует свой адрес, привязку и/или договор.

Клиент WCF

После создания клиента WCF вы ссылаетесь на службу в своем коде так же, как и на любой другой объект. Например, чтобы вызвать показанный ранее метод GetData, вы должны написать код, похожий на следующий:

Инструменты WCF в Visual Studio

Visual Studio предоставляет инструменты, помогающие создавать как службы WCF, так и клиенты WCF. Пошаговое руководство, демонстрирующее инструменты, см. в разделе Пошаговое руководство. Создание простой службы WCF в Windows Forms.

Создание и тестирование сервисов WCF

Вы можете использовать шаблоны WCF Visual Studio в качестве основы для быстрого создания собственной службы. Затем вы можете использовать автохост службы WCF и тестовый клиент WCF для отладки и тестирования службы. Вместе эти инструменты обеспечивают быстрый и удобный цикл отладки и тестирования, а также избавляют от необходимости переходить на модель хостинга на ранней стадии.

Шаблоны WCF

Шаблоны WCF Visual Studio предоставляют базовую структуру классов для разработки служб. Несколько шаблонов WCF доступны в диалоговом окне «Добавить новый проект». К ним относятся проекты lLibrary службы WCF, веб-сайты службы WCF и шаблоны элементов службы WCF.

При выборе шаблона добавляются файлы для сервисного контракта, реализации сервиса и конфигурации сервиса. Все необходимые атрибуты уже добавлены, создавая простую службу типа «Hello World», и вам не нужно писать код. Вы, конечно, захотите добавить код, предоставляющий функции и методы для вашей реальной службы, но шаблоны обеспечивают базовую основу.

Дополнительные сведения о шаблонах WCF см. в разделе Шаблоны WCF Visual Studio.

Хост службы WCF

При запуске отладчика Visual Studio (нажатием клавиши F5) для проекта службы WCF автоматически запускается средство узла службы WCF для локального размещения службы. Узел службы WCF перечисляет службы в проекте службы WCF, загружает конфигурацию проекта и создает экземпляр узла для каждой найденной службы.

Используя узел службы WCF, вы можете протестировать службу WCF без написания дополнительного кода или фиксации на определенном узле во время разработки.

Дополнительные сведения о узле службы WCF см. в разделе Узел службы WCF (WcfSvcHost.exe).

Тестовый клиент WCF

Инструмент тестового клиента WCF позволяет вводить параметры теста, отправлять эти данные в службу WCF и просматривать ответ, который служба отправляет обратно. Он обеспечивает удобный опыт тестирования службы при его сочетании с узлом службы WCF. Найдите инструмент в папке %ProgramFiles(x86)%\Microsoft Visual Studio\2017\Enterprise\Common7\IDE.

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

Дополнительные сведения о тестовом клиенте WCF см. в разделе Тестовый клиент WCF (WcfTestClient.exe).

Доступ к службам WCF в Visual Studio

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

Диалоговое окно "Добавить ссылку на службу" позволяет ввести адрес службы или выполнить поиск службы, определенной в вашем решении. Диалоговое окно возвращает список служб и операций, предоставляемых этими службами. Это также позволяет вам определить пространство имен, по которому вы будете ссылаться на службы в коде.

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

Как: выбрать конечную точку службы

В таком случае вы можете указать endpointConfigurationName в качестве параметра конструктора для ссылки на службу.

На вашем компьютере могут отображаться другие имена или местоположения для некоторых элементов пользовательского интерфейса Visual Studio, описанных в этой статье. Возможно, вы используете другой выпуск Visual Studio или другие параметры среды. Дополнительные сведения см. в разделе Персонализация среды IDE.

Чтобы выбрать конечную точку службы

Добавьте ссылку на службу WCF, щелкнув правой кнопкой мыши узел проекта в обозревателе решений и выбрав Добавить ссылку на службу.

В редакторе кода добавьте конструктор для ссылки на службу:

Замените ServiceReference пространством имен для ссылки на службу и замените Service1Client именем службы.

Отображается список IntelliSense, включающий перегрузки для конструктора. Выберите перегрузку endpointConfigurationName As String.

После перегрузки введите = ConfigurationName, где ConfigurationName — это имя конечной точки, которую вы хотите использовать.

Если вы не знаете имен доступных конечных точек, их можно найти в файле app.config.

Чтобы найти доступные конечные точки для службы WCF

В обозревателе решений щелкните правой кнопкой мыши файл app.config для проекта, содержащего ссылку на службу, и выберите команду Открыть. Файл появится в редакторе кода.

Найдите тег в файле.

Найдите под тегом тег, начинающийся с .

Если ссылка на службу предоставляет несколько конечных точек, будет два или более тега.

Внутри тега вы найдете параметр имени (где SomeService представляет имя конечной точки). Это имя конечной точки, которое можно передать в перегрузку endpointConfigurationName As String конструктора для ссылки на службу.

Как: асинхронно вызывать метод службы

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

По умолчанию, когда ссылка на службу добавляется в проект, она настроена на синхронный вызов методов. Вы можете изменить поведение для асинхронного вызова методов, изменив параметр в диалоговом окне «Настройка ссылки на службу».

Этот параметр задается отдельно для каждой службы. Если один метод службы вызывается асинхронно, все методы должны вызываться асинхронно.

На вашем компьютере могут отображаться другие имена или местоположения для некоторых элементов пользовательского интерфейса Visual Studio, описанных в этой статье. Возможно, вы используете другой выпуск Visual Studio или другие параметры среды. Дополнительные сведения см. в разделе Персонализация среды IDE.

Асинхронный вызов метода службы

В обозревателе решений выберите ссылку на службу.

В меню "Проект" нажмите "Настроить ссылку на службу".

В диалоговом окне "Настройка ссылки на службу" установите флажок "Создать асинхронные операции".

Как: связать данные, возвращаемые службой

Вы можете привязать данные, возвращаемые службой Windows Communication Foundation (WCF), к элементу управления точно так же, как вы можете привязать любой другой источник данных к элементу управления. При добавлении ссылки на службу WCF, если служба содержит составные типы, возвращающие данные, они автоматически добавляются в окно "Источники данных".

Чтобы привязать элемент управления к одному полю данных, возвращаемому службой WCF

В меню "Данные" нажмите "Показать источники данных".

Появится окно "Источники данных".

В окне "Источники данных" разверните узел ссылки на службу. Любые составные типы, возвращаемые службой display.

Разверните узел для типа. Появятся поля данных для этого типа.

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

Нажмите на тип элемента управления, к которому вы хотите привязаться.

Перетащите поле в форму.Элемент управления добавляется в форму вместе с компонентом BindingSource и компонентом BindingNavigator.

Повторите шаги с 4 по 6 для любых других полей, которые вы хотите связать.

Чтобы привязать элемент управления к составному типу, возвращаемому службой WCF

В меню "Данные" выберите "Показать источники данных". Появится окно Источники данных.

В окне "Источники данных" разверните узел ссылки на службу. Любые составные типы, возвращаемые службой display.

Выберите узел для типа и нажмите стрелку раскрывающегося списка, чтобы отобразить список доступных параметров.

Нажмите либо DataGridView, чтобы отобразить данные в сетке, либо «Подробности», чтобы отобразить данные в отдельных элементах управления.

Перетащите узел на форму. Элементы управления добавляются в форму вместе с компонентом BindingSource и компонентом BindingNavigator.

Как настроить службу для повторного использования существующих типов

Чтобы избежать этой проблемы, типы в сборках, на которые ссылаются, являются общими по умолчанию. Если вы хотите отключить совместное использование типов для одной или нескольких сборок, это можно сделать в диалоговом окне «Настройка ссылок на службы».

Чтобы отключить совместное использование типов в одной сборке

В обозревателе решений выберите ссылку на службу.

В меню "Проект" нажмите "Настроить ссылку на службу".

В диалоговом окне "Настройка ссылок на службы" выберите "Повторно использовать типы в указанных сборках, на которые имеются ссылки".

Установите флажок для каждой сборки, в которой вы хотите включить совместное использование типов. Чтобы отключить совместное использование типов для сборки, оставьте флажок снятым.

Чтобы отключить совместное использование типов во всех сборках

В обозревателе решений выберите ссылку на службу.

В меню "Проект" нажмите "Настроить ссылку на службу".

В диалоговом окне "Настройка ссылок на службы" снимите флажок "Повторно использовать типы в сборках, на которые ссылаются".

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

В этом разделе

Что нового в Windows Communication Foundation 4.5
Обсуждаются новые возможности Windows Communication Foundation.

Функции упрощения WCF
Обсуждаются новые функции, упрощающие написание приложений WCF.

Руководство по документации
Описание документации WCF

Концептуальный обзор
Обобщает информацию о системе обмена сообщениями Windows Communication Foundation (WCF) и классах, поддерживающих ее использование.

Руководство по началу работы
Пошаговое руководство по созданию службы и клиента WCF

Основы программирования WCF
Описывает основы создания приложений Windows Communication Foundation.

Сведения о функции WCF
Отображает разделы, позволяющие выбрать, какую функцию или функции WCF вам нужно использовать.

Расширение WCF
Описывает, как изменять и расширять компоненты среды выполнения WCF

Рекомендации и рекомендации
Содержит рекомендации по созданию приложений Windows Communication Foundation (WCF).

Администрирование и диагностика
Описывает диагностические функции WCF

Ресурсы операционной системы, необходимые для WCF
Описывает ресурсы операционной системы, необходимые для WCF

Устранение неполадок при установке
Содержит рекомендации по устранению проблем при установке WCF

Использование инструментов разработки WCF
Описывает инструменты разработки Visual Studio Windows Communication Foundation, которые могут помочь вам в разработке службы WCF.

Инструменты Windows Communication Foundation
Описывает инструменты WCF, упрощающие создание, развертывание и управление приложениями WCF

Образцы Windows Communication Foundation
Образцы, содержащие инструкции по различным аспектам Windows Communication Foundation

Общие сведения
В этом разделе описываются элементы, используемые для настройки клиентов и служб Windows Communication Foundation.

Следующая серия руководств знакомит вас с опытом программирования Windows Communication Foundation (WCF). Работа с этими руководствами по порядку даст вам общее представление о шагах, необходимых для создания приложений WCF. После того, как вы закончите, у вас будет работающая служба WCF и клиент WCF, который вызывает эту службу.

В руководстве предполагается, что вы используете Visual Studio в качестве среды разработки. Если вы используете другую среду разработки, игнорируйте инструкции для Visual Studio.

Примеры приложений WCF, которые можно загрузить и запустить, см. в разделе Образцы Windows Communication Foundation. Знакомство с примерами см. в разделе Пример начала работы.

Дополнительную информацию о создании служб и клиентов см. в разделе Основы программирования WCF.

Учебники по WCF

Первые три руководства описывают, как определить контракт службы WCF, как его реализовать и как разместить. Служба, которую вы создаете, размещается самостоятельно в консольном приложении. Вы также можете размещать службы в Microsoft Internet Information Services (IIS). Дополнительные сведения см. в разделе Практическое руководство. Размещение службы WCF в IIS. Хотя вы используете код для настройки службы в руководстве, вы также можете настроить службы в файле конфигурации.

Вы создаете контракт WCF с пользовательским интерфейсом. Этот контракт определяет функциональные возможности, предоставляемые службой.

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

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

Следующие два руководства описывают, как создавать, настраивать и использовать клиентское приложение для вызова операций, предоставляемых службой. Службы публикуют метаданные, которые определяют информацию, необходимую клиентскому приложению для связи со службой. Visual Studio автоматизирует процесс доступа к этим метаданным и использует их для создания клиентского приложения для службы. Если вы решите не использовать Visual Studio, вы можете вместо этого использовать инструмент ServiceModel Metadata Utility (Svcutil.exe).

Получить метаданные для создания прокси-сервера клиента WCF из службы WCF. Вы можете получить метаданные, используя Visual Studio для добавления ссылки на службу, или вы можете использовать средство ServiceModel Metadata Utility. Вы указываете конечную точку, которую клиент использует для доступа к службе.

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

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

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

В этом руководстве вы узнаете, как:

  • Создайте и настройте проект консольного приложения для размещения службы WCF.
  • Добавить код для размещения службы WCF.
  • Обновите файл конфигурации.
  • Запустите службу WCF и убедитесь, что она работает.

Создайте и настройте проект консольного приложения для размещения службы

Создайте проект консольного приложения в Visual Studio:

В меню "Файл" выберите "Открыть" > "Проект/решение" и перейдите к ранее созданному решению GettingStarted (GettingStarted.sln). Выберите Открыть.

В меню "Вид" выберите Обозреватель решений.

В окне обозревателя решений выберите решение GettingStarted (верхний узел), а затем в контекстном меню выберите Добавить > Новый проект.

Добавьте ссылку в проекте GettingStartedHost в проект GettingStartedLib:

В окне Solution Explorer выберите папку References в проекте GettingStartedHost, а затем выберите Add Reference в контекстном меню.

В диалоговом окне "Добавить ссылку" в разделе "Проекты" в левой части окна выберите "Решение".

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

Это действие делает типы, определенные в проекте GettingStartedLib, доступными для проекта GettingStartedHost.

Добавьте ссылку в проекте GettingStartedHost на сборку System.ServiceModel:

В окне Solution Explorer выберите папку References в проекте GettingStartedHost, а затем выберите Add Reference в контекстном меню.

В окне "Добавить ссылку" в разделе "Сборки" в левой части окна выберите Framework.

Выберите System.ServiceModel, а затем нажмите кнопку ОК.

Сохраните решение, выбрав «Файл» > «Сохранить все».

Добавить код для размещения службы

Чтобы разместить службу, вы добавляете код для выполнения следующих шагов:

  1. Создайте URI для базового адреса.
  2. Создайте экземпляр класса для размещения службы.
  3. Создайте конечную точку службы.
  4. Включить обмен метаданными.
  5. Откройте узел службы для прослушивания входящих сообщений.

Внесите в код следующие изменения:

Откройте файл Program.cs или Module1.vb в проекте GettingStartedHost и замените его код следующим кодом:

Информацию о том, как работает этот код, см. в разделе Шаги программы размещения службы.

Обновите свойства проекта:

В окне обозревателя решений выберите папку GettingStartedHost, а затем выберите "Свойства" в контекстном меню.

На странице свойств GettingStartedHost выберите вкладку Приложение:

Для проектов Visual Basic выберите Service.Program из списка объектов запуска.

В меню "Файл" выберите "Сохранить все".

Убедитесь, что сервис работает

Создайте решение, а затем запустите консольное приложение GettingStartedHost из Visual Studio.

Служба должна запускаться с правами администратора. Поскольку вы открыли Visual Studio с правами администратора, при запуске GettingStartedHost в Visual Studio приложение также запускается с правами администратора. В качестве альтернативы вы можете открыть новую командную строку от имени администратора (выберите «Дополнительно» > «Запуск от имени администратора» в контекстном меню) и запустить в ней GettingStartedHost.exe.

Этапы программы хостинга

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

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

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

Когда вы добавляете библиотеку службы WCF, Visual Studio размещает ее для вас, если вы отлаживаете ее, запуская узел службы. Чтобы избежать конфликтов, вы можете запретить Visual Studio размещать сервисную библиотеку WCF.

Читайте также: