Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Visual Studio предоставляет средства для работы с Windows Communication Foundation (WCF) и службами данных WCF, технологиями Майкрософт для создания распределенных приложений. В этой статье приведены общие сведения о службах с точки зрения Visual Studio. Полная документация см. в статье WCF Data Services 4.5.
Windows Communication Foundation (WCF) — это единая платформа для создания безопасных, надежных, транзакций и взаимодействия распределенных приложений. Он заменяет старые технологии межпроцессного взаимодействия, такие как веб-службы ASMX, удаленное взаимодействие .NET, корпоративные службы (распределенная объектная модель (DCOM)) и очередь сообщений Майкрософт (MSMQ). WCF объединяет функциональные возможности всех этих технологий в рамках единой модели программирования. Этот подход упрощает разработку распределенных приложений.
Службы данных WCF
Службы данных WCF — это реализация стандарта протокола Open Data (Open Data Protocol (OData)). Службы данных WCF позволяют предоставлять табличные данные в виде набора ИНТЕРФЕЙСов REST API, что позволяет возвращать данные с помощью стандартных команд HTTP, таких как GET, PUTPOSTи DELETE. На стороне сервера ASP.NET веб-API заменяет службы данных WCF для создания новых служб OData. Клиентская библиотека WCF Data Services по-прежнему является хорошим выбором для использования служб OData в приложении .NET из Visual Studio (Проект>Добавить ссылку на службу). Дополнительные сведения см. в разделе Службы данных WCF 4.5.
Модель программирования WCF
Модель программирования WCF основана на взаимодействии между двумя сущностями: службой WCF и клиентом WCF. Модель программирования инкапсулируется в System.ServiceModel пространстве имен в .NET.
Служба WCF
Служба WCF основана на интерфейсе, который определяет контракт между службой и клиентом. Служба помечена атрибутом ServiceContractAttribute , как показано в следующем коде:
Вы определяете функции или методы, предоставляемые службой WCF, помечая их атрибутом OperationContractAttribute .
Кроме того, можно предоставлять сериализованные данные, помечая составной тип атрибутом DataContractAttribute , который обеспечивает привязку данных в клиенте.
После определения интерфейса и его методов они инкапсулируются в классе, реализующего интерфейс. Один класс службы WCF может реализовать несколько контрактов службы.
Служба WCF предоставляется для использования через называемую конечную точку. Конечная точка предоставляет единственный способ взаимодействия со службой. Вы не можете получить доступ к службе напрямую, как это делаете с другими классами.
Конечная точка состоит из адреса, привязки и контракта. Адрес определяет расположение службы, например URL-адрес, АДРЕС ПРОТОКОЛА ПЕРЕДАЧи файлов (FTP) или сетевой или локальный путь. Привязка определяет способ взаимодействия со службой. Привязки WCF предоставляют универсальную модель для указания протокола, например HTTP или FTP, с механизмом безопасности, таким как проверка подлинности Windows или имена пользователей и пароли. Контракт включает операции, предоставляемые классом службы WCF.
Для одной службы WCF можно предоставить несколько конечных точек. Такой подход позволяет разным клиентам взаимодействовать с одной и той же службой разными способами. Например, служба банковского обслуживания может предоставлять одну конечную точку для сотрудников и другую для внешних клиентов, где каждый использует другой адрес, привязку или контракт.
Клиент WCF
Клиент WCF состоит из прокси-сервера , который позволяет приложению взаимодействовать со службой WCF и конечной точкой, которая соответствует конечной точке, определенной для службы. Прокси-сервер создается на стороне клиента в файлеapp.config и содержит сведения о типах и методах, предоставляемых службой. Для служб, которые предоставляют несколько конечных точек, клиент может выбрать тот, который лучше всего соответствует его потребностям, например для обмена данными по протоколу HTTP и использования проверки подлинности Windows.
После создания клиента WCF вы ссылаетесь на службу в коде так же, как и любой другой объект. Например, чтобы вызвать метод, показанный GetData ранее, напишите код, похожий на следующий пример:
private void button1_Click(System.Object sender, System.EventArgs e)
{
ServiceReference1.Service1Client client = new
ServiceReference1.Service1Client();
string returnString;
returnString = client.GetData(textBox1.Text);
label1.Text = returnString;
}
Средства WCF в Visual Studio
Visual Studio предоставляет средства для создания служб WCF и клиентов WCF. Дополнительные сведения см. в пошаговом руководстве. Создание простой службы WCF в Windows Forms.
Создание и проверка служб WCF
Шаблоны WCF Visual Studio можно использовать в качестве основы для быстрого создания собственной службы. Затем можно использовать автоматический узел службы WCF и тестовый клиент WCF для отладки и тестирования службы. Эти средства обеспечивают быстрый и удобный цикл отладки и тестирования, а также устраняют необходимость фиксации модели размещения на ранней стадии.
Шаблоны WCF
Шаблоны WCF Visual Studio предоставляют базовую структуру классов для разработки служб. В диалоговом окне "Добавление нового проекта " доступны несколько шаблонов WCF, включая проекты библиотеки служб WCF, веб-сайты служб WCF и шаблоны элементов службы WCF.
При выборе шаблона файлы добавляются для контракта службы, реализации службы и конфигурации службы. Все необходимые атрибуты уже добавлены, создавая простой тип службы Hello World, и вам не нужно писать код. Вы можете добавить код для предоставления функций и методов для реальной службы, но шаблоны предоставляют базовую основу.
Дополнительные сведения см. в шаблонах WCF Visual Studio.
Хост службы WCF
При запуске отладчика Visual Studio (выбрав F5) для проекта службы WCF средство узла службы WCF автоматически запускается для размещения службы локально. Средство перечисляет службы в проекте службы WCF, загружает конфигурацию проекта и создает экземпляр узла для каждой найденной службы.
Это средство помогает протестировать службу WCF без написания дополнительного кода или фиксации определенного узла во время разработки. Дополнительные сведения см. в разделе "Хост службы WCF" (WcfSvcHost.exe).
Тестовый клиент WCF
Средство клиента тестирования WCF позволяет вводить параметры теста, отправлять входные данные в службу WCF и просматривать ответ от службы. Это средство обеспечивает удобный интерфейс тестирования служб при объединении его с узлом службы WCF. Расположение средства — Common7\IDE в папке установки Visual Studio.
При выборе F5 для отладки проекта службы WCF откроется тестовый клиент WCF и отображает список конечных точек службы, определенных в файле конфигурации. Вы можете протестировать параметры и запустить службу, а затем повторить этот процесс для непрерывного тестирования и проверки службы. Дополнительные сведения см. в разделе "Тестовый клиент WCF" (WcfTestClient.exe).
Доступ к службам WCF в Visual Studio
Visual Studio упрощает задачу создания клиентов WCF, автоматически создавая прокси-сервер и конечную точку для служб, добавляемых в диалоговом окне "Добавление ссылки на службу ". Все необходимые сведения о конфигурации добавляются в файл app.config . В большинстве случаев все, что вам нужно сделать, — создать экземпляр службы, чтобы начать использовать ее.
В диалоговом окне "Добавление ссылки на службу " укажите адрес службы или найдите службу, определенную в решении. Система возвращает список служб и операций, предоставляемых службами. Вы также можете определить пространство имен для ссылки на службы в коде.
В диалоговом окне "Настройка ссылок на службы" вы настраиваете конфигурацию для службы. Вы можете изменить адрес службы, указать уровень доступа, асинхронное поведение и типы контрактов сообщений и настроить повторное использование типов.
Конечная точка службы
Некоторые службы WCF предоставляют несколько конечных точек, с помощью которых клиенты могут взаимодействовать со службой. Служба может предоставлять одну конечную точку, использующую привязку HTTP с именем пользователя и безопасностью паролей, а также вторую конечную точку, которая использует FTP с проверкой подлинности Windows. Первая конечная точка используется приложениями для доступа к службе за пределами брандмауэра, а второй — в интрасети.
В этом сценарии вы указываете параметр endpointConfigurationName с помощью конструктора для ссылки на службу.
Замечание
Инструкции в этой статье иллюстрируют последнюю версию интерактивного интерфейса разработки (IDE), доступную в Visual Studio. На компьютере могут отображаться различные имена или расположения для некоторых элементов пользовательского интерфейса. Вы можете использовать другую версию Visual Studio или разные параметры среды. Дополнительные сведения см. в разделе Персонализация интегрированной среды разработки.
Выбор конечной точки службы
Выберите конечную точку службы, выполнив следующие действия:
Добавьте ссылку на службу WCF, щелкнув правой кнопкой мыши узел проекта в обозревателе решений и выбрав "Добавить ссылку на службу".
В редакторе кода добавьте конструктор для ссылки на службу. Замените
ServiceReferenceна пространство имен для ссылки на службу иService1Clientна имя службы.
При вводе кода отображается список IntelliSense, содержащий перегрузки конструктора. Выберите перегрузку
endpointConfigurationName As String.После выбора перегрузки введите
="<ServiceEndpoint>"<ServiceEndpoint>имя службы конечной точки, которую вы хотите использовать.Подсказка
Имена доступных конечных точек определяются в файлеapp.config .
Поиск доступных конечных точек для службы WCF
Чтобы найти доступные конечные точки для службы WCF, выполните следующие действия.
В обозревателе решений щелкните правой кнопкой мыши файл app.config для проекта, содержащего ссылку на службу, и нажмите кнопку "Открыть". Файл открывается в редакторе кода.
<Client>Найдите тег в файле.<Client>В разделе тегов найдите вложенный тег, который начинается с<Endpoint>.Если ссылка на службу предоставляет несколько конечных точек, существует два или более
<Endpoint>тегов.<EndPoint>В определении тега найдитеname="<ServiceEndpoint>"параметр (где<ServiceEndpoint>представляет имя конечной точки для службы). Это значение представляет собой имя конечной точки службы, которое можно передать перегруженному конструктору для создания ссылки на службу.
Вызовите методы службы асинхронно
Большинство методов в службах WCF можно вызывать синхронно или асинхронно. При асинхронном вызове метода приложение может продолжать работать во время вызова метода. Этот подход полезен, если система работает через медленное подключение.
При добавлении ссылки на службу в проект конфигурация по умолчанию вызывает методы синхронно. Вы можете изменить поведение для асинхронного вызова методов в диалоговом окне Настройка ссылки на службу.
Этот параметр устанавливается на основе каждой службы . Если один метод для службы вызывается асинхронно, все методы должны вызываться асинхронно.
Замечание
Инструкции в этой статье иллюстрируют последнюю версию интерактивного интерфейса разработки (IDE), доступную в Visual Studio. На компьютере могут отображаться различные имена или расположения для некоторых элементов пользовательского интерфейса. Вы можете использовать другую версию Visual Studio или разные параметры среды. Дополнительные сведения см. в разделе Персонализация интегрированной среды разработки.
Вызов метода асинхронно
Чтобы асинхронно вызвать метод службы, выполните следующие действия.
В обозревателе решений выберите ссылку на службу.
Выберите Проект>Настроить ссылку на службу.
В диалоговом окне "Настройка ссылки на службу" установите флажок "Создать асинхронные операции ".
Привязка данных, возвращаемых службой
Вы можете привязать данные, возвращаемые службой WCF, к элементу управления так же, как привязывать любой другой источник данных к элементу управления. При добавлении ссылки на службу WCF, если служба содержит составные типы, возвращающие данные, они автоматически добавляются в окно источников данных .
Привязка элемента управления к полю данных, возвращаемого службой WCF
Чтобы привязать элемент управления к одному полю данных, возвращаемого службой WCF, выполните следующие действия:
Выберите Данные>Показать источники данных. Откроется окно "Источники данных ".
В окне источников данных разверните узел для ссылки на службу. Любые составные типы, возвращаемые службой, отображаются.
Разверните типовой узел и просмотрите поля данных этого типа.
Выберите поле и разверните раскрывающийся список, чтобы просмотреть список доступных элементов управления для типа данных.
Выберите тип элемента управления, к которому требуется привязать.
Перетащите поле в форму. Элемент управления добавляется в форму вместе с компонентом BindingSource и компонентом BindingNavigator .
Повторите шаги 4–6 и привяжите любые другие поля.
Привязка элемента управления к составному типу, возвращаемому службой WCF
Чтобы привязать элемент управления к составным типам, возвращаемым службой WCF, выполните следующие действия:
Выберите Данные>Показать источники данных. Откроется окно "Источники данных ".
В окне источников данных разверните узел для ссылки на службу. Любые составные типы, возвращаемые службой, отображаются.
Выберите узел для указанного типа и разверните выпадающий список, чтобы просмотреть список доступных опций.
Выберите DataGridView и просмотрите данные в сетке или выберите "Сведения " и просмотрите данные с помощью отдельных элементов управления.
Перетащите узел в форму. Элементы управления добавляются в форму вместе с компонентом BindingSource и компонентом BindingNavigator .
Настройка служб для повторного использования существующих типов
При добавлении ссылки на службу в проект все типы, определенные в службе, создаются в локальном проекте. Во многих случаях этот подход создает повторяющиеся типы, когда служба использует распространенные типы .NET или когда типы определены в общей библиотеке.
Чтобы избежать этой проблемы, по умолчанию используются типы в ссылочных сборках. Если вы хотите отключить совместное использование типов для одной или нескольких сборок, измените настройки в диалоговом окне «Настройка ссылок на службы».
Отключение совместного использования типов в одной сборке
Вы можете отключить совместное использование типов в одной сборке, выполнив следующие действия.
В обозревателе решений выберите ссылку на службу.
Выберите Проект>Настроить ссылку на службу.
В диалоговом окне Настройка ссылок на службу установите флажок Повторно использовать типы в указанных ссылочных сборках.
Установите флажок для каждой сборки, в которой вы хотите включить совместное использование типов. Чтобы отключить совместное использование типов для сборки, оставьте флажок пустым.
Отключение совместного использования типов во всех сборках
Вы также можете отключить общий доступ к типам во всех сборках, выполнив следующие действия.
В обозревателе решений выберите ссылку на службу.
Выберите Проект>Настроить справочник службы.
В диалоговом окне "Настройка параметров ссылок на службу" снимите флажок "Повторное использование типов в сборках ссылок".
Изучение аналогичных концепций
В следующих статьях описываются понятия и процедуры, связанные со службами WCF и службами данных WCF.
| Название | Описание |
|---|---|
| Пошаговое руководство. Создание базовой службы WCF в Windows Forms | Предоставляет пошаговую демонстрацию создания и использования служб WCF в Visual Studio. |
| Пошаговое руководство. Создание службы данных WCF с помощью WPF и Entity Framework | Предоставляет пошаговую демонстрацию создания и использования служб данных WCF в Visual Studio. |
| Использование средств разработки WCF | Описывает создание и тестирование служб WCF в Visual Studio. |
| Практическое руководство. Добавление, обновление или удаление ссылки на службу данных WCF | Описывает, как использовать диалоговое окно "Добавление ссылки на службу" для поиска служб данных WCF в решении. |
| Устранение проблем с ссылками на службы | Представляет некоторые распространенные ошибки, которые могут возникать со ссылками на службы и как их предотвратить. |
| Отладка служб WCF | Описывает распространенные проблемы отладки и методы, которые могут возникнуть при отладке служб WCF. |
| Пошаговое руководство. Создание приложения данных n уровня | Содержит пошаговые инструкции по созданию типизированного набора данных и разделению кода tableAdapter и набора данных на несколько проектов. |
| Просмотрите диалоговое окно "Настройка ссылки на службу". | Описывает элементы пользовательского интерфейса диалогового окна "Настройка ссылки на службу ". |
Связанный контент
- инструменты работы с данными Visual Studio для .NET
- пространство имен System.ServiceModel
- пространство имен System.Data.Services