Введение в разработку служб Windows Communication Foundation в Visual Studio
Обновлен: Ноябрь 2007
Visual Studio 2008 предоставляет инструментарий для работы с Windows Communication Foundation (WCF), технологией создания распределенных приложений Microsoft. В этом разделе дается введение в WCF с точки зрения Visual Studio.
Что такое WCF?
Windows Communication Foundation (WCF) ― это унифицированная интегрированная среда для создания защищенных, надежных, транзакционных и интероперабельных распределенных приложений. В более ранних версиях Visual Studio имелись некоторые технологии, которые можно было использовать для взаимодействия между приложениями.
Однако если требовалось обеспечить совместный доступ к информации с любых платформ, необходимо было использовать веб-службу (также известную как веб-служба ASMX). Если достаточно было только обеспечить передачу данных между клиентом и сервером, использующим ОС Windows, то использовалось удаленное взаимодействие .NET Remoting. Если требовалось обеспечить транзактные коммуникации, то нужно было использовать Enterprise Services (DCOM), а если требовалось реализовать модель с организацией очереди, то нужно было использовать Message Queuing (или MSMQ).
WCF сводит воедино функциональные возможности всех этих технологий в унифицированную модель программирования. Это упрощает взаимодействие между разработанными распределенными приложениями.
Модель программирования WCF
Модель программирования WCF основана на коммуникации между двумя сущностями: службой WCF и клиентом WCF. Эта модель программирования инкапсулирована в пространство имен System.ServiceModel в .NET Framework.
Служба WCF
Служба WCF основана на интерфейсе, задающем контракт между службой и клиентом. Она помечается атрибутом ServiceContractAttribute, как показано в следующем коде:
<ServiceContract()> _
Public Interface IService1
<OperationContract()> _
Function GetData(ByVal Value As String) As String
End Interface
Методы и функции, которые предоставляются службой WCF, задаются путем пометки их атрибутом OperationContractAttribute. Кроме того, можно предоставить сериализованные данные, пометив составной тип атрибутом DataContractAttribute. Это делает возможным привязку данных на клиенте.
После того как интерфейс и его методы были определены, они инкапсулируются в класс, реализующий этот интерфейс. Множественные контракты службы WCF может реализовать единственный ее класс.
Служба WCF предоставляется для использования посредством того, что называется конечной точкой. Конечная точка ― это единственный способ сообщения с этой службой; невозможно получить к ней доступ посредством прямой ссылки, в отличие от других классов..
Конечная точка состоит из адреса, привязки и контракта. Адрес задает расположение сервера; это может быть URL-адрес, FTP-адрес, а также сетевой или локальный путь. Привязка задает способ сообщения с этой службой. Привязки WCF предоставляют гибкую модель для задания протокола, например HTTP или FTP, механизма обеспечения безопасности, например проверка подлинности Windows или имена и пароли пользователей, и многого другого. Контракт включает операции, предоставляемые классом службы WCF.
Для одной службы WCF может быть предоставлено несколько конечных точек. Это дает возможность разным клиентам взаимодействовать с одной и той же службой разными способами. Например, банковская служба может предоставить одну конечную точку для сотрудников, а другую ― для внешних клиентов, причем каждая конечная точка будет использовать другой адрес, привязку и/или контракт.
Клиент WCF
Клиент WCF состоит из прокси, позволяющего приложению сообщаться со службой (WCF), и конечной точки, соответствующей конечной точке, заданной для этой службы. Прокси создается на стороне клиента в файле app.config и включает информацию о типах и методах, предоставляемых службой. В случае служб, предоставляющих несколько конечных точек, клиент может выбрать одну, лучше всего соответствующую его требованиям; например, клиент может выбрать способ сообщения посредством протокола HTTP и проверку подлинности Windows.
После создания клиента WCF можно обращаться к его службе в коде точно так же, как это делается с любым другим объектом.. Например, для вызова метода GetData, показанного выше, можно написать примерно следующий код:
Dim client As New ServiceReference.Service1Client
Dim returnString As String
returnString = client.GetData("Hello")
MsgBox(returnString)
Средства WCF в Visual Studio
В Visual Studio 2008 предусмотрены средства, позволяющие создавать как службы, так и клиенты WCF. Пошаговое руководство, демонстрирующее эти средства, см. в разделе Пошаговое руководство. Создание служб WCF и доступ к таким службам.
Создание и тестирование служб WCF
Для быстрого создания своей собственной службы можно воспользоваться шаблонами WCF Visual Studio в качестве основы. Затем с помощью инструментов Auto Host службы WCF и WCF Test Client отладить и протестировать службу. Оба этих инструмента обеспечивают быстрый и удобный цикл отладки и тестирования, и исключают требование зафиксировать модель размещения на ранней стадии.
Шаблоны WCF
Шаблоны WCF Visual Studio предоставляют базовую структуру класса для разработки службы. Несколько шаблонов WCF доступно в диалоговом окне Добавление нового проекта. В частности, это шаблоны проектов библиотеки службы WCF, веб-сайтов службы WCF и элементов службы WCF.
При выборе шаблона файлы добавляются в контракт службы, в реализацию службы и в конфигурацию службы. Также добавляются все необходимые атрибуты, создавая простую службу типа «Hello World», и создавать какой-либо код нет необходимости. Конечно, может потребоваться добавить код для обеспечения функций и методов реальной службы, потому что шаблоны предоставляют лишь основу для конструктора.
Дополнительные сведения о шаблонах WCF см. в разделе WCF Visual Studio Templates.
Узел службы WCF
При запуске отладчика Visual Studio (путем нажатия F5) для проекта службы WCF автоматически запускается инструмент Узел службы WCF для размещения этой службы локально. Узел службы WCF составляет список служб в проекте службы WCF, загружает конфигурацию проекта и создает узел для каждой найденной службы.
С помощью Узла службы WCF можно тестировать службу WCF без создания дополнительного кода или фиксации в конкретном узле во время разработки.
Дополнительные сведения об Узле службы WCF см. в разделе WCF Service Host (WcfSvcHost.exe).
Клиент теста WCF
Инструмент Клиент теста WCF позволяет ввести тестовые параметры, отправить их в службу WCF и увидеть ответную реакцию службы. При комбинированном использовании с Узлом службы WCF этот инструмент обеспечивает удобную практику тестирования службы.
При нажатии клавиши F5 для отладки проекта службы WCF открывается Клиент теста WCF, который выводит список конечных точек службы, заданных в файле конфигурации. Можно протестировать эти параметры и запустить службу, и повторять этот процесс для последовательного тестирования и проверки службы.
Дополнительные сведения о Клиенте теста WCF см. в разделе WCF Test Client (WcfTestClient.exe).
Доступ к службам WCF в Visual Studio
Visual Studio 2008 упрощает задачу создания клиентов WCF, автоматически создавая прокси и конечную точку для служб, добавляемых в диалоговом окне Добавить ссылку на службу. Вся необходимая информация по конфигурации добавляется в файл app.config. Большей частью все, что вы должны делать, это создавать службу, чтобы потом ее использовать.
В диалоговом окне Добавить ссылку на службу можно вводить адрес службы или искать службу, заданную в решении. В этом окне содержится список служб и операций, которые они предоставляют. В нем также можно задать пространство имен, посредством которого в коде будут делаться ссылки на эти службы.
Диалоговое окно Настройка ссылок на службы позволяет настроить конфигурацию службы. В нем можно изменить адрес службы, задать уровень доступа, поведение в асинхронном режиме, типы контрактов сообщений, а также настроить повторное использование типов.
Дополнительные сведения об использовании служб WCF см. в разделе Использование служб WCF в Visual Studio.
См. также
Задачи
Пошаговое руководство. Создание служб WCF и доступ к таким службам
Другие ресурсы
Использование служб WCF в Visual Studio
Using the WCF Development Tools
Службы Windows Communication Foundation и службы данных ADO.NET