Учебник: Начало работы с приложениями Windows Communication Foundation Tutorial: Get started with Windows Communication Foundation applications
Следующие учебники познакомят вас с опытом программирования Фонда коммуникаций Windows (WCF). The following series of tutorials introduce you to the Windows Communication Foundation (WCF) programming experience. Работа явивая эти учебники для того, чтобы дать вам вводное понимание шагов, необходимых для создания приложений WCF. Working through these tutorials in order will give you an introductory understanding of the steps required to create WCF applications. После завершения работы у вас будет запущенная служба WCF и клиент WCF, который звонит в службу. After you finish, you’ll have a running WCF service and a WCF client that calls the service.
Учебник предполагает, что вы используете Visual Studio в качестве среды разработки. The tutorial assumes you’re using Visual Studio as the development environment. Если вы используете другую среду разработки, игнорируйте инструкции Visual Studio. If you’re using another development environment, ignore the Visual Studio-specific instructions.
Для примера приложений WCF, которые можно загрузить и запустить, см. For sample WCF applications that you can download and run, see Windows Communication Foundation samples. Для введения в образцы, см. Начало образца. For an introduction to the samples, see Getting started sample.
Для получения более подробной информации о создании сервисов и клиентов, см. For more in-depth information about creating services and clients, see Basic WCF programming.
Учебники WCF WCF tutorials
В первых трех учебниках описывается, как определить контракт на обслуживание WCF, как его реализовать и как его разместить. The first three tutorials describe how to define a WCF service contract, how to implement it, and how to host it. Создаваемый сервис является самоуправляемым в приложении консоли. The service that you create is self-hosted within a console application. Вы также можете размещать услуги в рамках служб ы информации о Интернете (IIS). You can also host services under Microsoft Internet Information Services (IIS). Для получения дополнительной информации см. For more information, see How to: Host a WCF Service in IIS. Хотя вы используете код для настройки службы в учебнике, вы также можете настроить службы в файле конфигурации. Although you use code to configure the service in the tutorial, you can also configure services within a configuration file.
Вы создаете контракт WCF с пользовательским интерфейсом. You create a WCF contract with a user-defined interface. Этот контракт определяет функциональность, которую предоставляет служба. This contract defines the functionality that the service exposes.
После определения контракта необходимо реализовать его с помощью класса обслуживания. After you define a contract, you must implement it with a service class.
Настройте конечную точку для службы и разместите службу в консольном приложении. Configure an endpoint for the service and host the service in a console application. Чтобы служба стала активной, необходимо настроить ее и разместить в среде выполнения времени. For a service to become active, you must configure it and host it within a run-time environment. Эта среда времени выполнения создает службу и контролирует ее контекст и срок службы. This run-time environment creates the service and controls its context and lifetime.
Следующие два учебника описывают, как создавать, настраивать и использовать клиентское приложение для вызова операций, которые предоставляет служба. The next two tutorials describe how to create, configure, and use a client application to call the operations the service exposes. Службы публикуют доступные метаданные, определяющие сведения, необходимые клиентским приложениям для взаимодействия со службой. Services publish metadata that define the information a client application needs to communicate with the service. Visual Studio автоматизирует процесс доступа к этим метаданным и использует их для построения клиентского приложения для службы. Visual Studio automates the process of accessing this metadata and uses it to construct the client application for the service. Если вы решите не использовать Visual Studio, вы можете использовать инструмент ServiceModel Metadata Utility (Svcutil.exe) вместо этого. If you decide not to use Visual Studio, you can use the ServiceModel Metadata Utility tool (Svcutil.exe) instead.
Извлекать метаданные для создания прокси-сервера клиента WCF из службы WCF. Retrieve metadata for creating a WCF client proxy from a WCF service. Вы получаете метаданные с помощью Visual Studio для добавления ссылки на услуги или можете использовать инструмент ServiceModel Metadata Utility. You retrieve metadata by using Visual Studio to add a service reference or you can use the ServiceModel Metadata Utility tool. Вы указываете конечную точку, которую клиент использует для доступа к службе. You specify the endpoint that the client uses to access the service.
Используйте прокси-сервер клиента WCF для вызова службы операций. Use the WCF client proxy to call the service operations.
Consuming Web Services with WCF
Windows Communication Foundation
Windows Communication Foundation (WCF) – это унифицированная модель программирования распределенных приложений на платформе Microsoft. Она инкорпорирует предшествующие технологии – ASMX, .NET Remoting, DCOM и MSMQ – и предоставляет расширяемый API, отвечающий разнообразным требованиям, которые возникают при создании распределенных систем. До WCF вам приходилось овладевать всеми этими технологиями, чтобы выбрать ту, которая лучше всего подходит в конкретной ситуации. WCF упрощает задачу, предлагая единообразный подход.
В современных распределенных приложениях чаще всего применяются Web -службы на основе XML . С их помощью реализуются разнообразные технические и бизнес функции, как в закрытых, так и в открытых сетях. Иногда при этом используется спецификация SOAP , иногда – нет. Обычно информация передается в виде текстовых документов, размеченных с помощью тегов в угловых скобках, но это необязательно. Как правило, в качестве транспортного протокола выбирается HTTP , но опять же не всегда. WCF – это каркас для работы с Web службами на основе XML , который совместим со многими другими технологиями.
Будучи всеобъемлющей системой работы со службами, WCF вводит терминологию, с которой вы должны быть знакомы. Термины не обязательно обозначают какие-то новые концепции, однако описывают согласованную систему понятий, которая необходима для обсуждения новой технологии.
В основе своей служба – это множество оконечных точек (endpoints), которые предоставляет клиентам некие полезные возможности. Оконечная точка – это просто сетевой ресурс , которому можно посылать сообщения. Чтобы воспользоваться предоставляемыми возможностями, клиент посылает сообщения оконечным точкам в формате, который описывается контрактом между клиентом и службой. Службы ожидают поступления сообщений на адрес оконечной точки, предполагая, что сообщения будут записаны в оговоренном формате. На рис. 23.1схематически представлено отношение между клиентом и службой.
Как показано на рис. 23.2, WCF служба может состоять из нескольких оконечных точек, каждая из которых описывается собственным адресом, привязкой и контрактом. Поскольку поток сообщений обычно двунаправленный, клиенты неявно также оказываются контейнерами оконечных точек.
Оконечная точка службы не может отвечать на сообщения, если служба не размещена в каком-нибудь работающем процессе операционной системы. Владельцем службы может быть любой процесс, например, работающее без присмотра человека серверное приложение , Web сервер и даже клиентская программа , представленная полноценным окном на экране ПК или значком в системном лотке Windows . Для служб можно определить поведения, управляющие степенью параллелизма, ограничением пропускной способности, транзакционной целостностью, безопасностью и другими семантическими аспектами. Поведения можно реализовать с помощью атрибутов .NET, путем манипулирования исполняющей средой WCF или в конфигурационных файлах. В сочетании с гибкой моделью размещения поведения заметно упрощают написание многопоточного кода.
Как показано на рис. 23.3, главная программа может создать экземпляр класса ServiceHost, который будет отвечать за создание оконечных точек службы.
Службы данных WCF (Silverlight)
Silverlight включает клиентскую библиотеку сред. Службы данных WCF, которая позволяет получить доступ к данным из любой службы, предоставляющей доступ к веб-каналу Open Data Protocol (OData). OData основывается на сущности и модели связи, которая позволяет получать доступ к данным в стиле ресурсов переноса репрезентативного состояния (REST). Приложения на базе Silverlight могут получить доступ к этим данным через стандартный протокол HTTP для выполнения запросов и даже для создания, обновления и удаления данных в службе данных.
Службы данных WCF, компонент .NET Framework, позволяет легко реализовывать службу данных для предоставления веб-канала OData в приложении .NET Framework. сред. Службы данных WCF поддерживает полный набор функциональных возможностей OData для обнаружения, создания запросов и обновления данных в службе данных.
Создание WCF сервиса
Всего имеется 4 шаблона, через которые можно реализовать веб-сервисы:
- Silverlight-enabled WCF Service. Этот шаблон создает веб-службу, которая предоставляет данные клиенту Silverlight или внешнему интерфейсу. Шаблон может быть добавлен на веб-сайт или в проект веб-приложения для создания службы WCF, которая включает код и конфигурацию службы, поддерживающей взаимодействие с клиентом Silverlight.
- AJAX — enabled WCF Service. Этот шаблон предоставляет элемент управления AJAX как службу WCF.
- WCF Service Application. Это пользовательский шаблон, который предоставляет быстрый способ для добавления служб WCF в существующие проекты Visual Studio.
- Web Service. Шаблон обычного веб-сервиса.
В Silverlight — приложение добавляется файл Silverlight-enabled WCF Service ( Рис 23.4). Файл будет иметь расширение svc.
В файле сгенерируется код. Атрибут [OperationContract] своего рода разделитель для методов в сервисе, при добавлении очередного метода, необходимо добавлять данный атрибут :
Поскольку режим совместимости ASP.NET подразумевает семантику обработки запросов, существенно отличающуюся от WCF по умолчанию, в реализации отдельных служб имеется возможность управления тем, выполняются ли они внутри приложения, для которого включен режим совместимости ASP . NET . Службы могут использовать атрибут AspNetCompatibilityRequirements для указания, поддерживают ли они режим совместимости ASP.NET.
Параметр режима совместимости на уровне приложения | [AspNetCompatibilityRequirementsMode] Параметр | Полученный результат |
---|---|---|
aspNetCompatibilityEnabled = «true» | Required | Служба включается успешно. |
aspNetCompatibilityEnabled = «true» | Allowed | Служба включается успешно. |
aspNetCompatibilityEnabled = «true» | NotAllowed | При получении службой сообщения возникает ошибка активации. |
aspNetCompatibilityEnabled = «false» | Required | При получении службой сообщения возникает ошибка активации. |
aspNetCompatibilityEnabled = «false» | Allowed | Служба включается успешно. |
aspNetCompatibilityEnabled = «false» | NotAllowed | Служба включается успешно. |
В проекте Silverlight добавляем ссылку на сервис. В открывшемся окне (Рис 23.5) необходимо выбрать нужные сервисы. VS автоматически создаст ServiceReferences.ClientConfig , в котором находятся настройки привязки сервиса.
Файл Web .config, так же претерпит изменение:
Большинство методов в службах Windows Communication Foundation (WCF) может быть вызвано как синхронно, так и асинхронно. Асинхронный вызов метода позволяет приложению работать во время выполнения этого вызова через медленное соединение. Пример асинхронного вызова реализован во фрагменте кода:
При запуске приложения откроется окно браузера, где выполнится метод, который реализован в WCF сервисе ( Рис 23.6).
Учебник. Использование клиента Windows Communication Foundation Tutorial: Use a Windows Communication Foundation client
В этом руководстве описываются пять задач, необходимых для создания базового приложения Windows Communication Foundation (WCF). This tutorial describes the last of five tasks required to create a basic Windows Communication Foundation (WCF) application. Общие сведения о учебниках см. в разделе учебник. Начало работы с Windows Communication Foundation приложениями. For an overview of the tutorials, see Tutorial: Get started with Windows Communication Foundation applications.
После создания и настройки прокси-сервера Windows Communication Foundation (WCF) необходимо создать экземпляр клиента и скомпилировать клиентское приложение. After you’ve created and configured a Windows Communication Foundation (WCF) proxy, you create a client instance and compile the client application. Затем его можно использовать для взаимодействия со службой WCF. You then use it to communicate with the WCF service.
В этом руководстве вы узнаете, как: In this tutorial, you learn how to:
- Добавьте код для использования клиента WCF. Add code to use the WCF client.
- Протестируйте клиент WCF. Test the WCF client.
Добавление кода для использования клиента WCF Add code to use the WCF client
Клиентский код выполняет следующие действия: The client code does the following steps:
- Создает экземпляр клиента WCF. Instantiates the WCF client.
- Вызывает операции службы из созданной учетной записи-посредника. Calls the service operations from the generated proxy.
- Закрывает клиент после завершения вызова операции. Closes the client after the operation call is completed.
Откройте файл Program.CS или Module1. vb из проекта GettingStartedClient и замените его код следующим кодом: Open the Program.cs or Module1.vb file from the GettingStartedClient project and replace its code with the following code:
Обратите внимание на using инструкцию (для Visual C#) или Imports (for Visual Basic), которая импортирует GettingStartedClient.ServiceReference1 . Notice the using (for Visual C#) or Imports (for Visual Basic) statement that imports GettingStartedClient.ServiceReference1 . Эта инструкция импортирует код, созданный Visual Studio с помощью функции Добавление ссылки на службу . This statement imports the code that Visual Studio generated with the Add Service Reference function. Код создает прокси-сервер WCF и вызывает каждую из операций службы, предоставляемых службой калькулятора. The code instantiates the WCF proxy and calls each of the service operations that the calculator service exposes. Затем он закрывает прокси-сервер и завершает программу. It then closes the proxy and ends the program.
Тестирование клиента WCF Test the WCF client
Тестирование приложения из Visual Studio Test the application from Visual Studio
Сохраните решение и выполните его построение. Save and build the solution.
Выберите папку жеттингстартедлиб , а затем в контекстном меню выберите Назначить запускаемым проектом . Select the GettingStartedLib folder, and then select Set as Startup Project from the shortcut menu.
В меню запускаемые проектывыберите жеттингстартедлиб из раскрывающегося списка, а затем выберите выполнить или нажмите клавишу F5. From Startup Projects, select GettingStartedLib from the drop-down list, then select Run or press F5.
Тестирование приложения из командной строки Test the application from a command prompt
Откройте командную строку от имени администратора и перейдите к каталогу решения Visual Studio. Open a command prompt as an administrator, and then navigate to your Visual Studio solution directory.
Чтобы запустить службу, введите GettingStartedHost\bin\Debug\GettingStartedHost.exe. To start the service: Enter GettingStartedHost\bin\Debug\GettingStartedHost.exe.
Чтобы запустить клиент: Откройте еще одну командную строку, перейдите в каталог решения Visual Studio и введите GettingStartedClient\bin\Debug\GettingStartedClient.exe. To start the client: Open another command prompt, navigate to your Visual Studio solution directory, then enter GettingStartedClient\bin\Debug\GettingStartedClient.exe.
GettingStartedHost.exe выдает следующие выходные данные: GettingStartedHost.exe produces the following output:
GettingStartedClient.exe выдает следующие выходные данные: GettingStartedClient.exe produces the following output:
Дальнейшие действия Next steps
Теперь вы выполнили все задачи в руководстве по началу работы с WCF. You’ve now completed all the tasks in the WCF get started tutorial. В этом руководстве вы узнали, как выполнять следующие задачи: In this tutorial, you learned how to:
В этом руководстве вы узнаете, как: In this tutorial, you learn how to:
- Добавьте код для использования клиента WCF. Add code to use the WCF client.
- Протестируйте клиент WCF. Test the WCF client.
При возникновении проблем или ошибок во всех шагах выполните действия, описанные в статье Устранение неполадок, чтобы устранить их. If you have problems or errors in any of the steps, follow the steps in the troubleshooting article to fix them.