Программирование >>  Программирование с использованием ajax 

1 ... 381 382 383 [ 384 ] 385 386 387 ... 396


I fJle. /C:/BegVCSriarp:h pler35/Ch35Ex03/...


Puc. 35.7. Консольное приложение и окно Solar Evolution

Итак, WCF-служба AppControlService предоставляет единственную операцию - SetRadius О, которую клиенты могут вызывать для управления анимационными эффектами. Она взаимодействует с имеющим идентичное имя методом, который определен в классе Windows 1 WPF-приложения. Чтобы это было возможно, у службы должна обязательно быть ссылка на это приложение, а это требует обеспечения хоста для экземпляра объекта этой службы. Как уже рассказывалось ранее, у службы должен быть атрибут поведения:

[ServiceBehavior(InstanceContextMode=InstanceContextMode.Single)]

public class AppControlService : lAppControlService

В Windowl. xaml. cs создается экземпляр службы в обработчике событий Windows Loaded (), который и запускает хост путем создания для службы объекта ServiceHost и вызова его метода Open ():

public partial class Windowl : Window {

private AppControlService service; private ServiceHost host;

private void Window Loaded (ob:)ect sender, RoutedEventArgs e)

service = new AppControlService(this); host = new ServiceHost(service); host.Open();

Работа этого хоста завершается в обработчике событий WindowClosing () после закрытия приложения.

Конфигурационный файл выглядит настолько просто, насколько это возможно. В нем для WCF-службы определяется единственная конечная точка, прослушивающая порт 8081 по адресу net. tcp и использующая стандартную привязку NetTcpBinding:



<service name= Ch35Ex03.AppControlService > <endpoint address= net.tcp: localhost:8081/AppControlService binding= netTcpBinding contract= Ch35Ex03.lAppControlService /> </service>

Этот код соответствует коду в клиентском прможении, как было и в предыдущем примере (хотя здесь используется ТСР-привязка):

lAppControlService client = ChannelFactory<IAppControlService>.CreateChannel( new NetTcpBinding0 ,

new EndpointAddress( net.tcp: localhost:8081/AppControlService )) ;

После создания клиентского прокси-класса клиент может вызывать метод SetRadius () с параметрами радргуса, цвета и длительности анимационных эффектов; все они будут пересылаться через службу WPF-приложению. Простой код в \УРР-прможении далее будет определять и использовать их для изменения размера и цвета эллипса.

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

Резюме

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

В этой главе рассмотрены следующие вопросы.

□ Что собой представляют WCF-службы.

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

□ Какие варианты существуют для хостинга WCF-служб.

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

□ Как создавать прокси-классы для клиентских приложений через метаданные WCF.

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

□ Как генерировать клиентские прокси-классы из WCF-контрактов.

□ Как обеспечивать WCF-службы собственным хостом.

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



Упражнения

Какие из перечисленных ниже приложений могут играть роль хоста для служб WCF?

Web-приложения

Приложения Windows Forms

Службы Windows

Приложения СОМ+

Консольные приложения

Контракт какого типа вы бы реализовали при желании обмениваться с WCF-службой параметрами MyClass? Какие атрибуты потребовались бы для этого?

В случае применения для хостинга WCF-службы Web-приложения как будет выглядеть расширение базовой конечной точки этой службы?

В случае WCF-служб с собственным хостом конфигурировать службу нужно путем установки свойств и вызова методов класса ServiceHost. Верно это или нет?

Напишите код для контракта службы IMusicPlayer и определите в нем операции Play О, Stop О и GetTrackInf ormation О . Где необходимо, используйте односторонние методы. Какие другие контракты можно определить для работы такой службы?



1 ... 381 382 383 [ 384 ] 385 386 387 ... 396

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика