Создание надежных и заслуживающих доверия приложений в стиле Metro
🕛 01.06.2012, 16:08
Во время разработки модели приложения для Windows 8 и новых приложений в стиле Metro мы руководствовались целым рядом требований. Ключевое требование к архитектуре заключалось в предоставлении пользователям приложений, которыми можно пользоваться с полной уверенностью — уверенностью в том, что приложения будут правильно использовать ресурсы, не будут мешать работе других приложений, будут использовать системные ресурсы с разрешения пользователя, легко устанавливаться и удаляться и т. п. Для удовлетворения этих требований требуется надежная платформа и эффективный набор средств разработки. При таком подходе необходимо начать работу практически "с нуля", а не довольствоваться модернизацией существующей системы. В данном отношении Windows 8 и является такой системой "с нуля". В этой статье описывается некоторая часть работы, которая была проделана нами на уровне платформы для создания надежных и заслуживающих доверия приложений в стиле Metro. Автором этой статьи является Джон Хейзен (John Hazen), руководитель программы в рабочей группе Developer Experience. -- Стивен Один из основных принципов, которым мы руководствовались при разработке платформы приложений в стиле Metro для Windows 8, состоял в следующем: пользователи должны быть уверены в своих приложениях. Можно сказать, что при реализации данного подхода мы с вами "играем в одной команде". В этой статье я расскажу о нашем понимании идей надежности приложений и уверенности в них, а также постараюсь помочь вам повысить степень доверия пользователей к разрабатываемому приложению.
Давайте начнем с пояснения того, что мы понимаем под уверенностью или доверием. Представьте себе пользователя, просматривающего Магазин Windows в поисках приложения в стиле Metro. При этом нам хотелось бы, чтобы он не отвлекался и думал только о приложении и о том, насколько оно для него подходит. Мы хотим, чтобы он предполагал (а фактически — был уверен), что приложение будет работать ожидаемым образом, будет совместимо с его системой, будет использовать только разрешенные данные и информацию и будет гармонично взаимодействовать с другими приложениями.
Работая над данной платформой, мы стремимся к тому, чтобы любой разработчик смог создавать отличные приложения, в которые описанное представление о доверии было бы заложено изначально. Для достижения этой цели мы реализовали в системе целый набор компонентов. Поясним наш подход с помощью следующего рисунка:
Уверенность в приложении: Пакет Windows 8 SDK для приложений в стиле Metro, комплект сертификации приложений для Windows, подписи приложений, контейнер приложения, оценки и отзывы, процедура адаптации для Магазина, простая установка, обратная связь посредством телеметрии
В данной статье рассматриваются все эти области, а в самом конце подробно описываются возможности наших приложений. Для начала — небольшой обзор: Магазин Windows — для пользователей все начинается с Магазина, их "пункта комплексного обслуживания" для получения приложений в стиле Metro. Перед размещением в Магазине ваше приложение проходит проверку (включая тесты на безопасность) на соответствие как техническим требованиям, так и принципам политики Магазина. После публикации в Магазине члены сообщества оценивают ваше приложение и дают о нем отзывы. Совместно процедура адаптации и отзывы членов сообщества позволяют создать среду, в которой пользователи могут с уверенностью работать с приложениями. Установка приложений — Windows 8 управляет всеми аспектами развертывания приложений от вашего имени. Поэтому пользователям не приходится беспокоиться о том, что установка, обновление или удаление одного приложения могут неблагоприятно повлиять на другие приложения. Пакет SDK — пакет Windows 8 SDK для приложений в стиле Metro предоставляет удобный набор API, помогающих создавать надежные приложения. Эти приложения соответствуют требованиям процедуры адаптации для Магазина и обеспечивают наилучший пользовательский опыт. Возможности и контейнер приложения — Windows 8 обеспечивает более высокую степень разграничения приложений, чем в случае классических приложений. Благодаря этому вы сможете создавать приложения, которые взаимодействуют друг с другом и с пользователями более предсказуемым и согласованным образом.
Конечно же, мы понимаем, что процедуру адаптации можно обойти, наборы API можно применять не по назначению, для нарушения ограничений пакета SDK достаточно просто проявить смекалку, а контейнеры приложений — не панацея. Но мы уверены в том, что усилия, вложенные в эту новую экосистему, помогут вам создавать приложения, которые понравятся пользователям. Такой многомерный подход является наиболее эффективным способом для формирования у пользователей чувства уверенности. Со временем мы будем улучшать каждый из указанных аспектов на основе реального практического опыта. Теперь давайте поговорим об уверенности. Магазин Windows
Некоторые члены нашей рабочей группы уже успели довольно много рассказать об общей структуре и плане развития Магазина в блоге, посвященном Магазину Windows. Ознакомьтесь с этой информацией, если вы еще не сделали этого, поскольку именно Магазин является основным связующим звеном между вами и пользователями. Давайте рассмотрим некоторые из тех способов, с помощью которых Магазин помогает создавать уверенность в этой экосистеме приложений.
Во-первых, процедура адаптации для Магазина сразу же задает довольно высокий уровень качества и надежности приложения. Тесты по техническому соответствию, входящие в состав комплекта сертификации приложений для Windows, помогают вам еще до отправки приложения убедиться в том, что оно удовлетворяет предъявляемым требованиям. Ваша задача — совместно с другими разработчиками предоставлять приложения, соответствующие таким требованиям. В свою очередь, пользователи с удовольствием будут находить и изучать новые приложения, формируя в общих интересах более эффективную экосистему приложений.
Кроме того, с помощью возможностей Магазина пользователи могут легко оставлять оценки и отзывы, помогающие выделить действительно лучшие приложения. Это повысит доверие к популярным приложениям и привлечет к ним еще больше клиентов. Обратите внимание, что в приведенном ниже примере страницы описания приложения выделены не только оценки и отзывы, но и два других важных элемента. Пред установкой нового приложения пользователи видят, какие разрешения приложение получит после установки (более подробно это будет рассмотрено в последующих статьях данного блога). Если после установки приложения пользователь столкнется с какими-либо проблемами, касающимися контента или поведения приложения, он может легко сообщить нам об этом. Мы изучим эти проблемы и поможем с ними справиться. Важный способ повышения доверия к экосистеме приложений Windows 8 заключается в том, чтобы помочь пользователям принять решение о том, какие приложения лучше всего соответствуют их потребностям, а также предоставить им возможность оставлять свои оценки и отзывы.
Страница с описанием приложения из Магазина Windows
Наконец, Магазин собирает данные телеметрии, которые могут помочь вам в изучении возникших у пользователей проблем, включая количество возникающих сбоев и их типы. Мы анализируем эти автоматически полученные данные телеметрии для выявления приложений, работа которых является ненадежной, или не соответствует ожиданиям пользователей. Наша цель заключается не только в обеспечении эффективного использования отдельных оценок и отзывов пользователей о приложениях. Мы также хотели бы помочь вам понять особенности поведения вашего приложения на компьютерах пользователей. Эти данные позволят вам внести в него все необходимые улучшения.
В любом из указанных отношений Магазин Windows является вашим партнером, помогая связаться с пользователями, нуждающимися в ваших приложениях. В свою очередь, пользователи могут с его помощью получить отличный опыт работы с вашими приложениями. Доступ к приложениям в один щелчок
Когда вы привлекли вниманием пользователя к странице описания приложения, вам наверняка хотелось бы максимально упростить ему получение этого приложения. В Windows 8 для получения приложения достаточно нажать всего одну кнопку. Пользователям больше не нужно отвечать на многочисленные вопросы или нажимать кнопку за кнопкой. После входа в Магазин и обнаружения интересного приложения они просто нажимают кнопку, подтверждают покупку и все!
Отличная новость: для этого вам не потребуется писать ни одной строчки кода установки — все необходимое предоставляется в составе Windows 8. В Windows обрабатывается не только процедура установки. Здесь используются цифровые подписи для обеспечения целостности приложения на всем пути от Магазина до установки и даже при загрузке и выполнении приложения на компьютере пользователя. Если система Windows обнаруживает несоответствие приложения цифровой подписи, она предлагает пользователю загрузить исправленную версию из Магазина.
Windows устанавливает каждое приложение в конкретное расположение с раздельными и обособленными расположениями для данных и параметров каждого приложения. Поэтому пользователям не нужно беспокоиться о том, что установка или удаление одного приложения негативно повлияет на работу других приложений или всего компьютера. Пользователи быстро убедятся, что установка и удаление приложений со временем не снижают возможности для работы (на деле, благодаря контрактам Windows 8, установка каждого нового приложения только повышает эти возможности). Поэтому они будут с большей готовностью использовать больше приложений. Хорошо также осознавать, что другое приложение вряд ли сможет негативно сказаться на возможностях взаимодействия с пользователем в вашем приложении.
Наличие единого, поддающегося проверке и согласованного механизма для установки приложений не только упрощает работу с системой. Используя его, пользователи легко приобретают положительный опыт, благодаря которому они с готовностью будут получать ваши новые приложения. Для получения дополнительных сведений о развертывании приложений см. статью Пакеты приложений и развертывание. Пакет Windows 8 SDK для приложений в стиле Metro
Чем эффективнее взаимодействие с пользователем в ваших приложениях, тем с большей готовностью пользователи будут использовать ваши новые приложения и обновления после их выпуска. Пакет Windows 8 SDK для приложений в стиле Metro — это отличная платформа для построения приложений, необходимость установки которых покажется пользователям несомненной.
Мы тщательно продумывали набор API, предлагаемый для приложений в стиле Metro. Это нужно было не только для упрощения среды программирования Windows, но и для создания тщательно протестированной платформы для создания новых приложений, гарантирующей их полную совместимость с моделью приложений в стиле Metro для Windows 8.
Рекомендуем вам подавлять в себе желание найти способы вызова API, не включенных в данный пакет SDK. Это существенно подрывает ожидания пользователей относительно вашего приложения. Работа API, не включенных в состав данного SDK, с приложениями в стиле Metro не гарантируется как для текущего, так и для будущих выпусков, поэтому при их использовании ваше приложение может работать неправильно у некоторых пользователей. Кроме того, такие API могут некорректно работать в асинхронной среде, на которой основана структура приложений в стиле Metro. Наконец, эти API могут подрывать уверенность пользователей, обращаясь к тем ресурсам или данным, с которыми приложения в стиле Metro не могут нормально взаимодействовать. Учитывая все эти причины, мы включили в состав комплекта сертификации приложений для Windows проверки, помогающие выявить места, в которых возможен непреднамеренный вызов интерфейсов, отсутствующих в данном SDK.
Хотя вызовы отсутствующих в данном SDK интерфейсов API можно искусно скрыть, это все равно нарушает ожидания пользователей и политику Магазина. Следует также отметить, что мы создавали эту платформу, чтобы помочь разработчикам создавать отличные приложения, которые прекрасно взаимодействуют как с системой, так и с другими приложениями и устройствами, и поэтому понравятся пользователям. Важным условием для достижения этой цели является использование пакета SDK для разработки приложений в стиле Metro. Стабильная работа как вместе, так и врозь
Для пользователей важен удобный процесс установки, и данный SDK помогает создавать приложения, прекрасно интегрирующиеся с системой. Кроме того, пользователи ожидают как от вашего приложения, так и от нашей платформы высокого уровня надежности. Мы помогаем вам достичь целевых показателей надежности, обеспечивая более высокую степень разграничения приложений в стиле Metro по сравнению с классическими приложениями Windows. В Windows 8 каждое приложение в стиле Metro выполняется в контексте уникального контейнера приложения, который помогает изолировать само приложение и его данные от других приложений в стиле Metro.
Контейнеры приложений обладают некоторыми особенностями, характерными для всех приложений в стиле Metro. Они: Предоставляют приложению выделенную среду, включая отдельное хранилище для данных и параметров. Вам не нужно заботиться о том, что другие приложения в стиле Metro могут повредить данные или параметры вашего приложения или негативно повлиять на его работу. Помогают убедиться, что ваше приложение не приведет к непреднамеренному снижению надежности всей платформы Windows или непредусмотренному использованию данных или устройств пользователей. Предоставляют продуманный способ расширения возможностей вашего приложения посредством объявлений, которые вы заносите в манифест и представляете на странице описания приложения.
Такой уровень разграничения значительно упрощает создание надежных приложений, отвечающих ожиданиям пользователей. В то же время всем нам хотелось бы, чтобы приложения хорошо взаимодействовали друг с другом. Для этого Windows 8 предлагает несколько механизмов, обеспечивающих совместную работу приложений в стиле Metro друг с другом и с платформой. К таким механизмам относятся: Контракты приложений, которые являются тем связующим звеном, которое соединяет приложения в стиле Metro друг с другом и с пользовательским интерфейсом системы. Средство выбора файлов, которое позволяет вашему приложению взаимодействовать с данными, выбираемыми пользователем. Объявления возможностей приложений, позволяющие приложению программно взаимодействовать с устройствами и данными, когда это требуется.
Это продуманные способы, с помощью которых ваше приложение сможет глубже взаимодействовать с другими приложениями и с системой. Контейнер приложения помогает вам обеспечить соответствие ожиданиям пользователей в отношении надежности и бережного обращения с системой и данными. Для контейнера приложения реализованы специальные ограничения, помогающие обеспечить соответствие ожиданиям пользователей в отношении согласованной и интуитивно понятной работы приложения. Применение методик, позволяющих приложению выполнять код за пределами его контейнера, является нарушением доверия пользователей и политики Магазина.
В рамках общения с разработчиками за этот период использования предварительной версии нам встречались приложения, которые ошибочно или неправильно использовали некоторые из этих механизмов, поэтому давайте подробнее обсудим возможности приложений. Объявления возможностей приложений
Существует много способов расширения контейнера приложения с помощью объявлений возможностей, каждое из которых предназначено для реализации конкретных сценариев. Поэтому мы рекомендуем использовать их только при определенных условиях. Эти возможности делятся на 4 основные группы: Библиотеки данных. По умолчанию приложения не имеют доступа к библиотекам данных пользователей, таким как фонотека или библиотека документов. Для взаимодействия с этими библиотеками мы рекомендуем использовать средство выбора файлов. Однако в редких случаях бывает необходимо, чтобы приложение могло считывать данные или управлять ими непосредственно в таких расположениях. Доступ к устройствам. По умолчанию приложения не могут использовать устройства, которые большинство пользователей считают важными с точки зрения конфиденциальности, включая веб-камеры, микрофоны и устройства для определения местоположения. Когда приложениям требуется доступ к таким устройствам, им необходимо объявить об этом намерении и получить согласие пользователя. Доступ к сети. По умолчанию приложения не имеют доступа к сетям пользователей. Поскольку большинство приложений взаимодействует с Интернетом, мы реализовали соответствующую возможность во всех шаблонах Visual Studio для приложений в стиле Metro. Если простого доступа к Интернету вашему приложению недостаточно, вы можете ознакомиться с представленными ниже доступными вариантами. Удостоверение пользователя. Эти возможности предоставляют прямой доступ к идентификационным данным, применяемым конкретным пользователем для входа в корпоративную систему, или к сертификатам, связанным с удостоверениями пользователей. Хотя потребность в таких возможностях возникает довольно редко, они являются обязательными для определенных корпоративных приложений и могут понадобиться вам в таких сценариях, как банковские транзакции, когда для авторизации требуется смарт-карта.
Объявление возможности в любой из указанных категорий выполняется так же просто, как и ее отметка в конструкторе манифестов Visual Studio. Однако эти возможности следует добавлять только в том случае, если они критически важны для реализации сценария работы приложения. На этапе тестирования Consumer Preview мы встретили несколько переданных в Магазин приложений, в которых были объявлены все перечисленные возможности или та возможность, которая не была существенной для работы приложения. Таким образом, поскольку список доступных возможностей довольно мал, стоит уделить больше времени изучению каждой возможности и способов ее использования.
Конструктор манифестов Visual Studio Библиотеки данных
Эти возможности предоставляют приложению доступ к пользовательским данным, которые могли быть созданы и в другом приложении. Пользователи ожидают, что приложения будут бережно обращаться с их личными данными. Один из способов оправдать эти ожидания заключается в том, чтобы объявить для приложения только минимально необходимый уровень доступа. В большинстве случаев можно полностью отказаться от использования этих возможностей благодаря средству выбора файлов, с помощью которого пользователь может просматривать файлы, находящиеся в любом расположении на жестком диске или в сети. Например, используйте средство выбора файлов для обеспечения функции открытия файла или для добавления в приложение команды "Сохранить как", чтобы пользователь мог сохранить содержимое из приложения в свою библиотеку или в удаленное хранилище.
Объявление манифеста
Результат
musicLibrary
Предоставляет возможность добавлять, изменять или удалять файлы в фонотеке как для локального компьютера, так и для компьютеров домашней группы.
videoLibrary
Предоставляет возможность добавлять, изменять или удалять файлы в видеотеке как для локального компьютера, так и для компьютеров домашней группы.
pictureLibrary
Предоставляет возможность добавлять, изменять или удалять файлы в библиотеке изображений как для локального компьютера, так и для компьютеров домашней группы.
documentsLibrary
Предоставляет возможность добавлять, изменять или удалять файлы в библиотеке документов для локального компьютера. Приложение может осуществлять доступ только к тем типам файлов в библиотеке документов, которые заданы с помощью объявления сопоставлений типов файлов. Приложение не может осуществлять доступ к библиотекам документов на компьютерах домашней группы.
removableStorage
Предоставляет возможность добавлять, изменять или удалять файлы на съемных носителях. Приложение может осуществлять доступ только к тем типам файлов на съемных носителях, которые заданы с помощью объявления сопоставлений типов файлов. Приложение не может осуществлять доступ к съемным носителям на компьютерах домашней группы.