Document 4982865

advertisement
Антон Шепитько
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 для ответа на вопрос “Где я?”
Не зависим от провайдера/устройства
Можно использовать даже в скрипте
Автоматический переход между
провайдерами
Приоритет у самого точного
Одновременный доступ из множества
приложение
Местоположение по умолчанию
Задается пользователем, когда более ничего
не доступно
Download