19
РАЗРАБОТКА ПРИЛОЖЕНИЙ С ИСПОЛЬЗОВАНИЕМ COMPACT FRAMEWORK 2.0 / 3.5 Windows Mobile 5/6/6.1

Windows Mobile Development with Compact Framework 2

Embed Size (px)

Citation preview

РАЗРАБОТКА ПРИЛОЖЕНИЙ С ИСПОЛЬЗОВАНИЕМ COMPACT FRAMEWORK 2.0 / 3.5

Windows Mobile 5/6/6.1

Немного о Windows Mobile устройствах

Смартфоны Коммуникаторы КПК

• Обычный экран, обычно 2.4”• Ландшафтная ориентация• Аппаратная клавиатура:

• алфавитно-цифровая на моноблоке

•Отсутствует SIP (Soft Input Panel, виртуальная клавиатура)

• Сенсорный экран, обычно 2.8”• Портретная ориентация• Аппаратная клавиатура:

• Отсутствует• цифровая на моноблоке• цифровая (на слайдере)• алфавитно-цифровая (на

боковом слайдере)

• Сенсорный экран 3.5” QVGA и 3.8” VGA• нет возможности позвонить

Версии Windows Mobile

WM 5 WM 6 WM 6.1

Предустановлен CF1 – необходимо отдельно устанавливать CF2

Предустановлен CF2 Предустановлен CF 3.5

• WM5 for Pocket PC• WM5 for Smartphones

240x240, 240x320,320x320, 480x640

• WM6 Professional• WM6 Standard (??? WTF, никому, вроде не нужен, дивайсов очень мало). Однако, Samsung Blackjack II – в USA является смартфоном №1 по версии Consumer reports http://www.3dnews.ru/news/5_luchshih_smartfonov_po_versii_consumer_reports/

Существенных изменений нет, только новые разрешения типа 240x400, 480x480, 480x800

Среда разработки

Visual Studio 2005 Visual Studio 2008 Sharp Develop (FREE)

Отличная стабильная среда, однако, уже несколько устаревшая.

Поддерживает Compact Framework 1.0/2.0

Почти нет разницы по сравнению с VS2005.

Чуть более тормозной GUI.

Поддерживает Compact Framework 2.0 / 3.5

Visual Studio Express 2008 - не поддерживает разработку для Windows Mobile

WM 5/6 SDK никак не установить без VS200X, но работать можно и без него:http://www.codeproject.com/KB/mobile/WiMoSansVS.aspx

Сборка из консоли (http://msdn.microsoft.com/en-us/library/ms172492.aspx )

cordbg.exe – отладка на эмуляторе из консоли не работает, хотя когда-то работала

Native (WinAPI/C++) vs Managed (C#)

Native Managed

• MFC, ATL, WTL • Знакомым с этими технологиями на WM будет

легко. Незнакомым будет страшно.

• Разрабатывать GUI неудобно

• Приложения грузятся быстрее, чем написанные на C#

• Qt for Device Creation (trolltech.com)• Шокирущая кросс-платформенность: S60, WM, Linux

• Огромные dll, грузятся даже дольше, чем .net

• GUI притормаживает (субъективно)

• C# или VB.NET

• native код приходится периодически вызывать через P/Invoke

• Старт приложений не мгновенный, но приемлемый

• Можно очень быстро израсходовать всю память – GC не успеет очистить

• При правильном походе графика быстра, можно писать игры

•… всё-таки .net гораздо комфортнее для разработчика, чем native

Ограничения Compact Framework

Чудовищных ограничений нет, надо просто внимательно читать описания классов и методов в msdn

Из обидного – ужались в графике, градиенты можно рисовать только через P/Invoke

Нет поддержки печати на принтер Почти все телефонные специфичные вещи

делаются через P/Invoke (см. далее про SDF)

Особенности разработки для мобильных устройств Ограниченный размер экрана и разрешение Необходимость поддерживать различные

разрешения и ориентации экрана Однооконность Приложение может уходить в фон (не

выгружаясь полностью) и возвращаться из него API ограничены по сравнению с desktop-ом Не очень быстрый процессор

Designed for WM6 (1 из 4)

Требования к инсталляции/деинсталляции Поддерживать msi и (или) cab дистрибутивы Создавать ярлык в Programs Устанавливать dll только в Windows или каталог

программы

Требования к использованию реестра По возможности не трогать реестр вне HKLM При деинсталляции подчищать за собой по

максимуму

Designed for WM6 (2 из 4)

Требования к UI/Shell Support Целостность нижнего меню и верхнего бара (NavBar) очень

важны В NavBar всегда отображать название приложения Поддерживать soft-keys (левый и правый) На правом soft key всегда меню На левом soft key или back или наиболее используемая функция Обязательно иметь иконку с форматами 16х16 и 32х32 (и 64х64,

если заявлена поддержка VGA) Обрабатывать show/hide у SIP Уважать настройки пользователя (цвета, язык и т.д.)

Designed for WM6 (3 из 4)

Требования к функциональности Приложение должно быть стабильным и проходить

hopper-test (далее подробнее). Приложение не должно зависеть от внешних карт

памяти в явном виде При завершении приложения не должно быть никаких

диалоговых окон и т.д. Недопустимо решать вопрос нескольких открытых

документов путём запуска нескольких экземпляров приложения

Designed for WM6 (4 из 4)

Требования к поддержке форматов дисплея Поддерживать не только портретную, но и ландшафтную и

квадратную ориентации При заявленной поддержке VGA-экранов, рекомендуется иметь

отдельную hires графику для контролов

Стандартные контролы в CF

Хочется как рис.1, но будет как рис. 2.

Рис.1 Рис.2

Отладка приложений на эмуляторе

Отличный эмулятор для любых разрешений и версий WM

Breakpoints, watch variables, пошаговая отладка и т.д. – все прелести Visual Studio в комплекте.

Из недостатков: медленнее, чем реальное устройство не работает Edit and continue

Базы данных (SQL)

SQL Server Mobile SQLite

• Т.к. Продукт от MS, то в наличии максимальная интеграция с VS и MS SQL Server 2005 (Server Explorer, генерация typed datasets и т.д.)• автоматическая синхронизация с MS SQL• достаточно большой файл на пустой базе, только со схемой• нет транзакций• есть foreign keys• достаточно медленный, но если пользоваться CeResultSet(), становится быстрее

• кросс-платформенная, есть на WM, iPhone, Google Android (и практически на всех десктопных и серверных OS)• нет оверхеда в файлах • есть транзакции• нет foreign keys• быстрее SQL Server Mobile

Unit testing

От MS поддержка есть только в VS 2008, зато какая! Автогенерация тестов по class library Удобный IDE для прогонов тестов

Nunit (известный фреймворк для юнит-тестирования .NET приложений) есть для CF в виде CFNUnitBridge.

Stress testing - hopper

Приложение на C, которое хаотично кликает по экрану, нажимает софт-кнопки, печатает в текстбоксы – всячески безобразничает

Изначально было разработано в MS для тестирования всей WM в целом

Нормальная настройка hopper для Compact Framework – целое дело, необходимо настраивать некий sampleApp.exe http://blogs.msdn.com/windowsmobile/archive/2007/06/13/how-to-run-hopper-on-your-application-step-by-step-procedures.aspx

Smart Device Framework (SDF)

Фантастическая по возможностям библиотека http://www.opennetcf.com/library/sdf/ - читая

документацию, можно увидеть всё, что отсутствует или несовершенно в Compact Framework Bluetooth/WiFi/Vibrate/Sms BatteryMonitor/BatteryStatus/BatteryLife Application2/Clipboard2/Timer2 BitmapEx Ftp/Mail/Rss

Различия между CF2 и CF 3.5

WCF (только в виде клиента) LINQ (

http://msdn.microsoft.com/ru-ru/library/bb308959(en-us).aspx )

DeflateStream, GZipStream SoundPlayer (можно воспроизводить несколько

звуков одновременно) Улучшенная отладка, журнализация и т.д. Напомню, CF 3.5 установлен по умолчанию

только в WM 6.1, в обычной 6.0 CF 2.0

Полезные ресурсы

Designed for WM 6 Professional_Handbook_May2007_Final.pdf – официальный документ от Microsoft

Книги: http://www.amazon.com/Definitive-Guide-NET-Compact-Framework/dp/1590590953

http://www.amazon.com/Compact-Framework-Programming-Microsoft-Development/dp/0321174038/ref=sr_1_1?ie=UTF8&s=books&qid=1230302391&sr=1-1

Блоги: http://www.cjcraft.com/blog/CategoryView,category,30%2BDay%2Bof%2B.NET.aspx

http://blog.opennetcf.com/ayakhnin/ и http://blogs.msdn.com/priozersk/