Что такое wcf c

Разработка приложений Service-Oriented с помощью WCF

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

Содержание раздела

новые возможности Windows Communication Foundation 4,5
Описывает новые возможности в Windows Communication Foundation.

Возможности упрощения 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.

Сведения о конфиденциальности
Сведения о конфиденциальности, касающиеся использования WCF

Источник

Пример создания WCF-сервиса, работающего внутри службы Windows

Windows Communication Foundation – программная платформа от Microsoft для создания, настройки и развертывания распределенных сетевых сервисов. WCF-runtime и его пространство имен System.ServiceModel, представляющее его главный программный интерфейс, это преемник технологий создания распределенных систем, успешно применяемых разработчиками для создания распределенных приложений на платформе Windows в последнее десятилетие. Разберём тестовый пример создания WCF-сервиса.

Открываем Visual Studio 2015 и создаём новый проект типа Class Library. Проект назовём WCFMyServiceLibrary.

Что такое wcf c. Смотреть фото Что такое wcf c. Смотреть картинку Что такое wcf c. Картинка про Что такое wcf c. Фото Что такое wcf c

Файл Class1.cs переименуем в MyService.cs и добавим ещё один класс, файл для которого назовём IMyService.cs.

Добавим ссылку на сборку System.ServiceModel.

На этом разработка сервиса завершена. Переходим к созданию службы Windows, которая будет контейнером для данного сервиса.

В том же решении (Solution) создадим новый проект типа «Служба Windows». Называем проект WindowsServiceHostForMyService.

Что такое wcf c. Смотреть фото Что такое wcf c. Смотреть картинку Что такое wcf c. Картинка про Что такое wcf c. Фото Что такое wcf c

Затем файл Service1.cs (только что созданного проекта) переименуем в MyService.cs. В этот проект добавим ссылку на сборку System.ServiceModel, а также не забываем указывать в файле MyService.cs директивы:

В классе MyService добавляем новый член:

Также необходимо добавить ссылку на проект WCFMyServiceLibrary, который находится в этом же решении:

Что такое wcf c. Смотреть фото Что такое wcf c. Смотреть картинку Что такое wcf c. Картинка про Что такое wcf c. Фото Что такое wcf c

Затем в классе MyService изменим метод OnStart таким образом, чтобы в этом методе добавлялись конечные точки нашего сервиса (endpoint):

Затем реализуем остановку сервиса в методе OnStop:

Затем в Обозревателе решения — двойной клик на файле MyService.cs (проекта WindowsServiceHostForMyService) откроет этот файл в режиме конструктора (Design Mode).

Что такое wcf c. Смотреть фото Что такое wcf c. Смотреть картинку Что такое wcf c. Картинка про Что такое wcf c. Фото Что такое wcf c

На пустом пространстве вызываем контекстное меню (щелчок правой кнопкой мыши) и выбираем «Добавить установщик».

Что такое wcf c. Смотреть фото Что такое wcf c. Смотреть картинку Что такое wcf c. Картинка про Что такое wcf c. Фото Что такое wcf c

При этом будет создан новый класс ProjectInstaller.cs
Переименуем файл ProjectInstaller.cs в MyServiceInstaller.cs.
При этом выйдет окно с вопросом, следует ли переименовать зависимые объекты – отвечаем «Да».

Добавим в файл ссылку

Затем изменим код конструктора класса MyServiceInstaller:

Заметим, что вызов метода InitializeComponent() мы заблокировали с помощью комментария.
На этом разработка службы Windows завершена. Собираем всё решение (Build Solution) и переходим к следующему этапу – установка службы Windows.

Для установки нашей службы создадим bat-файл (с произвольным названием, например Install_Windows_Service.bat) следующего содержания:

Нужно скопировать этот bat-файл в ту же папку, где находится скомпилированный файл WindowsServiceHostForMyService.exe (вам нужно заранее продумать, в какой папке будет лежать этот файл, который будет всегда запущен в качестве службы Windows).

Запускаем bat-файл, после чего наша программа WindowsServiceHostForMyService.exe будет установлена в качестве службы Windows.

Запустим эту службу с помощью стандартной программы управления службами.

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

Для этого прежде всего нужно организовать так называемый «переходник» — Service Proxy – набор настроек, описывающих сервис для клиентского приложения.

Воспользуемся для этого стандартной утилитой SvcUtil.exe. Создадим файл Generate_Proxy.bat следующего содержания

Запустим этот файл (стандартная утилита SvcUtil.exe находится в папке C:\Program Files\Microsoft SDKs\Windows\v7.0\Bin).

Этот файл нужно запустить во время работы нашего сервиса, т.е. в данном случае, после успешного запуска службы Windows WindowsServiceHostForMyService.

В случае успешного запуска, программа SvcUtil.exe сгенерирует 2 файла — MyServiceProxy.cs и App.config.

Эти файлы необходимо добавить для клиентского приложения, чтобы это приложение могло вызывать методы нашей службы (чуть ниже вы узнаете, что файл App.config я решил не добавлять — обойдёмся и без него).

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

Т.е. можно запускать эту утилиту, указав только одну конечную точку, либо http либо net.tcp.

В том же решении (Solution) создадим обычное приложение Windows Forms. Назовем его WindowsFormsApplication1

Что такое wcf c. Смотреть фото Что такое wcf c. Смотреть картинку Что такое wcf c. Картинка про Что такое wcf c. Фото Что такое wcf c

Добавим в этот проект ссылку на System.ServiceModel и, конечно же,

Добавим в этот проект файл MyServiceProxy.cs (именно его мы сгенерировали утилитой SvcUtil.exe). При этом следует добавить в файл MyServiceProxy.cs следующие строки:

После этого, мы сможем ссылаться на класс MyServiceClient (этот класс создан программой SvcUtil.exe), указав в файле формы директиву.

Поступим неординарно – и не будем добавлять файл App.Config в проект клиента!

Затем набросаем на форму 3 кнопки, текстовое поле textBox1 (пользователь вводит сюда строку для отправки на сервер) и поле richTextbox1 (имитация подсистемы сообщений нашего приложения – именно в это поле будут поступать сообщения от программы, в том числе и те, что вернул нам сервис)

Кнопка btn_Start – создаёт клиента
Кнопка btn_Send – отправляет сервису текстовую строку из текстового поля
Кнопка btn_Close – удаляет клиента из памяти и закрывает приложение

Компилируем и запускаем с другой машины из той же сети – и тестируем сервис, нажав сначала btn_Start, а затем отправляя сервису сообщения нажатием btn_Send.

Что такое wcf c. Смотреть фото Что такое wcf c. Смотреть картинку Что такое wcf c. Картинка про Что такое wcf c. Фото Что такое wcf c

Заметим, что в данном примере на клиенте мы совсем не использовали конечную точку

http://localhost:9001/MyService
а работали только с

net.tcp://localhost:9002/MyService
(вы легко сможете это сделать самостоятельно – раз уж вам net.tcp по плечу, то уж http-то с закрытыми глазами сделаете).

Кроме того, мы не использовали файл App.config, создав на клиенте конечную точку не с помощью настроек, а с помощью кода C#. Причины тому – субъективные – автор не любит возиться с XML-настройками, а по возможности всё делает явно в коде. Спасибо за внимание!

Лирическое отступление. Автор статейки познакомился с языком C# в марте сего года, первое приложение на C# написал в мае (до этого много лет формошлёпил на Delphi и даже на MS Access).

Источник

Подробные сведения о возможностях WCF

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

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

Службы рабочего процесса
Описывает создание и настройку служб рабочих процессов.

Конечные точки: адреса, привязки и контракты
Описывает способ контроля нескольких аспектов службы.

Передача данных и сериализация
Описывает способ настройки сериализации данных для совместной работы или будущей совместимости.

Сеансы, экземпляры и параллелизм
Описывает создание экземпляров и режимов сеанса WCF и способ выбора правильного режима для приложения.

Транспорты
Описывает способ настройки транспортного уровня, нижнего уровня стека каналов.

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

Транзакции
Объясняет, как создать транзакционные операции с возможностью отката при необходимости.

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

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

Метаданные
Описывает архитектуру и форматы метаданных.

Клиенты
Описывает способ создания различных клиентов для доступа к службам.

Размещение
Описывает размещение. Служба может размещаться в другом приложении или быть резидентной (размещаться сама в себе).

Взаимодействие и интеграция
Описывает использование WCF для расширения существующей логики вместо ее переписывания при существенном изменении логики компонентно-ориентированного приложения, размещенного в COM+.

Модель веб-программирования HTTP WCF
Описывает модель веб-программирования WCF, позволяющую разработчикам предоставлять операции службы WCF конечным точкам, не являющимся конечными точками SOAP.

Синдикация WCF
Описывает поддержку простого экспонирования веб-каналов синдикации из службы WCF.

Интеграция с AJAX и поддержка JSON
Описывает поддержку форматов данных асинхронных сценариев JavaScript, XML (AJAX) и JSON в ASP.NET, позволяющую службам WCF предоставлять операции клиентам AJAX.

Обнаружение WCF
Описывает поддержку для включения обнаружения служб во время выполнения совместимым способом с помощью протокола WS-Discovery.

Маршрутизация
Описывает службу маршрутизации.

Источник

Службы Windows Communication Foundation и службы данных WCF в Visual Studio

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

Что такое WCF

Что такое WCF Data Services

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

Служба WCF

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

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

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

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

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

Конечная точка состоит из адреса, привязки и контракта. Адрес определяет, где находится служба; это может быть URL-адрес, FTP-адрес, сетевой или локальный путь. Привязка определяет способ взаимодействия со службой. Привязки WCF предоставляют универсальную модель для указания протокола, такого как HTTP или FTP, механизма безопасности, такого как проверка подлинности Windows или имена и пароли пользователей, и многого другого. Контракт включает операции, предоставляемые классом службы WCF.

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

клиент WCF

Клиент WCF включает в себя прокси-сервер, который позволяет приложению взаимодействовать со службой WCF, и конечную точку, которая соответствует конечной точке, определенной для службы. Прокси-сервер создается на стороне клиента в файле app.config и содержит информацию о типах и методах, предоставляемых службой. Для служб, которые предоставляют несколько конечных точек, клиент может выбрать ту, которая лучше всего соответствует его потребностям, например для взаимодействия по протоколу HTTP и использования проверки подлинности Windows.

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

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

Создание и тестирование служб WCF

Вы можете использовать шаблоны WCF в Visual Studio в качестве основы для быстрого создания собственной службы. Затем с помощью WCF Service Auto Host и тестового клиента 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. В большинстве случаев все, что вам нужно сделать, это создать экземпляр службы, чтобы использовать его.

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

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

Практическое руководство. Выбор конечной точки службы

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

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

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

Выбор конечной точки службы

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

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

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

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

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

Поиск доступных конечных точек для службы WCF

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

Выполните поиск по тегу в этом файле.

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

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

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

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

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

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

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

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

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

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

Практическое руководство. Привязка данных, возвращаемых службой

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

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

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

Открывается окно Источники данных.

В окне Источники данных разверните узел для вашей ссылки на службу. Появятся все составные типы, возвращаемые службой.

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

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

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

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

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

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

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

В окне Источники данных разверните узел для вашей ссылки на службу. Появятся все составные типы, возвращаемые службой.

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

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

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

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

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

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

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

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

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

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

Отключение совместного использования типов во всех сборках

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

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

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

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *