Антон Шепитько antonsh@microsoft.com Системные активности которые не были запущены непосредственно пользователем Сервисы, Задачи по расписанию, некоторые COM процессы и т.д. Встречаются повсеместно: Индексирование при поиске Проверки по требованиям безопасности Управление сетью Управление устройствами Производительность • • • Время реакции на действия пользователя Конкуренция за ресурсы с «основными» приложениями Logoff, и т.д.. Безопасность • Может требовать системный привилегий • Успешная атака может «положить» всю систему Надежность • Утечки памяти • Падения системы • Падения зависимых приложений Потребление энергии • Диск, процессор • Уменьшает время работы от батареи Внутренняя оценка 49 сервисов (во время загрузки) Не критичны для загрузки Критичны и нужны для своих сценариев Ресурс Количество File I/O 47,286 Copy-on-Write (COW) Pages 4,656 (~18MB) Memory Pages (Total) 15,967 (~60MB) Registry Operations 38,508 Threads 367 Задачи Сервисы • Все время работают • Программная модель Service Control Manager (SCM) • Могут указывать зависимости • Короткие задачи • Отдельные exe или out-of-process COM • Обычно в пользовательской сессии Auto_Start сервис стартует при загрузке и никогда не завершается Чаще всего используется Прост для разработчиков — всегда работает! Проблемы Увеличивает время загрузки Много Auto_Start сервисов ждут редких событий Trigger-Start Trigger-Start запуск сервиса при необходимости SCM регистрируется на события: Подключение устройства Получение/смена IP адреса Подключение или выход и домена Изменение групповых политик Другое SCM стартует или завершает зарегистрированные сервисы Самоостановка Если нет запросов и задач и Trigger-Start или Demand_Start Выключение компьютера Не используйте SERVICE_ACCEPT_SHUTDOWN без необходимости Не надо чистить память если сервис standalone process Старайтесь завершиться не более чем за 200ms Календарь Загрузка Logon Idle Запись в Event log Блокировка/ разблокировка компьютера Idle condition Остановиться при выходе из Idle Только при работе от сети Остановка при работе от батареи Выход из sleep При сетевых соединениях Работа с web services из native кода Win32 API Не требует .Net Framework Работает со стеком WS-* SOAP Windows Communication Foundation (WCF) ASP .Net XML Web Services (ASMX) Не Microsoft реализации Системный компонент Windows 7 Доступен на Windows XP/Vista/2003/2008 WWSAPI пара к WCF Используйте WCF в управляемом коде Используйте WWSAPI в нативном коде Похожие программные модели XML, Message, Channels (message-oriented) Service Model (function-oriented) Client Web Service Endpoint C B A Endpoint A B C Service Proxy Code Generator Endpoint A B C WSDL Code Generator Endpoint A B C Service Host XSD Async Context Heap Errors Ваш код Service Model Channel Layer XML Layer Network I/O Автоматически управляет коммуникацией Service Proxy на клиенте Service Host на сервере Обмен сообщениями – это вызов функций Клиент вызывает сгенерированные функции Сервер реализует callback Управляется контрактом WsUtil.exe генерирует C код из WSDL/XSD Async Context Heap Errors Ваш код Service Model Channel Layer XML Layer Network I/O Полный контроль над коммуникацией (Web Services вместо C) Сообщения Посланные или полученные данные Состоит из заголовка и тела Канал Абстракция для протокола обмена сообщениями Унифицированный API для 3 транспортов (HTTP, TCP, UDP) Свойства для тюнинга Async Context Heap Errors Ваш код Service Model Channel Layer XML Layer Network I/O Полный доступ к содержимому сообщений Унифицированный API для кодирования Text, Binary, MTOM SOAP подмножество XML 1.0 XmlBuffer Хранение XML в памяти XmlReader and XmlWriter Последовательный доступ Transports HTTP, TCP, UDP XML Encodings Text, Binary, and MTOM Envelope SOAP 1.1 and 1.2 Addressing WS-Addressing 0.9 and 1.0 Metadata WSDL 1.1, XML Schema 1.0 WS-MetadataExchange 1.1 WS-Transfer March 2006 Security WS-Security 1.0 and 1.1 (partial) WS-Trust February 2005 and 1.3 (partial) WS-SecureConversation 1.1 and 1.3 (partial) Policy WS-Policy from March 2006 and v.1.2 WS-Policy Attachment from March 2006 and 1.2 WS-SecurityPolicy 1.1 Операций в секунду 80000 70000 60000 TCP/Binary 50000 40000 30000 20000 10000 0 RPC Sapphire WWSAPI WCF Configuration: Server: 2.2 GHz AMD (dual core), 64-bit Windows Server 2008 Clients: 2.6 GHz AMD (dual core), 64-bit Windows Vista SP1 Операций в секунду 18000 16000 14000 HTTP/UTF8 12000 10000 8000 6000 4000 2000 0 RPC Sapphire WWSAPI Configuration: Server: 2.2 GHz AMD (dual core), 64-bit Windows Server 2008 Clients: 2.6 GHz AMD (dual core), 64-bit Windows Vista SP1 WCF CPU Utilization > 96% Self-hosted WCF and WWSAPI … Ваш компьютер знает где он и настраивает себя в связи со своим положением? Погода новости события Время …Ваш компьютер может чувствовать окружающую среду и подстраиваться под текущие условия? Подсветка дисплея в зависимости от окружающего света Оптимизирует элементы интерфейса для лучшей читаемости Устройства позиционирования выставляются как виртуальные COM порты Эксклюзивный доступ для 1 приложения Не безопасно Закрытые форматы данных и протоколы общения GPS не работает в помещении Сложно использовать несколько технологий вместе Сенсоры интегрированы в решения Приложения должны знать особенности «железа» сенсора Ограниченное распространение и использование Унифицированная модель драйверов для всех видов сенсоров Физические (GPS, свет) Логические (Wi-Fi триангуляция) Стандартный API для доступа к сенсорам Sensor API: C++/COM Location API: C++/COM, IDispatch Устройство User System Устройство Логический сенсор (Триангуляция) Единый API для ответа на вопрос “Где я?” Не зависим от провайдера/устройства Можно использовать даже в скрипте Автоматический переход между провайдерами Приоритет у самого точного Одновременный доступ из множества приложение Местоположение по умолчанию Задается пользователем, когда более ничего не доступно