Иво Салмре - Программирование мобильных устройств на платформе .NET Compact Framework
■ Основы работы с собственными кодами в среде .NET Compact Framework
An Introduction to P/Invoke and Marshalling on the Microsoft .NET Compact Framework
Авторы: Jon Box, Dan Fox; Quilogy
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnnetcomp/html/netcfintrointerp.asp
■ Тонкости работы с собственными кодами в среде .NET Compact Framework
Advanced P/Invoke on the Microsoft .NET Compact Framework
Авторы: Jon Box, Dan Fox; Quilogy
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnnetcomp/html/netcfadvinterop.asp
■ Передача асинхронных сообщений из собственного кода в управляемый код при помощи .NET Compact Framework
Asynchronous Callbacks from Native Win32 Code Автор: Maarten Struys; PTS Software
http://msdn.microsoft.corn/library/default.asp?url=/library/en-us/dnnetcomp/html/AsynchCallbacks.asp
Работа с операторами мобильных сетей
Компания Microsoft предлагает рекомендации и программу сотрудничества по вопросам создания, сертификации и развертывания приложений на мобильных телефонах, публикуемые операторами мобильных сетей.
■ Сокращенная ссылка, которая переадресует вас на более подробное содержимое, указанное далее:
Сокращенный URL-адрес Mobile2Market
http://www.mobile2market.com
■ Сертификация от Mobile2Market и маркетинговая программа
http://msdn.microsoft.com/mobility/windowsmobile/partners/mobile2market/default.aspx
■ Список операторов мобильных сетей, рекомендации по отдельным операторам и контактная информация
http://msdn.microsoft.com/mobility/windowsmobile/partners/mobile2market/smartphoneapps/default.aspx
Развертывание и установка
Инсталляционные технологии постоянно развиваются, и то, какую из них следует использовать, зависит от типа разрабатываемого приложения и вида целевого оборудования. Как и в случае изучения способов взаимодействия с собственными кодами, лучше всего изучать то, что вам необходимо, на конкретных примерах.
Инструкции по развертыванию и установке приложений .NET Compact Framework хорошо изложены в документации продукту MSDN, которая поставляется вместе с Visual Studio .NET. С неплохим примером развертывания приложения на устройствах вы можете ознакомиться в оперативной справочной документации, последовательно выбрав следующие разделы: Visual Studio .NET→Developing with Visual Studio .NET→Designing Distributed Applications→Developing for Devices→Samples and Walkthroughs→Smart Device Walkthroughs→Generating Custom CAB Files for Device Projects (Visual Studio .NET→Разработка с помощью Visual Studio .NET→Проектирование распределенных приложений→Разработка для устройств→Примеры и анализ→Анализ интеллектуальных устройств→Генерация пользовательских CAB-файлов для проектов, ориентированных на устройства).
■ Пошаговый разбор создания инсталляционного приложения для Pocket PC
Developing and Deploying Pocket PC Setup Applications
Автор: Ralph Arvesen; Vertigo Software, Inc.
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnnetcomp/html/netcfdeployment.asp
■ Подробное описание динамической установки .NET Compact Framework на устройствах на тот случай, если это вам когда-либо понадобится
Creating an MSI Package That Detects and Updates the .NET Compact Framework
Автор: Stan Adermann; Microsoft Corporation
http://msdn.microsoft.com/library/default.asp?url=/library/ en-us/dnnetcomp/html/netcfdepl.asp
Профессиональные инструментальные средства разработки инсталляционных программ. В настоящее время некоторые изготовители инсталляционных средств для настольных компьютеров и серверов расширили свои предложения, которые теперь охватывают и мобильные устройства. Вне всякого сомнения, вам стоит ознакомиться с предложениями InstallShield для мобильных устройств,
http://www.installshield.com
Примечание. Я указал здесь InstallShield, учитывая широкую известность и популярность этого средства установки. Если вы используете другие инсталляционные программы, то, безусловно, вам стоит посетить соответствующие Web-сайты, чтобы узнать, поддержку каких мобильных устройств они предлагают.
Оптимизация производительности
В указанной ниже статье вы найдете превосходные советы и описания эффективных практических методов настройки производительности приложений, а также подробное изложение методик получения данных профилирования приложений с помощью .NET Compact Framework, которые вы сможете применить для анализа производительности приложений. Эта прекрасная статья поможет вам сохранять "дух производительности" в процессе разработки мобильных приложений.
■ Developing Well-Performing .NET Compact Framework Applications
Авторы: Dan Fox, Jon Box; Quilogy
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnnetcomp/html/netcfperf.asp
ПРИЛОЖЕНИЕ Б
Примеры программ на языке Visual Basic .NET
Почему именно VB.NET и С#?
Споры между разработчиками программ на языках VB.NET и С# никогда не прекращается, и это неплохо! Представителям обоих лагерей есть чему поучиться друг у друга. Что касается меня, то, поработав с обоими языками в течение многих лет, и в частности, имея опыт работы в составе группы разработчиков на Visual Basic, могу поделиться следующими наблюдениями. Каждый из этих языков может быть использован для решения практически любой задачи программирования — все дело в акцентах. Я обнаружил, что Visual Basic .NET с его традиционным для Visual Basic акцентом на продуктивности программирования великолепно приспособлен для разработки конечных приложений.
С другой стороны, преимуществом С# является его строгость, что делает его более приспособленным для проектирования каркасов приложений. По всей видимости, оба языка в равной степени хорошо приспособлены для проектирования повторно используемых компонент, которые занимают промежуточное положение между независимыми приложениями и обширными библиотеками программ. Кроме того, оба языка предлагают опции, отличные от используемых по умолчанию, которые сближают подходы, основанные на использовании каждого из них. Так, в Visual Basic .NET имеется директива Option Strict On, которую я настоятельно рекомендую помещать в начале любого модуля, который вы пишете, в качестве меры, позволяющей вылавливать многие виды распространенных синтаксических и логических ошибок. Помимо этого, оба языка учатся друг у друга, заимствуя каждый с выходом очередной новой версии нечто полезное, что впервые было предложено в другом языке; это порождает хороший дух соперничества между этими двумя языками.
В Visual Basic .NET мне особенно нравятся возможности, относящиеся к обработке событий; ключевые слова AddHandler и Handles (используемые в приведенных ниже кодах) гораздо более элегантны и декларативны, чем их текущие варианты, используемые в С#. Поскольку удобнее всего работать с примерами, которые написаны на наиболее привычном языке, я поместил в данное приложение VB.NET-версии почти всех листингов, приведенных в основной части книги.
Не включены в приложение только листинги примеров, которые, либо в силу малости их размера, либо в силу того, что они должны быть одинаково хорошо понятны разработчикам, принадлежащим любому лагерю, автор счел слишком тривиальными, чтобы тратить время на их трансляцию. Везде, где только возможно, соблюдается практика записи кода, принятая в Visual Basic, в том смысле, что приведенный ниже код является не результатом прямой трансляции кода, написанного на языке C#, а скорее его "VB-версией"; в то же время, оба вида примеров функционально эквивалентны друг другу, и тем, для кого представляет интерес сравнение возможностей языков Visual Basic и C#, чтобы решить для себя, какой из них выбрать, сделать это не составит труда. Удачного программирования!
Примеры к главе 5 (конечные автоматы)
Листинг 5.1. Простой код конечного автомата для игры с множественным выборомOption Explicit On
Class MyStateMachineClass
Private Enum GameState
StartScreen
AskQuestion
CongratulateUser
ScoldUser
End Enum
Private m_CurrentGameStateAs GameState
'---------------------------------------------------------------------
'Конечный автомат, воздействующий на пользовательский интерфейс и
'управляющий переходами приложения в другие состояния в соответствии с
'текущим режимом работы пользователя
'---------------------------------------------------------------------
Private Sub StateChangeForGame(ByVal newGameUIState _
As GameState)
'Определить, в какое состояние переходит приложение
Select Case (newGameUIState)
Case GameState.StartScreen
'Если переход в данное состояние осуществляется из состояния,
'для которого это запрещено, возбудить исключение
If ((m_CurrentGameState <> GameState.CongratulateUser) _
AndAlso (m_CurrentGameState <> GameState.ScoldUser)) Then
Throw New System.Exception("Запрещённое изменение состояния!")
End If
'ЧТО СДЕЛАТЬ: Поместите сюда код, выполняющий следующие операции:
' 1. Скрытие (Hide), отображение (Show) и перемещение (Move)
' элементов управления пользовательского интерфейса