412 000 произведений, 108 200 авторов.

Электронная библиотека книг » Иво Салмре » Программирование мобильных устройств на платформе .NET Compact Framework » Текст книги (страница 2)
Программирование мобильных устройств на платформе .NET Compact Framework
  • Текст добавлен: 18 июля 2025, 02:31

Текст книги "Программирование мобильных устройств на платформе .NET Compact Framework"


Автор книги: Иво Салмре



сообщить о нарушении

Текущая страница: 2 (всего у книги 69 страниц)

Успех определяется несколькими ключевыми факторами

Успешность технического решения зависит от того, насколько удачными были проектные решения. Главную роль в этом играет умение выделить самое главное, отделить зерна от плевел и обозначить ключевые моменты, на продумывание которых стоит затратить свое драгоценное время. В любом деле можно легко отличить специалиста, который делает все "легко и непринужденно", от пыхтящего от натуги новичка. Причина этого очень проста: специалист способен делать все с изящной легкостью потому, что ему это дается действительно легко! Он сразу же интуитивно понимает, на чем необходимо сосредоточить свои усилия, а на что можно просто не обращать внимания. В то же время не обладающий достаточным опытом новичок изводит себя, пытаясь сосредоточиться одновременно на всем, что и заканчивается результатом, предсказать который не представляет особой сложности. Каждый, кому довелось пройти путь от начинающего лыжника или виндсерфера (два вида спорта, для которых характерна очень крутая кривая обучения) до уровня специалиста, сможет по достоинству оценить справедливость этого утверждения. Иногда даже сами специалисты не могут сказать, что именно делает их специалистами, а просто знают, как правильно сделать то-то и то-то (временами такая их позиция буквально бесит новичков, ожидающих от них хоть каких-то объяснений). Обучение тому, как выделить главное, на чем следует сконцентрироваться, является ключевым аспектом становления специалиста. Можно воспользоваться близкой аналогией из области математики, приведя в качестве примера "эффекты первого порядка" в их противопоставлении эффектам "второго, третьего и более высоких порядков", где идея состоит в том, что в любом конкретном уравнении с множеством отдельных членов имеются малозначительные факторы и факторы, с которыми "действительно следует считаться" Общее поведение системы определяется эффектами нижайших порядков. Точно так же обстоит дело и с разработкой мобильного программного обеспечения: здесь все имеет значение, но одни факторы играют гораздо более важную роль, чем другие.

Ниже перечислены ключевые факторы, от которых зависит успешность разработки программного обеспечения для мобильных устройств. Важно учитывать все эти факторы, но первыми указаны самые значимые из них. В порядке уменьшения степени важности таковыми являются следующие факторы:

1. Сфера применения приложения. Очень важно ясно представлять себе, как в общих чертах, так и на уровне конкретных пользовательских сценариев, какие задачи должно решать данное мобильное приложение. Это утверждение может казаться слишком очевидным, но современные программные проекты буквально "напичканы" всевозможными "уникальными средствами" и обеспечивают достижение целей, ценность которых вызывает сомнения, что и стало причиной краха целого ряда многообещающих проектов, как крупных, так и небольших. Не стоит особняком в этом смысле и мобильное программное обеспечение. Успешные мобильные приложения должны острее фокусироваться на решении частных задач и преследовать еще более конкретные цели, чем их аналоги, выполняющиеся на настольных компьютерах и серверах. Очень важно отчетливо представлять себе, в решении каких задач данное приложение должно оказать помощь пользователю. Так же, если не еще более важно, сформулировать, чего данное приложение делать не должно. Отчетливая направленность приложения имеет критическое значение.

2. Производительность. Составив общее представление о том, каким должно быть ваше мобильное приложение, и установив сферу его применения, вы должны проанализировать все факторы, от которых зависит производительность приложения. Производительность мобильного приложения определяет его успешность в гораздо большей степени, чем любая другая характеристика. Быстрота ответной реакции мобильных приложений должна превышать ту, которая считается нормальной для приложений, выполняющихся на настольных компьютерах и серверах. Не обеспечив отличную производительность, вы не сможете перекрыть этот недостаток никакими другими проектными решениями. Представьте только, насколько вы были бы раздражены, если бы ваш телефон не позволял вводить номера с той скоростью, с какой их можно набирать на клавиатуре; пользователи мобильных устройств требуют от них высокой скорости ответной реакции. Очень важно подчеркнуть, что путь к повышению производительности лежит не через построчную оптимизацию кода вручную (во многих случаях это заведомо обречет вас на неудачу), а через понимание того, что именно является самым важным с точки зрения конечного пользователя, с последующей концентрацией на этом всех ваших творческих усилий и мастерства проектировщика, чтобы приложение показало себя с самой лучшей стороны.

3. Продуманный дизайн пользовательского интерфейса. Пользовательские интерфейсы мобильных устройств должны обеспечивать безошибочный и интуитивно понятный доступ к элементам управления. Интерфейсы этой категории весьма отличаются от тех типичных интерфейсов, которые предлагаются пользователям приложений, предназначенных для настольных компьютеров. Наряду с различиями в физических свойствах дисплеев и механизмов ввода различными являются и типичные способы использования интерфейса. Кроме того, не все конечные пользователи имеют одинаковый предыдущий опыт работы и в равной степени хорошо знакомы с приложениями для настольных компьютеров и вашими целевыми мобильными устройствами, что выдвигает дополнительные требования к дизайну пользовательского интерфейса. Разработка подходящего пользовательского интерфейса требует практики и носит итеративный характер. Сначала вы разрабатываете первоначальный вариант интерфейса, а далее переделываете его не один раз, пока ваше мобильное приложение не сможет обеспечить для пользователя все необходимые условия работы. Код приложения должен быть достаточно гибким, чтобы обеспечить вам свободу внесения в проект многократных изменений. Это является одновременно и наукой, и искусством.

4. Модель данных и модель памяти. Способ внутреннего представления данных в приложении, объем данных, хранящихся в памяти в каждый момент времени, и методы обработки данных влияют на функционирование мобильного приложения самым кардинальным образом

5. Коммуникационная модель. Непременным условием успешного создания замечательных мобильных приложений является разработка хорошей модели, позволяющей управлять способом и длительностью обмена данными между устройством и другими компьютерами. Мобильные устройства могут связываться с настольными компьютерами, серверами и другими устройствами, и каждый из этих видов взаимодействия вы должны хорошо понимать и правильно обеспечивать с технической точки зрения. Гораздо большее, чем в случае настольных компьютеров внимание вы должны уделить анализу вероятных причин разрыва связи, а также ситуаций, в которых полоса ограничена или ее стоимость высока, а каналы связи не являются надежными.

Соответствующие технические методы, обеспечивающие удовлетворение описанных выше требований, обсуждаются в последующих главах.

Как читать эту книгу

Те знания, которыми автор делится с читателями в этой книге, были приобретены им на протяжении многих лет напряженной работы и являются результатом его личного опыта, а также подробных обсуждений с друзьями и партнерами по сети их собственного опыта, накопленного в процессе разработки мобильных приложений. Разработка мобильных программ – это работа, которая одновременно доставляет огромное удовольствие. Всякий раз, когда видишь, как на экране мобильного устройства, без труда умещающегося в кармане, вдруг появляется и начинает выполняться созданное тобой приложение, испытываешь чувство удовлетворения. При наличии таких технологий, как .NET Compact Network и Visual Studio .NET компании Microsoft, a также других конкурентоспособных инструментов и сред выполнения, предлагаемых различными поставщиками, разработка приложений для мобильных устройств становится вполне доступным занятием. Наилучший способ ознакомления с соответствующими методиками и их изучения – это их применение на практике и реализация наряду с собственными идеями.

Я советую вам хорошенько запомнить перечисленные выше факторы успеха и приступить к чтению этой книги в том порядке, который вам кажется наиболее подходящим. Если вас особенно интересуют некоторые конкретные вопросы разработки программного обеспечения, можете сразу же приступить к чтению соответствующих разделов. Книга изобилует множеством полезных примеров; вы можете совершенно свободно переходить к любому интересующему вас месту книги и "пощупать" все собственными руками.

И самое главное – смело экспериментируйте!

Способы разработки программ для мобильных устройств

Существует немало технологий, позволяющих создавать приложения для мобильных устройств. Во многом подобно разработке приложений для настольных компьютеров, двумя основными моделями являются модель серверного Web-приложения и модель интеллектуального клиента. Данная книга в основном посвящена клиентским приложениям для мобильных устройств, но в целях сравнения имеет смысл вкратце проанализировать модели приложений обоих типов.

Серверные приложения для мобильных устройств

Серверные приложения принято называть "приложениями браузера". Приложения этого типа обладают значительной гибкостью. Их привлекательной чертой является то, что они не требуют присутствия на мобильном устройстве никаких других программных компонентов, кроме типового мобильного браузера. Недостаток такого подхода состоит в том, что, как и в случае любых других Web-приложений, мобильные Web-приложения требуют постоянной связи с сервером и не могут предложить того разнообразия возможностей и столь же быстрой ответной реакции, что и решения, обеспечиваемые установкой всех нужных программных компонентов на мобильном устройстве. Необходимость поддержания постоянного соединения с сервером требует особого внимания, поскольку в случае мобильных устройств, в отличие от настольных компьютеров, возможны нерегулярные нарушения связи, обусловленные передвижением пользователя, мобильное устройство которого не имеет никаких проводных подключений. В то же время, если ваше приложение должно выполняться лишь после того, как пользователь установит соединение с сервером, и вы желаете расширить круг целевых устройств, вариант мобильного Web-решения несомненно заслуживает внимания.

НА ЗАМЕТКУ

Существует множество технологий, которые могут быть использованы при разработке Web-приложений, ориентированных на мобильные устройства. Кроме элементов управления технологии Microsoft ASP.NET для мобильных устройств, существуют и другие Web-технологии, поддерживающие разработку мобильных приложений. Для этих технологий существуют свои стратегии создания мобильных Web-приложений. Если вы уже привыкли работать с какой-то определенной Web-технологией, то вполне вероятно, что доступно и соответствующее расширение этой технологии, ориентированное на мобильные устройства.

Технология компании Microsoft, предназначенная для разработки Web-приложений, носит название ASP.NET (Active Server Pages .NET). ASP.NET предлагает "мобильные элементы управления" ASP.NET, предназначенные для мобильных устройств. Visual Studio .NET 2003 предоставляет пользователям возможность создавать мобильные ASP.NET-приложения. На рис. 1.1 показано диалоговое окно Visual Studio для создания нового проекта ASP.NET Mobile Web Application.

Процесс проектирования и создания мобильных Web-приложений в целом выглядит так же, как и в случае Web-приложений, ориентированных на настольные варианты Web-браузеров, за исключением перечисленных ниже основных отличий:

■ Проектное пространство. Вам предоставляется проектное пространство (design surface), которое учитывает особенности мобильных устройств и характеризуется использованием упрощенной и модернизированной парадигмы компоновки элементов управления, ориентированной на мобильные приложения.

■ Элементы управления, разработанные специально для устройств. Вместо обычного набора элементов управления HTML вам предлагается набор элементов управления Mobile Web Forms (Web-форм для мобильных устройств). Эти элементы специально спроектированы таким образом, чтобы они могли нормально визуализироваться на широком ряде устройств. Некоторые из предлагаемых элементов управления, такие, например, как элемент управления PhoneCall, являются специфическими для определенных типов устройств.

■ Язык визуализируемой разметки документов. На стадии выполнения приложения элементы управления Mobile Web Forms, выполняющиеся на сервере, могут генерировать документы, в которых используются синтаксис языков разметки Wireless Markup Language (WML), Compact HTML (cHTML) или HTML, в зависимости от возможностей браузера, установленного на мобильном устройстве, от которого поступил запрос.

Исходя из информации, полученной вместе с запросом от мобильного Web-браузера, среда выполнения на стороне сервера принимает решение относительно того, какой набор параметров будет наиболее оптимальным для дисплея мобильного устройства, с которым она взаимодействует. Новые варианты технологии ASP.NET Mobile Web поддерживают широкий спектр устройств. Поддержку устройств нового типа можно дополнительно получить от компании Microsoft, изготовителей устройств, а также конечных разработчиков, желающих использовать в качестве целевых устройств такие, которые в настоящее время средой выполнения не поддерживаются.

Для доступа к мобильным Web-приложениям на устройстве должен быть установлен мобильный браузер, располагающий соответствующими возможностями. Существует множество разновидностей мобильных браузеров, но наиболее распространенными являются уже упоминавшиеся ранее WML-, cHTML– и HTML-браузеры. Большинство современных мобильных телефонов поставляются с предварительно установленным Web-браузером того или иного типа

Значительно больше информации относительно разработки мобильных ASP.NET– приложений вы найдете в оперативной справочной документации. (Великолепной отправной точкой для этого может служить раздел "Mobile" на Web– сайте http://www.asp.net.)

Рис. 1.1. Создание нового проекта ASP.NET для мобильного Web приложения

Мобильные приложения на основе модели интеллектуального клиента

В этой книге основное внимание уделено разработке клиентских приложений для мобильных устройств. Если вы решаете, что ваше мобильное приложение будет лучше всего работать в качестве "толстого" клиента, то вам придется принять еще одно важное решение. Вы должны решить, какую именно технологию следует использовать на стороне клиента. Будете ли вы создавать приложение с использованием собственного или управляемого кода? У каждого из этих двух вариантов имеются свои преимущества и недостатки.

Собственный код

Приложения на основе собственного кода (native code) обычно разрабатываются с использованием языков С или С++. Собственные коды полезны в тех случаях, когда вы хотите добиться от системы максимальной производительности или же вам требуется низкоуровневый доступ к оборудованию. В то же время, собственным кодам свойствен ряд серьезных недостатков, перечень которых приводится ниже.

■ Процесс разработки приложений с использованием собственного кода менее продуктивен по сравнению с вариантом управляемого кода. Поскольку вы работаете на более низком уровне абстракции, для создания кода программы потребуется больше времени.

■ Собственный код зависит от процессора. Результатом компиляции собственного кода является последовательность машинных команд, которые зависят от целевого микропроцессора. Таким образом, если предполагается, что в дальнейшем программа должна будет выполняться на процессорах, относящихся к разным семействам, то вам придется компилировать и развертывать несколько версий приложений. Иногда то же самое может потребоваться даже в случае разных процессоров, принадлежащих одному семейству. Так, существует несколько различных вариантов очень популярных микропроцессоров ARM, для каждого из которых необходимо использовать отдельные версии компиляторов собственного кода.

■ Собственный код требует более жесткого тестирования по сравнению с управляемым кодом. Работая с собственным кодом, вы должны самостоятельно заботиться о распределении памяти и других ресурсов. Как показывает практика, создание "идеального приложения" – задача не из легких, если вообще осуществимая. В сложных системах почти всегда найдутся области памяти, которые в силу тех или иных причин не были освобождены после того, как необходимость в них отпала. По прошествии некоторого времени даже небольшая утечка памяти или иных ресурсов в повторяющемся коде может привести к исчерпанию ресурсов устройства. Многие сотовые телефоны почти никогда не выключаются. Во многих устройствах PDA предусмотрены средства немедленного восстановления состояния системы, которые поддерживают выполнение приложений или их сохранение в памяти даже в тех случаях, когда устройство выключается. Своим поведением в отношении утечки памяти мобильные устройства больше напоминают не настольные компьютеры, а серверы, которые часто также остаются включенными в течение длительного времени. В случае утечки памяти система, в конечном счете, перестанет отвечать на ваши запросы или будет работать нестабильно. Разработка собственных кодов для мобильных устройств требует предельного внимания и строгого тестирования приложений в режиме "24/7" (24 часа в сутки, 7 дней в неделю).

Инструменты разработки на С++ для мобильных устройств

Во время написания данной книги компания Microsoft предлагала свободно распространяемый инструментальный набор средств для разработчиков устройств на языках C/C++ под названием eVC++. eVC++ – это аббревиатура от Embedded Visual С++. Этот продукт, который можно бесплатно загрузить с Web-сайта Microsoft, позволяет разработчикам создавать собственный код на языках C/C++ для устройств, работающих под управлением операционных систем Windows СЕ, Pocket PC и Microsoft Windows Mobile 2003 Software for Smartphone (ради краткости при дальнейших ссылках на последний из названных программных продуктов я буду использовать его сокращенное название – Microsoft Smartphone). В основу этой среды разработки была положена среда Visual Studio 6.0 С++, являющаяся предшественницей Visual Studio .NET. Согласно планам Microsoft последующие версии Visual Studio .NET (начиная с выпуска "Whidbey" в 2005 году) будут обеспечивать поддержку разработки собственных кодов C/C++ для устройств, в результате произойдет слияние обеих указанных сред в одну среду.

При разработке приложений для Windows ХР Embedded можно использовать ту же среду Visual Studio .NET, что и для настольных компьютеров и серверов.

Созданием сред для разработки приложений в собственных кодах занимаются и другие компании, в том числе MetroWorks и WindRiver. Существует также множество инструментальных средств командной строки, часть которых является бесплатной, тогда как за остальные надо платить. Типичные продукты поставляются в виде отдельных пакетов, предназначенных для различных целевых сред. Так, существуют отдельные среды разработки для Windows СЕ, Symbian Operating System, а также для LINUX, FreeBSD, Palm OS и так далее.

Инструменты разработки приложений для мобильных устройств характеризуются различными уровнями поддержки стандартов ANSI C/C++. Если вы хотите обеспечить переносимость кода или библиотек, придерживайтесь следующих рекомендаций:

• Тщательно выясняйте уровень поддержки стандартов, который обеспечивается используемыми вами компиляторами, обращая особое внимание на такие тонкие вещи, как структурная обработка исключений. Различные компиляторы предоставляют различные уровни поддержки таких, например, средств, как обработка исключений, а возможно, и таких вещей, как операции с вещественными числами или стандартная битовая ширина целых чисел.

• Обзаведитесь хорошим руководством по программированию, содержащим подробные описания всех средств компилятора и библиотек программ, которые вы будете использовать в своих приложениях. Убедитесь в том, что эти средства и библиотеки поддерживаются всеми компиляторами, которые вы планируете использовать для различных целевых процессоров или операционных систем.

• Рассмотрите возможность использования "наименьшего общего знаменателя" для всей совокупности возможных средств, например, ограничьтесь применением только языка С (в смысле – откажитесь от С++) или же используйте лишь какое-то отдельное простое подмножество средств С++. Благодаря этому вы сможете быть уверены в том, что присутствие и поддержка выбранных вами языковых средств будут в равной степени обеспечиваться широким кругом компиляторов.

• Как можно чаще и начиная уже с ранних стадий разработки, тестируйте приложение на каждом компиляторе/платформе, для работы с которыми оно запланировано. Качество кода, обеспечиваемое различными компиляторами C/C++, не обязательно одинаково, и некоторые их них могут содержать ошибки, которые могут быть выявлены только в процессе выполнения или отладки программы. В целом, компиляторы C/C++ для мобильных устройств используются далеко не так широко, как компиляторы для настольных компьютеров и серверов, работающих на процессорах семейства х86. Как следствие, число разработчиков, рискующих испытать свои силы на поприще генерации кодов для них, не так уж и велико. Как показала практика, чем менее широко используется какой-либо программный продукт, тем больше скрытых ошибок в нем содержится и тем больше ограничений ему свойственно. Не утруждая себя частым тестированием кодов на протяжении всего периода разработки с использованием для этого всей совокупности компиляторов и платформ, для выполнения на которых предназначено приложение, вы заведомо готовите для себя неприятные сюрпризы в будущем!

• Тщательно ознакомьтесь с описанными в соответствующих лицензионных соглашениях ограничениями, касающимися использования применяемых вами компиляторов библиотек и инструментальных средств. Если вы создаете приложение, предназначенное для коммерческого использования, изучите лицензионные соглашения всех без исключения компиляторов, библиотек исходных кодов и библиотек времени выполнения, а также средств компоновки, которые вами используются. Каким бы утомительным ни было чтение этих документов, лучше быть хорошо осведомленным об этих ограничениях уже с самого начала, чем переделывать всю работу или переходить на другой компилятор на более поздних стадиях производственного цикла. Смена компилятора может казаться легкой, но повозиться вам придется немало, и вдобавок это отнимет много времени. Все сказанное выше справедливо в отношении любого программного обеспечения разработчика, но в отношении средств разработки приложений для мобильных устройств это справедливо вдвойне из-за огромного разнообразия специализированных инструментальных средств, сопровождаемых лицензионными соглашениями самых различных видов, включая EULA (end-user license agreement – лицензионное соглашение с конечным пользователем), ограничения, касающиеся лицензионных платежей, ограничения, касающиеся защиты прав на интеллектуальную собственность, например, GPL (general public license – общедоступная лицензия), LGPL (lesser general public license – общедоступная лицензия с ограничениями), FreeBSD и тому подобное.

Caveat emptor[1]1
  Caveat emptor (лат.) – пусть покупатель будет бдителен.


[Закрыть]
; Пусть программист будет бдителен! Никто никого не запугивает; это только призыв к тому, чтобы, делая свой выбор, вы поступали осмотрительно.

Разработка приложений для мобильных устройств с использованием собственных кодов не является чем-то необычным и вполне может соответствовать вашим потребностям, но решение об этом вы должны принимать осознанно, понимая причины, побуждающие вас к такому выбору. Если при создании мобильного приложения вы решаете прибегнуть к написанию собственных кодов, убедитесь в том, что для этого имеются веские причины, и не пожалейте времени на то, чтобы заранее продумать, какие возможности компиляторов C/C++ вам могут для этого понадобиться и какие усилия вам придется приложить для преодоления возникающих при этом проблем разработки и отладки. Разрабатывать мобильные приложения на основе собственного кода намного сложнее, чем для настольных компьютеров или серверов. Чтобы добиться в этом успеха, вы должны быть вооружены ясным пониманием целей и знаниями инструментальных средств, которые собираетесь для этого использовать.


    Ваша оценка произведения:

Популярные книги за неделю