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

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

Что касается второй цитаты, то у нас есть все основания сомневаться в том, что семейный фильм 80-х годов о визите космического пришельца способен научить нас чему-либо в области мобильной связи. За цитатой скрывается простой намек: даже у представителей высокоразвитых цивилизаций иногда могут возникать трудности с тем, чтобы просто "сделать звонок домой". Чтобы связаться со своими родными, пришельцу потребовалось при помощи кабеля подключить обычный телефон через дешифратор к своему оборудованию; к счастью, нам (как мы надеемся!) будет немного легче. В любом случае для организации эффективной связи мы должны подготовить достаточно гибкий и надежный проект, позволяющий справляться с неожиданно возникающими проблемами.

Чтобы обеспечить доступ к сетевым ресурсам, в которых нуждается ваше мобильное приложение, вам придется преодолеть такие препятствия, как ненадежные соединения, недружественные брандмауэры и мобильные сети, которые, похоже, так и хотят извести вас всевозможными "усовершенствованными" пакетами, НТТР-заголовками или потоками, используемыми для передачи данных. Мобильные коммуникационные сети являются и будут оставаться более неоднородными по сравнению со стационарными сетями, и, как и в случае других аспектов проектирования мобильных приложений, весьма маловероятно, чтобы подход, основанный на принципе "пишется однажды — выполняется везде", привел вас к успеху при решении коммуникационных задач. Для того чтобы все работало так, как надо, вы должны провести множество экспериментов, во многом разобраться, создать качественный проект, надежно протестировать его и при этом, скорее всего, проявить, подобно упомянутому пришельцу, немалую долю изобретательности, ибо только тогда вы сможете быть уверены в том, что ваше приложение будет способно в любых ситуациях обеспечить связь "с домом".

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

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

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

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

Перейти на страницу:

Похожие книги

Программист-прагматик. Путь от подмастерья к мастеру
Программист-прагматик. Путь от подмастерья к мастеру

Находясь на переднем крае программирования, книга "Программист-прагматик. Путь от подмастерья к мастеру" абстрагируется от всевозрастающей специализации и технических тонкостей разработки программ на современном уровне, чтобы исследовать суть процесса – требования к работоспособной и поддерживаемой программе, приводящей пользователей в восторг. Книга охватывает различные темы – от личной ответственности и карьерного роста до архитектурных методик, придающих программам гибкость и простоту в адаптации и повторном использовании.Прочитав эту книгу, вы научитесь:Бороться с недостатками программного обеспечения;Избегать ловушек, связанных с дублированием знания;Создавать гибкие, динамичные и адаптируемые программы;Избегать программирования в расчете на совпадение;Защищать вашу программу при помощи контрактов, утверждений и исключений;Собирать реальные требования;Осуществлять безжалостное и эффективное тестирование;Приводить в восторг ваших пользователей;Формировать команды из программистов-прагматиков и с помощью автоматизации делать ваши разработки более точными.

Эндрю Хант , Дэвид Томас , А. Алексашин

Программирование / Книги по IT
Разработка ядра Linux
Разработка ядра Linux

В книге детально рассмотрены основные подсистемы и функции ядер Linux серии 2.6, включая особенности построения, реализации и соответствующие программны интерфейсы. Рассмотренные вопросы включают: планирование выполнения процессов, управление временем и таймеры ядра, интерфейс системных вызовов, особенности адресации и управления памятью, страничный кэш, подсистему VFS, механизмы синхронизации, проблемы переносимости и особенности отладки. Автор книги является разработчиком основных подсистем ядра Linux. Ядро рассматривается как с теоретической, так и с прикладной точек зрения, что может привлечь читателей различными интересами и потребностями.Книга может быть рекомендована как начинающим, так и опытным разработчикам программного обеспечения, а также в качестве дополнительных учебных материалов.

Роберт Лав

Программирование, программы, базы данных / Программирование / Книги по IT