Программирование мобильных устройств на платформе .NET Compact Framework - Иво Салмре
Шрифт:
Интервал:
Закладка:
Во многих случаях, когда имеется вполне определенный набор задач, которые должны выполняться на мобильном устройстве, целесообразно предусмотреть для каждой из них отдельное приложение, а не создавать один программный гигант, подобный кухонному комбайну, совмещающему в себе функции раковины, устройства для нарезки салатов и жаровни для приготовления барбекю. Навигация в пределах таких составных приложений чрезвычайно усложняется, а их сопровождение становится затруднительным.
У конечного пользователя не должно возникать никаких сомнений относительно того, каким именно инструментом следует воспользоваться для решения той или иной конкретной задачи. Размытие целевого назначения приложений в пределах набора говорит о незавершенности продукта или разработке проекта путем незапланированного наращивания его возможностей, когда вместо систематического создания заранее предусмотренных средств существующие приложения дорабатываются в специализированном стиле по мере выявления новых потребностей. Если в процессе разработки мобильного приложения у вас рождается идея "убийственного сценария", задайтесь вопросом, следует ли включать этот сценарий в состав существующего приложения или лучше реализовать его надлежащим образом в виде независимого приложения. Можно легко объединить приложения в одно целое, но выделить вплетенный в тело приложения код очень непросто. Если вы сомневаетесь в том, как лучше поступить, начните с создания независимого приложения, не забыв при этом о правиле "20 секунд": пользователь, действуя без спешки, должен успевать достать устройство из кармана и перейти к разделу с нужной информацией в течение не более 20 секунд.
Мобильные приложения, взаимодействующие с приложениями для настольных компьютеров и серверов
Многие из установленных на устройствах приложения взаимодействуют с внешними ресурсами, например, с данными, которые хранятся на настольном компьютере, доступны на сервере предприятия или предлагаются Internet-службами. Определяя сферу применения мобильных приложений, являющихся частью более крупных систем, необходимо не забывать о двух важных вещах:
1. Определите ключевой набор сценариев работы с устройством. Сценарии использования приложений для настольных компьютеров и Web-приложений значительно отличаются от сценариев использования мобильных приложений, и поэтому простой перенос функциональных возможностей соответствующих приложений на мобильные устройства является оправданным лишь в очень редких случаях. Очень важно, чтобы вы могли дать ответы на следующие вопросы. Быстрое решение каких задач может потребоваться пользователям данного приложения при работе в мобильных условиях? Каковы те ключевые элементы, необходимость быстрого поиска или выполнения которых может заставить пользователя извлечь устройство из кармана? От ответов на эти вопросы зависят сценарии использования вашего мобильного приложения.
2. Определите будет ли устройство взаимодействовать с данными, хранящимися на настольных компьютерах или серверах. При работе крупных приложений часто используются экземпляры данных, разбросанные по самым разным местам. Данные могут храниться на нескольких серверах, на настольных компьютерах и на устройствах. Очень важно иметь ясную картину того, с какими данными будет взаимодействовать ваше мобильное приложение. Если у вас есть возможность выбирать, с какими данными следует организовать взаимодействие, — теми, которые хранятся на сервере, или теми, которые хранятся на настольном компьютере, — то наиболее подходящим почти всегда будет второй вариант. Это обусловлено двумя причинами: 1) обычно данные, хранящиеся на настольном компьютере, являются локальной кэшированной копией серверных данных, реальное текущее состояние не всегда отражается правильно, и 2) в то время как настольный компьютер не всегда может быть доступным, серверы специально проектируются таким образом, чтобы обеспечивалась возможность постоянного доступа к ним. Обычно если принимается решение о том, что мобильное устройство должно синхронизироваться с данными, хранящимися на настольном компьютере, а не на сервере, то это делается на основе тактических, а не прочно обоснованных стратегических соображений. В качестве оправдания указанной близорукой политики приводят, например, такую аргументацию: "Я не могу получить разрешение на доступ к находящимся на сервере данных с мобильного устройства, и поэтому вынужден обратиться к модели, которая обеспечивает синхронизацию с данными, хранящимися на настольном компьютере" или "Структуры данных, хранящихся на серверах, слишком сложны для обработки, в то время как на настольных компьютерах данные хранятся в простых форматах, и поэтому синхронизация с ними осуществляется легче". Постарайтесь устоять перед подобного рода соблазнами. Если данные действительно хранятся на сервере, то вы должны организовать синхронизацию именно с ними, даже если для этого и придется создавать промежуточное серверное решение, поддерживающее получение доступа к данным. Формирование продуманной архитектуры взаимодействия с другими звеньями вашего приложения сторицей окупит себя в отношении надежности и сроков разработки. Кратковременным тактическим решениям свойственно очень быстро превращаться в непрерывный долговременный кошмар сопровождения. Корректная оценка сферы применения вашего мобильного приложения требует того, чтобы вы руководствовались отчетливой схемой, отражающей взаимодействие приложения с внешними по отношению к устройству системами.
Не пытайтесь просто переносить на устройства приложения, рассчитанные на настольные компьютеры! Мыслите категориями устройств!
Приложения для мобильных устройств могут использовать те же информационные источники и иметь то же общее назначение, что и приложения для настольных компьютеров, но сверх этого между указанными двумя классами приложений имеется мало общего. Мобильные приложения должны изначально проектироваться с учетом специфики мобильных устройств, а не конструироваться путем простого переноса постепенно вычленяемых частей приложения для настольного компьютера до тех пор, пока они умещаются на устройстве. Поэтому очень важно предварительно спланировать сферу применения приложения и после этого приступить к его проектированию с нуля.
Стереотипы использования мобильного и настольного программного обеспечения
Следует развеять миф о том, что персональные компьютеры будут вытеснены мобильными устройствами; в действительности на это пока ничто не указывает. Как уже отмечалось в предыдущих главах данной книги, мобильные устройства находят качественно иное применение по сравнению с персональными компьютерами. Чтобы добиться успеха в создании замечательных мобильных приложений, вы должны исходить из того, что мобильные устройства привносят в существующее программное обеспечение новое, мобильное наполнение, заставляя создавать совершенно новые классы программного обеспечения, а не просто заменять то, которое уже существует в виде приложений для настольных компьютеров и Web-приложений
Настольные и переносные компьютеры хорошо справляются со многими задачами, и в частности, обеспечивают возможность исследовательского стиля работы с данными, получаемыми их из самых разных источников. Во время сеанса работы с настольными или переносными компьютерами исходная информация нередко поступает из нескольких разнородных источников, и вы всегда можете вызвать именно то приложение, которое вам требуется в данный момент. Вспомните хотя бы, как вы работаете с текстовым процессором, обмениваетесь электронными сообщениями, заказываете авиабилеты через Web или разрабатываете проекты, используя подходящее программное обеспечение. Все эти виды деятельности носят исследовательский характер и во многих случаях требуют длительных сеансов работы за компьютером. На протяжении рабочего сеанса пользователю приходится иметь дело с различными приложениями и данными в зависимости от текущей ситуации, часто переходя из одного контекста в другой. С другой стороны, надлежащим образом разработанное мобильное программное обеспечение ориентируется на предоставление пользователю возможности сконцентрироваться на узкоспециальных задачах, нуждающихся в строго определенной информации, которые решаются за время коротких рабочих сеансов. Вы только представьте себе раздражение пользователя, пытающегося срочно найти адрес в неудачно спроектированной адресной книге мобильного устройства. Пользователи рассчитывают на то, что смогут связаться с нужным адресатом по телефону в течение минимального времени. Их совершенно не устраивает, если для этого приходится выполнять различные манипуляции, на которые уходит много времени; даже 10 секунд, необходимых для того, чтобы нажать нужные кнопки и перейти от одних элементов пользовательского интерфейса к другим, является недопустимо длительным промежутком времени для пользователя, которому требуется сделать всего лишь один телефонный звонок. От мобильных устройств ожидают, что они, будучи всегда под рукой, просто обязаны находиться в состоянии постоянной готовности к работе и обеспечивать быстрый доступ к информации и услугам в тех ситуациях, когда настольные или переносные компьютеры ничем помочь не могут.