Система Orphus

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

Автор: Иво Салмре
Издательство: Вильямс, 2006
736 страниц

Материал предоставил: Издательство ''Вильямс''
Найти в магазинах
Купить в Озоне (847 руб.)
Купить в Books.Ru
Купить в Болеро (650 руб.)
Купить в OZ.by (Беларусь)
Купить в My-Shop.ru (717 руб.)

Аннотация

Содержание
Об авторе
Предисловие

Аннотация

Книга известного профессионала в области компьютерных технологий посвящена разработке приложений для широкого спектра мобильных устройств с использованием популярной и постоянно развивающейся платформы .NET Compact Framework. Уникальность этой книги состоит в том, что в ней гармонично переплетены теоретические сведения обо всем цикле разработки с практическими примерами применения на языках C# и Visual Basic. Подробно рассматриваются концепции, лежащие в основе самой платформы .NET Compact Framework, а также вопросы, связанные с созданием эффективного пользовательского интерфейса, управлением памятью, производительностью и надежностью. Немалое внимание уделяется практическим аспектам разработки приложений для мобильных устройств, среди которых выбор модели представления и доступа к данным, внедрение коммуникационной модели, реализация модели поведения с помощью конечных автоматов, использование XML, подготовка установочных пакетов, особенности внедрения многопоточности в мобильных приложениях. В книге приведены ссылки на множество ресурсов в Internet, которые помогут совершенствовать свой профессиональный уровень.

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

Содержание

Об авторе
Предисловие
Мобильные устройства на наших глазах претерпевают революционные изменения
Чего в наши дни не хватает большинству технических книг?
Что нового в этой книге?
На кого рассчитана эта книга?
Благодарности
От издательства

Глава 1.Введение

Добро пожаловать в мир разработки мобильного программного обеспечения
Успех определяется несколькими ключевыми факторами
Как читать эту книгу
Способы разработки программ для мобильных устройств
Серверные приложения для мобильных устройств
Мобильные приложения на основе модели интеллектуального клиента
Управляемый код
.NET Compact Framework — среда выполнения управляемого кода для устройств
Резюме

Глава 2. Характеристики мобильных приложений

Введение
Распространенные схемы использования мобильных устройств
Долговременные и кратковременные виды деятельности
Исследовательские и целевые виды деятельности
Форм-фактор
Требования надежности
Важные характеристики мобильных приложений
Время запуска
Отклик устройства
Фокусирование внимания на отдельных задачах
Настройка взаимодействия с внешними источниками информации
Единообразие стиля интерфейса
Различия в архитектуре компьютеров
Резюме

Глава 3. Внутренняя структура .NET Compact Framework

Введение
Как проектировалась .NET Compact Framework
.NET Compact Framework как подмножество платформы для настольных компьютеров
Управляемый код и собственный код
Исполнительный механизм
Библиотеки управляемого кода
Библиотеки базовых классов
Библиотеки пользовательского интерфейса
Библиотеки клиентов Web-служб
Библиотеки XML
Библиотеки данных
Вынесение полезной отладочной и проектной информации в необязательные компоненты
Средства подключения к базам данных SQL CE/SQL
Элементы, отсутствующие в первой версии .NET Compact Framework
Защита доступа
Мультимедиа
Как запускается и выполняется код
Управление памятью и сборка мусора
Краткий обзор методов управления памятью и сборки мусора
Резюме

Глава 4. Как добиться успеха при разработке мобильных приложений

Введение
Трудности постоянного и временного характера, с которыми приходится сталкиваться при разработке программного обеспечения
Трудности временного характера и способы их преодоления
Трудности постоянного характера и методологии, привлекаемые для их разрешения
Разработка программ является итеративным процессом, который, тем не менее, также должен подчиняться определенным правилам
Описание проекта
Плановые пересмотры проекта
Детали ничего не стоят, если общая картина неверна
Решайте задачи в определенной очередности; не бойтесь при необходимости возвращаться назад
Шаг 0: прежде чем приступать к работе, определите сферу применения вашего приложения
Шаг 1: начните с анализа проблем производительности и никогда не упускайте их из виду
Шаг 2: спроектируйте подходящий пользовательский интерфейс
Шаг 3: выберите подходящие модели данных и памяти
Шаг 4: выберите подходящую модель коммуникации и модель ввода-вывода
При необходимости вернитесь к шагам 0, 1, 2 и 3
Шаг 5: пакетирование приложения для его установки
Резюме

Глава 5. Наш друг конечный автомат

Введение
Что такое конечный автомат?
Явно и неявно определенные конечные автоматы
Подход 1: зависящее от специфики конкретной ситуации, децентрализованное, неявное управление состояниями (неудачный подход)
Подход 2: плановое, централизованное, явное управление состояниями (удачный подход)
Сколько конечных автоматов должно быть в приложении?
Конечный автомат для пользовательского интерфейса
Конечный автомат для модели памяти
Конечный автомат для фоновых задач
Использование конечных автоматов в играх
Резюме

Глава 6. Шаг 0: прежде чем приступать к работе, определите сферу применения приложения

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

Глава 7. Шаг 1: начинайте с анализа проблем производительности и никогда не упускайте их из виду

Введение
Важность планомерного подхода
Определите обязательные характеристики сценариев рабочих сеансов пользователя
Определите контрольные точки разработки, критерии завершения которых ориентированы на достижение высокой производительности
Время от времени критически пересматривайте написанный код
Определите модель памяти для вашего приложения
Как можно чаще контролируйте показатели, характеризующие работу вашего приложения
Программа для измерения характеристик кода
Выполняйте тестирование с использованием реальных объемов данных
Тестируйте приложения в предельных режимах
Своевременно предпринимайте меры по поддержанию высокой производительности приложения (со временем ситуация будет только ухудшаться!)
Определение задач, решение которых необходимо для достижения высокой производительности
На всем, что связано с оценкой производительности, лежит печать субъективности
Немедленная ответная реакция приложения
Максимальная продолжительность отображения курсора ожидания
Максимальная продолжительность загрузки/сохранения данных, а также запуска/закрытия приложения
Накладные расходы по обработке исключений
Пример сравнения эквивалентных алгоритмов, в которых возбуждение исключений соответственно используется или не используется
Резюме

Глава 8. Производительность и управление памятью

Определение модели памяти для приложения
Управление памятью на макроскопическом 'уровне приложения'
Управление 'служебными' данными приложения
Управление объемом пользовательских данных, хранящихся в памяти
Использование модели загрузки данных по требованию
Управление памятью на микроскопическом 'уровне алгоритма'
Пишите аккуратные алгоритмы: не сорите!
Пишите экономные алгоритмы: разумно расходуйте память и повторно используйте объекты
Повторно используйте размещенные в памяти объекты при любом удобном случае
Избегайте размещения в памяти лишних объектов
Анализ описанных выше шагов последовательной оптимизации
Уделяйте особое внимание тому, как используются строки в ваших алгоритмах
Пример эффективного создания строк
Резюме

Глава 9. Производительность и многопоточное выполнение

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

Глава 10. Производительность и XML

Введение: работа с XML
XML или не XML?
Сравнение XML с другими текстовыми форматами
Различные способы хранения данных в виде текста
Иерархическая структура XML-данных
Другие возможности XML
Различные способы работы с XML
Простой пример, иллюстрирующий применение модели XML DOM и однонаправленного чтения-записи XML-документов
Пример: содержимое XML-файла
XMLDOM
Модель однонаправленного чтения-записи XML-данных
Повышение производительности приложения перекладыванием работы на другие программы
Избегайте выполнения сложных преобразований данных на устройстве
Избегайте выполнения сложного поиска данных на устройстве
Рассмотрите возможность исключения необязательной информации перед отправкой данных на устройство
Когда не стоит перекладывать выполнение работы на сервер
Резюме

Глава 11. Производительность графического кода и пользовательского интерфейса

Введение
Стратегии проектирования высокопроизводительных пользовательских интерфейсов
Использование встроенных средств повышения производительности
Выполняйте тесты с использованием реальных объемов данных, которые будут отображаться в вашем приложении
Отсроченный выбор — это благо! Откладывайте, откладывайте, откладывайте...
Будьте внимательны, когда работаете с кодом, управляемым событиями
Не допускайте, чтобы пользователю оставалось лишь догадываться о ходе выполнения приложения
Выбор подходящих форматов и размеров растровых изображений
Размеры изображения имеют существенное значение
Так много файловых форматов и так мало времени...
Как поступать в тех случаях, когда источником изображения с высоким разрешением является само мобильное устройство
Стратегии проектирования высокопроизводительного графического кода
Способы интеграции графики с кодом пользовательского интерфейса
Где рисовать — на экране или вне экрана?
Определите собственный процесс визуализации
Отсрочка — зло, используйте предварительные вычисления
Кэшируйте часто используемые ресурсы
Старайтесь избегать распределения памяти для объектов при выполнении повторяющихся или непрерывно продолжающихся операций рисования
Резюме

Глава 12. Производительность: подведение итогов

Итоговые замечания по поводу производительности
Производительность и управление памятью
Производительность и многопоточное выполнение
Производительность и уровни абстракции API-интерфейсов
Связь производительности с организацией пользовательского интерфейса и работы с графикой
Старайтесь постоянно информировать пользователя о ходе выполнения приложения
Заключительные замечания и рекомендации

Глава 13. Шаг 2: проектирование подходящего пользовательского интерфейса

Мыслите категориями устройств!
Один размер для всего не годится
Одна рука или две?
Возрастание роли навигационных средств при уменьшении экранного пространства
Списки или вкладки?
Пользовательские интерфейсы мобильных телефонов и важность соблюдения единообразия в использовании клавиш
Сенсорные экраны и важность использования крупных кнопок
Оптимизируйте ввод обычных данных
Убедитесь в том, что для механизмов автоматизированного ввода предусмотрены параллельные механизмы ввода вручную
Тестирование на эмуляторах и физических устройствах
Проектируйте код пользовательского интерфейса мобильного приложения таким образом, чтобы его можно было легко тестировать и модифицировать
Модель состояний для компоновки пользовательского интерфейса и управления им
Пример кода, демонстрирующий две различные модели компоновки для одного и того же приложения
Размещение элементов управления
Экранное пространство — ценная вещь
Разработка улучшенных пользовательских интерфейсов средствами .NET Compact Framework
Динамическое создание элементов управления
Создание пользовательских элементов управления и перекрытие поведения существующих элементов управления
Использование прозрачных областей растровых изображений
Встраивание изображений в виде ресурсов приложений
Резюме

Глава 14. Шаг 3: разработка подходящей модели данных

Введение в модели доступа к данным, используемые в мобильных приложениях
Выбор подходящих абстракций для хранения данных в памяти
Выбор подходящей модели данных, требующих долговременного хранения
Специфика .NET Compact Framework: ADO.NET
Элементарные сведения об объектах ADO.NET DataSet
Отслеживание изменения данных
Две модели использования ADO.NET
Различные способы хранения долговременных данных
SQL CE
Резюме

Глава 15. Шаг 4: выбор подходящей коммуникационной модели

Введение в технологии связи с помощью мобильных приложений
Написание кодов программ для работы с мобильными сетями
Не допускайте того, чтобы работа приложения всецело зависела от возможности подключения к сети
Не допускайте того, чтобы поток пользовательского интерфейса блокировался на длительное время
Работайте на самом высоком уровне абстракции, который соответствует вашим потребностям
Всегда исходите из того, что связь может быть нарушена в любой момент
Имитация сбоев связи с целью тестирования отказоустойчивости приложения
Информируйте пользователя о ходе выполнения процесса синхронизации данных
Исходите из того, что скорость передачи данных и длительность задержек могут меняться
Внедряйте необходимые коммуникационные средства безопасности уже на ранних стадиях проектирования приложения
Передача данных и выбор сети
Wi-Fi: локальные сети
Bluetooth: персональные сети
Сети мобильной телефонной связи/сотовая связь
Связь посредством лотка/ кабельного соединения с ПК
Сетевой кабель
IrDA
Карты памяти
Принудительная перекачка информации на устройства
Web-службы
Очень краткое описание Web-служб
Вызов Web-служб с мобильного устройства
Трудности, связанные с использованием Web-служб на мобильных устройствах
Резюме

Глава 16. Шаг 5: упаковка и развертывание мобильного приложения

Введение
Нуждается ли ваше мобильное приложение в цифровой подписи?
Инсталляция сред выполнения и других необходимых компонентов
Динамическое развертывание сред выполнения на мобильных устройствах
Динамическая установка компонентов, необходимых приложению
Возможные варианты упаковки и установки
Копирование и выполнение / загрузка и выполнение
Установка под управлением устройства
Установка под управлением настольного компьютера
Установка с использованием карт памяти
Установка с использованием инструмента разработки
Установка приложений в ПЗУ
Резюме

Глава 17. Послесловие

Приложение А. дополнительные ресурсы по .NET Compact Framework
Сетевые ресурсы
Обмен программами
Сетевые телеконференции
Общие вопросы разработки мобильных приложений
Особенности взаимодействия с собственным кодом
Работа с операторами мобильных сетей
Развертывание и установка
Оптимизация производительности
Приложение Б. Примеры программ на языке Visual Basic .NET
Почему именно VB.NET и С#?
Примеры к главе 5 (конечные автоматы)
Примеры к главе 7 (производительность: введение)
Примеры к главе 8 (производительность и память)
Примеры к главе 9 (производительность и многопоточное выполнение)
Примеры к главе 10 (производительность и XML)
Примеры к главе 11 (производительность и графика)
Примеры к главе 13 (проектирование пользовательского интерфейса)
Примеры к главе 14 (данные)
Примеры к главе 15 (передача данных)
Предметный указатель

Об авторе

Айво Салмре (Aivo Salmre) в течение более одиннадцати лет проработал в компании Microsoft, где занимался в основном проектированием и производством средств разработки программного обеспечения для десктопов и серверов с последующей специализацией в области мобильных устройств. Айво был ведущим программистом проекта .NET Compact Framework. Он получил степень бакалавра в области электротехники в университете штата Коннектикут, и его доклады можно часто услышать на отраслевых конференциях. Прожив десять лет в Сиэтле и немногим более года в Лондоне, Айво в настоящее время работает в Европейском инновационном центре компании Microsoft (Microsoft European Innovation Center, EMIC) в г. Аахене, Германия, где занимается исследованиями в области разработки программных моделей для современных мобильных устройств. Айво - уроженец Норфолка, штат Коннектикут.

Предисловие

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

Эта книга - о том, как создавать хорошие приложения для мобильных устройств. С этой целью изложение важных теоретических сведений сопровождается конкретными практическими примерами. Примеры разработаны на языках C# и Visual Basic .NET и рассчитаны на работу в среде Microsoft .NET Compact Network, хотя лежащие в их основе идеи в равной степени применимы ко всем мобильным компьютерным программным технологиям и платформам. Наибольшую пользу чтение этой книги принесет тем, кто использует в своей работе Visual Basic и C#, поскольку они получат возможность расширить свои познания в этой области, однако книга адресована всем, кто заинтересован в создании высококачественного программного обеспечения для мобильных устройств, независимо от того, приверженцами какой конкретно технологии программирования они являются.

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

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

Чего в наши дни не хватает большинству технических книг?

В наши дни технического справочного материала, касающегося разработки программного обеспечения, хоть пруд пруди. На полках книжных магазинов и в Web в изобилии представлены описания всевозможных программ и масса справочной литературы. Мы живем в мире, в котором на вас обрушиваются потоки информации, но несмотря на это, или возможно, именно по этой причине, приблизиться к реальным знаниям очень трудно. Тому, кто в этом заинтересован, приходится переворачивать груды угля, чтобы докопаться до драгоценных алмазов сути, которые, конечно же, где-то скрываются. Будучи, как и уголь, чрезвычайно полезными сами по себе, сырые факты - это, все же, далеко не те драгоценные камни, которые мы стремимся найти. Чего не хватает, - и это особенно относится к существующей литературе по разработке программного обеспечения для мобильных устройств, - так это доступной книги прикладного характера, в которой принципы и методы эффективного проектирования программ для мобильных устройств излагались бы с использованием конкретных примеров, иллюстрирующих теорию. Автор надеется передать читателям книги драгоценные крупицы знаний, которые обогатят их и подтолкнут к открытию замечательных возможностей, таящихся в программах для мобильных устройств. В этой книге изложение сути вопросов сопровождается практическими примерами, которые должны вдохновить читателей на проведение собственных экспериментов и наблюдений в процессе изучения ключевых элементов, лежащих в основе создания мобильного программ для мобильных устройств.

Что нового предлагается в этой книге?

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

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

Читателям каких категорий будет полезна эта книга?