Цей зразок заснований на зразку Транспорт: UDP. Він розширює зразок Транспорт: UDP для підтримки активації процесу за допомогою служби активації Windows (WAS).
Зразок складається з трьох основних частин:
Активатор протоколу UDP - автономний процес, який одержує повідомлення UDP від імені додатків, які підлягають активації.
Клієнт, який використовує користувальницький транспорт UDP для відправки повідомлень.
Служба (розміщена в робочому процесі, активованому службою WAS), яка отримує повідомлення по призначеному для користувача транспорту UDP.
Активатор протоколу UDP є міст між клієнтом WCF і службою WCF. Він забезпечує передачу даних через протокол UDP на транспортному рівні. У нього дві основні функції.
Адаптер Прослуховувач WAS (LA), що працює спільно зі службою WAS для активування процесів у відповідь на вхідні повідомлення.
Прослуховувач протоколу UDP, який приймає повідомлення UDP від імені додатків, які підлягають активації.
Активатор повинен працювати як автономна програма на комп'ютері сервера. Зазвичай адаптери Прослуховувач WAS (такі як NetTcpActivator і NetPipeActivator) реалізуються в довготривалих службах Windows. Однак для простоти і ясності в даному зразку активатор протоколу реалізований як автономне додаток.
Адаптер Прослуховувач WAS для протоколу UDP реалізований в класі UdpListenerAdapter. Саме цей модуль у взаємодії зі службою WAS виконує активацію програми для протоколу UDP. Це проводиться шляхом виклику наступних інтерфейсів Webhost API:
Після вихідного виклику WebhostRegisterProtocol адаптер Прослуховувач отримує зворотний виклик ApplicationCreated від служби WAS для всіх додатків, зареєстрованих в applicationHost.config (розташований в% windir% \ system32 \ inetsrv). У цьому зразку обробляються тільки додатки з включеним протоколом UDP (з ВД протоколу "net.udp"). Інші реалізації можуть виконувати цю обробку по-іншому, якщо такі реалізацію реагують на динамічні зміни конфігурації програми (наприклад, перехід додатки з відключеного стану у включене).
Отримання зворотного виклику ConfigManagerInitializationCompleted показує, що служба WAS завершила всі повідомлення для ініціалізації протоколу. На цьому етапі прослуховувач готовий до обробки запитів активації.
При надходженні нового запиту, який є першим для додатка, адаптер Прослуховувач викликає WebhostOpenListenerChannelInstance в WAS, запускаючи робочий процес, якщо він ще не запущений. Потім завантажуються обробники протоколу, і можна починати обмін даними між адаптером Прослуховувач і віртуальним додатком.
Адаптер Прослуховувач реєструється в файлі% SystemRoot% \ System32 \ inetsrv \ ApplicationHost.config в розділі
В даному зразку для взаємодії активатора і робочого процесу WAS використовується WCF. Служба, яка перебуває в активаторі, називається службою управління.
Після того як адаптер Прослуховувач викликає WebhostOpenListenerChannelInstance. диспетчер процесу WAS запускає робочий процес, якщо він ще не запущений. Потім диспетчер додатки всередині робочого процесу завантажує обробник протоколу процесу (PPH) UDP із запитом цього ListenerChannelId. У свою чергу PPH викликає IAdphManager .StartAppDomainProtocolListenerChannel. щоб запустити обробник протоколу AppDomain (ADPH) UDP.
Побудуйте проект в ОС Windows Vista. Після компіляції на етапі за побудовою також виконуються наступні операції.
Встановлюється прив'язка UDP на сайт "Веб-вузол за замовчуванням".
Створюється віртуальне додаток "ServiceModelSamples", яке вказує по фізичній шляху: "% SystemDrive% \ inetpub \ wwwroot \ servicemodelsamples".
Також включається протокол "net.udp" для даного віртуального додатки.
Відкрийте програму для користувача інтерфейсу "WasNetActivator.exe". На вкладці Установка встановіть наступні прапорці та натисніть кнопку Встановити. щоб встановити ці компоненти:
Адаптер Прослуховувач UDP
Обробники протоколу UDP
Виберіть вкладку Активація програми призначеного для користувача інтерфейсу "WasNetActivator.exe". Натисніть кнопку Пуск для запуску адаптера Прослуховувач. Тепер все готово для запуску програми.
Завершивши роботу з цим зразком, необхідно запустити файл Cleanup.bat, щоб видалити прив'язку net.udp з сайту «Веб-вузол за замовчуванням».
Після компіляції створюються чотири різних двійкових файлу.
Client.exe: код клієнта. Файл App.config компілюється в файл конфігурації клієнта Client.exe.config.
UDPActivation.dll: бібліотека, яка містить всі основні реалізації UDP.
Service.dll: код служби. Він копіюється в каталог \ bin віртуального додатки ServiceModelSamples. Файл служби має ім'я Service.svc, а файл конфігурації - Web.config. Після компіляції вони копіюються в наступне місце розташування:% SystemDrive% \ Inetpub \ wwwroot \ ServiceModelSamples.
WasNetActivator: програма активатора UDP.
Переконайтеся, що всі обов'язкові елементи правильно встановлені. Наступні кроки показують, як запустити зразок:
Переконайтеся, що запущені наступні служби Windows:
Служба активації Windows (WAS).
Internet Information Services (IIS): W3SVC.
Потім запустіть активатор WasNetActivator.exe. На вкладці Активація в списку обраний єдиний протокол, Обумовлена користувачем процедура. Натисніть кнопку Пуск для запуску активатора.
Після запуску активатора можна запустити код клієнта, запустивши файл Client.exe в командному вікні. Далі наводиться зразок виведення: