Россия, Тамбов, ТГТУ, 2009 |
Контракты
Введение
Недавно мне попалась восхитительная кинокомедия, "Трасса 60", полная необычных персонажей. Один из них, которого играет Крис Купер, это бывший рекламщик, который, обнаружив, что неизлечимо болен раком легких, решил расплатиться за свою карьеру, которая была построена на лжи, тем, что исправлял лжецов. Особенно его интересовали соглашения и контракты в письменной форме.
Весьма ярко этот персонаж проявил себя в сцене на бензоколонке. К нему подошел нищий с табличкой: "Буду работать за еду". Увидев это, наш герой предложил ему яблоко в обмен на то, чтобы тот помыл лобовое стекло его машины. Но когда тот нищий отказался, не соблюдя, таким образом, письменный контракт, герой Купера весьма расстроился… до состояния, когда он объявляет о своей неизлечимой болезни, распахивает рубашку и показывает пояс из взрывчатки с десятисекундным таймером, на котором уже начался обратный отсчет.
В итоге, он уезжает с чистым лобовым стеклом и с чувством удовлетворения от того, что помог кому-то, хотя и странным способом, соблюсти свою часть письменного соглашения. Он появляется и позже, в городе, в котором живут одни адвокаты да полицейские… Предлагаю вам попытаться представить, что там произошло, или, по крайней мере, насладиться фильмом.
Если обойтись без взрывчатки, то соглашения между двумя сторонами весьма важны в гражданском обществе, как и в хорошо работающей компьютерной системе. Соглашения особенно важны, когда приложения предоставляют расширения для системы, и там, где приложения, написанные разными людьми в разное время, работают вместе для выполнения определенных задач.
Такова природа различных контрактов в Windows 8, которые, в целом, возможно, являются одной из наиболее мощных возможностей во всей системе. Главную цель контрактов можно описать как "Запуск приложения с определенной целью и в определенном контексте". Таким образом, вместо того, чтобы запускать приложения изолированно, контракты позволяют запускать их в связи с нуждами других приложений в контексте этих приложений. Информация может быть, таким образом, передана для реального использования напрямую из приложения в приложение, вместо передачи ее через обычное посредничество файловой системы, где теряется связь между приложениями.
В случае с любым контрактом, одна сторона – это потребитель или приемник информации, передаваемой посредством контракта. Другая сторона – это источник или поставщик этой информации. Сам по себе контакт – это нечто общее: ни одна из сторон не нуждается в знании подробностей о другой, ей лишь нужно знать о своей стороне контракта. Это может звучать не особенно сильно, но это дает высокую степень расширяемости, которая становится все больше и больше при установке в систему приложений, которые поддерживают те или иные контракты. Я полагаю, что когда пользователи начнут испытывать возможности, которые предоставляют контракты, они все больше и больше будут искать в Магазине Windows приложения, которые используют контракты для обогащения их системы и создания более насыщенного опыта взаимодействия с системой.
Что касается приложений, использование контрактов обычно происходит посредством вызовов API, таких, как средство выбора файлов, или через использование встроенных возможностей интерфейса системы, таких, как Панель чудо-кнопок. Предоставление информации для контрактов часто выглядит интереснее, так как приложению нужно отреагировать на специфические события (если оно выполняется), или сообщить о возможностях посредством манифеста и затем обрабатывать различные варианты активации контрактов.
Таблица ниже содержит краткое описание всех контрактов и расширений Windows 8 (в алфавитном порядке), некоторые из которых позволяют приложениям работать вместе, в то время как другие позволяют приложениям расширять функциональность системы. Их полное описание можно найти в материале "Контракты и расширения приложений" (http://msdn.microsoft.com/ru-ru/library/windows/apps/hh464906%28v=VS.85%29.aspx). Те, о которых речь идет в этой лекции, выделены зеленым: Общий доступ (Share), Поиск (Search), сопоставление типов файлов и схем универсальных кодов ресурсов (URI) (file type and URI scheme association), средства выбора файлов (file pickers), обновление кэшированных файлов (cached file updater) и окно выбора контактов (людей) (contacts (people)). Другие контракты либо обсуждаются в указанных лекциях, некоторые из них я оставил для вашего самостоятельного изучения с использованием документации и примеров.
Совет. Для того чтобы сравнить различные возможности обмена данными – контракт Общий доступ (Share), буфер обмена (clipboard), контракт средства сохранения файлов (file save picker), посмотрите материал "Общий доступ к данным и обмен данными" (http://msdn.microsoft.com/library/windows/apps/hh464923.aspx) в Центре разработчиков Windows. Он показывает различные сценарии для каждой из возможностей, и случаи, когда вы можете реализовать больше, чем одну из них в приложении.
Кроме того, обратите внимание на то, что эти контракты используют множество событий WinRT, поэтому помните о необходимости вызова removeEventListener, как это описано в лекции 3 курса "Введение в разработку приложений для Windows 8 с использованием HTML, CSS и JavaScript".
Контракт / Расширение | Поставщик | Потребитель | Описание, Документация и Примеры |
---|---|---|---|
Поставщик аватаров (Account picture provider) (лекция 3) | Приложение, которое может работать с изображениями. | Windows (изображение в учетной записи) | Когда пользователь меняет аватар, он может либо выбрать из существующих изображений, либо получить его от какого-либо приложения-поставщика. Смотрите пример "Имя для аватара" (http://code.msdn.microsoft.com/windowsapps/Account-picture-name-sample-912baff1). |
Автозапуск (AutoPlay) (лекция 4) | Приложение, которое может быть перечислено в списке действий при автозапуске. | Windows | Смотрите материал "Запуск приложения с помощью автозапуска" (http://msdn.microsoft.com/library/windows/apps/hh452731.aspx) и пример "Съемные запоминающие устройства" (http://code.msdn.microsoft.com/windowsapps/Removable-Storage-52cc49f0). |
Фоновые задачи (Background tasks) (лекции 2 и 3) | Приложения, имеющие фоновые задачи | Windows | Позволяет приложение исполнять небольшие задачи в фоновом режиме (то есть, когда, в противном случае, приложение приостановлено или не исполняется), без необходимости взаимодействия с пользователем. Смотрите материал: "Введение в фоновые задачи" (http://www.microsoft.com/en-us/download/details.aspx?id=27411) и лекцию 2. Фоновая передача файлов – это особый случай, поддерживаемый специальным API; смотрите материал "Передача данных в фоновом режиме" (http://msdn.microsoft.com/library/windows/apps/hh452979.aspx) и лекцию 3. |
Контракт обновления кэшированных файлов (Cached file updater) | Приложения, которые предоставляют доступ к своим данным с помощью средства выбора файлов и нуждаются в синхронизации их обновления. | Приложения, использующие API средства выбора файлов и файловые API для управления ими. | Приложение-поставщик может позволить потребителю получить кэшированную копию файла. С помощью контракта поставщик может синхронизировать обновления между локальной копией и исходным файлом. Смотрите материал "Интеграция с контрактами "Средство выбора файлов" (http://msdn.microsoft.com/library/windows/apps/hh465174.aspx). |
Параметры камеры (Camera settings) | Приложения с настраиваемым пользовательским интерфейсом камеры | Пользовательский интерфейс камеры Windows Windows Camera Capture UI | Смотрите материал "Разработка приложений Магазина Windows для камер" (http://msdn.microsoft.com/library/windows/hardware/hh454870) |
Окно выбора контактов (Contact picker) | Приложения, которое работает с данными контактов (наподобие адресной книги). | Приложения, которые используют API выбора контактов (наподобие приложений электронной почты) | Запускает приложение для предоставления списка, из которого можно выбирать контакты. Смотрите материал "Управление контактами пользователя" (http://msdn.microsoft.com/library/windows/apps/hh464939.aspx) |
Активация файла (сопоставление типа файла) (File activation (file type association)) | Приложения, которые могут открывать файлы конкретного типа. | Проводник Windows и приложения, которые используют API запуска файлов. | Запускает приложение для открытия или обработки файла при необходимости. Смотрите материалы "Обработка активации файла" (http://msdn.microsoft.com/library/windows/apps/hh452684.aspx), и "Автоматический запуск с сопоставлением файлов и универсальных кодов ресурсов (URI)" (http://msdn.microsoft.com/library/windows/apps/hh452691.aspx). |
Контракты выбора файлов в окне открытия/сохранения (File open picker/file save picker) | Приложение с данными, которые могут выглядеть для других приложений как файлы, которые можно открывать и / или сохранять (два разных контракта). | Приложения, использующие API средства выбора файлов (а так же, определенные возможности Windows) | Дает доступ к данным, которые, в противном случае, скрыты внутри приложения и управляются его средствами. Эти данные видны пользователю как часть файловой системы. Смотрите материал "Интеграция с контрактами "Средство выбора файлов" (http://msdn.microsoft.com/library/windows/apps/hh465174.aspx). |
Проводник игр (Game explorer) | Игровое приложение с файлом описания игры (Game Definition File) | Windows (Служба семейной безопасности (parental controls) | Управляет возрастными ограничениями для игр. Смотрите материал "Создание файла описания игры" (http://msdn.microsoft.com/ru-ru/library/windows/apps/hh465153.aspx). |
Воспроизведение на устройстве (Play To) (лекция 4 курса "Пользовательский интерфейс приложений для Windows 8, созданных с использованием HTML, CSS и JavaScript") | Приложения, которые могут воспроизводить цифровое мультимедиа на DLNA-устройствах | Windows (Чудо-кнопка "Устройства" (Devices) > Подключиться (Connect)) | Смотрите материал "Потоковая передача мультимедиа на устройства с помощью функции воспроизведения на устройстве" (http://msdn.microsoft.com/library/windows/apps/hh465176.aspx). |
Параметры задачи печати (Print task settings) | Приложения, работающие с принтерами | Windows (Чудо-кнопка "Устройства" (Devices) > Печать (Print)) | Смотрите материал "Разработка приложений Магазина Windows для принтеров" (http://msdn.microsoft.com/library/windows/hardware/br259129). |
Активация протокола (сопоставление со схемой URI) (Protocol activation (URI scheme association)) | Приложение, которое открывает URI, начинающиеся с определенной схемы URI). | Проводник Windows и приложения, которые используют API запуска файлов. | Запускает приложения для открытия или обслуживания URI при необходимости. Смотрите материалы "Обработка активации протокола" (http://msdn.microsoft.com/library/windows/apps/hh452686.aspx) и "Автоматический запуск с сопоставлением файлов и универсальных кодов ресурсов (URI)" (http://msdn.microsoft.com/library/windows/apps/hh452691.aspx). |
Поиск (Search) | Приложение с данными, по которым можно осуществлять поиск | Windows (Чудо-кнопка Поиск (Search)) | Представляет легко доступную во всей системе возможность по поиску в любом приложении. Смотрите материал "Добавление поиска в приложение" (http://msdn.microsoft.com/library/windows/apps/hh465231.aspx). |
Параметры (Settings) (Глава 2 курса "Пользовательский интерфейс приложений для Windows 8, созданных с использованием HTML, CSS и JavaScript") | Приложения, имеющие параметры | Windows (Чудо-кнопка Параметры (Settings)) | Предоставляет единую точку доступа к параметрам приложения. Смотрите материал "Добавление параметров приложений" (http://msdn.microsoft.com/library/windows/apps/hh770540.aspx). |
Общий доступ (Share) | Приложения с данными для совместного использования. | Приложения, которые могут принимать данные для включения в состав собственных данных или для отправки на устройства. | Предоставляет средство для передачи данных между приложениями, в результате, приложение-источник не нуждается в знании особенностей реализации приложения-получателя, наподобие Facebook, Twitter и так далее. Смотрите материал "Общий доступ к содержимому и его получение" (http://msdn.microsoft.com/library/windows/apps/hh758314.aspx). |
SSL/сертификаты (SSL/certificates) | Приложение, которое нуждается в установке сертификата | Приложение, которое нуждается в поддержке сертификата для доступа к стороннему сервису. | Смотрите материал: "Шифрование данных и работа с сертификатами" (http://msdn.microsoft.com/ru-ru/library/windows/apps/hh465012.aspx). |