370 likes | 601 Views
Windows 7: Изменения на уровне платформы . Антон Шепитько antonsh@microsoft.com. Фоновые процессы. Системные активности которые не были запущены непосредственно пользователем Сервисы , Задачи по расписанию , некоторые COM процессы и т.д. Встречаются повсеместно :
E N D
Windows 7: Изменения на уровне платформы Антон Шепитько antonsh@microsoft.com
Фоновые процессы • Системные активности которые не были запущены непосредственно пользователем • Сервисы, Задачи по расписанию, некоторые COM процессы и т.д. • Встречаются повсеместно: • Индексирование при поиске • Проверки по требованиям безопасности • Управление сетью • Управление устройствами
Производительность • Время реакции на действия пользователя • Конкуренция за ресурсы с «основными» приложениями • Logoff, и т.д.. • Надежность • Утечки памяти • Падения системы • Падения зависимых приложений Влияние фоновых процессов • Безопасность • Может требовать системный привилегий • Успешная атака может «положить» всю систему • Потребление энергии • Диск, процессор • Уменьшает время работы от батареи
Влияние фоновых процессов • Внутренняя оценка 49 сервисов (во время загрузки) • Не критичны для загрузки • Критичны и нужны для своих сценариев
Влияние фоновых процессов • Сравнивая чистую Windows Vista с OEM версией: • Добавили 10 сервисов
Сервисы и задачи • Все время работают • Программная модель Service Control Manager (SCM) • Могут указывать зависимости • Короткие задачи • Отдельные exe или out-of-process COM • Обычно в пользовательской сессии • Сервисы • Задачи
Windows Services: Auto_Start • Auto_Startсервис стартует при загрузке и никогда не завершается • Чаще всего используется • Прост для разработчиков — всегда работает! • Проблемы • Увеличивает время загрузки • МногоAuto_Startсервисов ждут редких событий
Windows 7: Сервисы Trigger-Start • Trigger-Startзапуск сервиса при необходимости • SCM регистрируется на события: • Подключение устройства • Получение/смена IP адреса • Подключение или выход и домена • Изменение групповых политик • Другое • SCM стартует или завершает зарегистрированные сервисы
Завершение работы сервисов • Самоостановка • Если нет запросов и задач и Trigger-StartилиDemand_Start • Выключение компьютера • Не используйте SERVICE_ACCEPT_SHUTDOWN без необходимости • Не надо чистить память если сервис - standalone process • Старайтесь завершиться не более чем за 200ms
Service Control Handler • Никаких блокирующих действий! • WaitForSingleObject, CreateFile, RPCs • Всю работу в thread pool • Для кодов возврата используйте инструкции MSDN
Триггеры для задач • Календарь • Загрузка • Logon • Idle • Запись в Event log • Блокировка/разблокировка компьютера
Условия для задач • Idle condition • Остановиться при выходе из Idle • Только при работе от сети • Остановка при работе от батареи • Выход из sleep • При сетевых соединениях
Рекомендации • IDLE!!! • Батарея • Сеть
Почему потребление энергии важно учитывать? Core 2 Extreme QX6700 Потребление в ваттах 80386SX
Разработка энергетически эффективных приложений • Понять, что ПО сильно влияет на потребляемую компьютером энергию • Уменьшить утилизацию ресурсов • IDLE • Приспособить приложение к окружению • Использовать правильные инструменты • Правильно обрабатывать переходы между состояниями энергосбережения • Проверить и замерить • Перейти к шагу 2
Дополнительные ресурсы • Application Best Practices for Windows Vista • http://www.microsoft.com/whdc/system/pnppwr/powermgmt/PM_apps.mspx • http://msdn.microsoft.com/en-us/magazine/cc163386.aspx • Power Event Monitoring Tool • Sample VS project for registering and receiving power notifications • http://www.microsoft.com/whdc/system/pnppwr/powermgmt/PM-apps_samp.mspx • Making Your WPF Apps Power-Aware • http://msdn.microsoft.com/en-us/magazine/cc163386.aspx • “Power To The People” • C# interop for most Vista and later power APIs • http://www.code-magazine.com/articleprint.aspx?quickid=0512102&printmode=true • Windows Performance Tools Kit (XPerf) • http://www.microsoft.com/whdc/system/sysperf/perftools.mspx • PwrTest • Available in Windows Driver Kit (WDK) • http://www.microsoft.com/whdc/DevTools/WDK/WDKpkg.mspx
Windows Web Services API • Работа с 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 • WWSAPI пара к WCF • Используйте WCF в управляемом коде • Используйте WWSAPI в нативном коде • Похожие программные модели • XML, Message, Channels (message-oriented) • Service Model (function-oriented)
Web Services Client Web Service Endpoint Endpoint C B A A B C Endpoint Service Proxy A B C Endpoint Code A B C Generator WSDL Code Service Host Generator XSD
Уровни Windows Web Services API • Ваш код • Service Model • Channel Layer • Async Context • Errors • Heap • XML Layer • Network I/O
Service Model • Автоматически управляет коммуникацией • Service Proxy на клиенте • Service Host на сервере • Обмен сообщениями – это вызов функций • Клиент вызывает сгенерированные функции • Сервер реализует callback • Управляется контрактом • WsUtil.exe генерирует C код из WSDL/XSD
Windows Web Services API • Ваш код • Service Model • Channel Layer • Async Context • Errors • Heap • XML Layer • Network I/O
Channel Layer • Полный контроль над коммуникацией (Web Services вместо C) • Сообщения • Посланные или полученные данные • Состоит из заголовка и тела • Канал • Абстракция для протокола обмена сообщениями • Унифицированный API для 3 транспортов (HTTP, TCP, UDP) • Свойства для тюнинга
Windows Web Services API • Ваш код • Service Model • Channel Layer • Async Context • Errors • Heap • XML Layer • Network I/O
XML Layer • Полный доступ к содержимому сообщений • Унифицированный 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
Производительность – TCP WWSAPI
Additional Resources • Networking Developer Center on MSDN • http://msdn.microsoft.com/network/ • Connect • https://connect.microsoft.com/wndp/ • Blogs • http://blogs.msdn.com/nikolad/ • http://blogs.msdn.com/haoxu/ • http://blogs.msdn.com/wndp/ • Email • nikola.dudar@microsoft.com
Что если…? • … Ваш компьютер знает где он и настраивает себя в связи со своим положением? • Погода новости события • Время • …Ваш компьютер может чувствовать окружающую среду и подстраиваться под текущие условия? • Подсветка дисплея в зависимости от окружающего света • Оптимизирует элементы интерфейса для лучшей читаемости
Ограничения сенсоров сегодня • Устройства позиционирования выставляются как виртуальные COM порты • Эксклюзивный доступ для 1 приложения • Не безопасно • Закрытые форматы данных и протоколы общения • GPS не работает в помещении • Сложно использовать несколько технологий вместе • Сенсоры интегрированы в решения • Приложения должны знать особенности «железа» сенсора • Ограниченное распространение и использование
Windows Sensor And Location Platform • Унифицированная модель драйверов для всех видов сенсоров • Физические (GPS, свет) • Логические (Wi-Fi триангуляция) • Стандартный API для доступа к сенсорам • Sensor API: C++/COM • Location API: C++/COM, IDispatch
Архитектура доступа к сенсору Приложение Приложение Sensor API User Можно посмотреть из Control Panel System Sensor Class Extension UMDF Sensor Driver Устройство
Позиционирование Gadget or Script Приложение Приложение Location API Location IDispatch Interface Sensor API User Можно посмотреть из Control Panel System Sensor Class Extension Sensor Class Extension UMDF Sensor Driver UMDF Sensor Driver Устройство Логический сенсор (Триангуляция)
Преимущества • Единый API для ответа на вопрос “Где я?” • Не зависим от провайдера/устройства • Можно использовать даже в скрипте • Автоматический переход между провайдерами • Приоритет у самого точного • Одновременный доступ из множества приложение • Местоположение по умолчанию • Задается пользователем, когда более ничего не доступно