Книга: Программирование мобильных устройств на платформе .NET Compact Framework
Работайте на самом высоком уровне абстракции, который соответствует вашим потребностям
Работайте на самом высоком уровне абстракции, который соответствует вашим потребностям
Как и в случае кода для настольных компьютеров и серверов, целесообразно работать на самом высоком из допустимых уровней абстракции.
Например, если в процессе работы с Internet-протоколами у вас есть возможность работать на уровне Web-служб, используя запросы/ответы SOAP, то именно так вам и следует поступить; встроенные абстракции позволят вам сэкономить массу времени, превращая ваши Web-запросы в простые вызовы методов. Если для повышения производительности приложения или в интересах его пользовательской адаптации вам необходимо спуститься вниз на один уровень, то запросы и ответы HTTP или HTTPS обеспечат вам довольно высокий уровень абстракции и, как правило, дружественность по отношению к брандмауэрам. Если окажется, что запросы/ответы HTTP не в состоянии удовлетворить ваши потребности, у вас есть возможность использовать средства коммуникации на уровне сокетов и создаваемые поверх сокетов потоки.
Работа на уровне абстракции сокетов усложняет код, поскольку для взаимодействия с серверами вам придется спроектировать собственные коммуникационные протоколы, а не использовать простые и надежно тестированные механизмы запросов/ответов HTTP. Если ваше приложение должно связываться с сервером, который требует взаимодействия на уровне сокетов, то рекомендуется рассмотреть возможность создания прокси-компонента на стороне сервера, который взаимодействовал бы с интерфейсом сокета и, в свою очередь, предоставлял вашему приложению интерфейс HTTP или Web-служб. Поскольку взаимодействие сервера с сервером обычно характеризуется более высокой надежностью по сравнению с взаимодействием между устройством и сервером, то описанная мера позволяет значительно упростить код на стороне устройства и повысить надежность вашего мобильного приложения.
Работать на коммуникационных уровнях ниже уровня сокетов, а также непосредственно использовать стек протоколов TCP/IP имеет смысл лишь в крайних случаях. Если вашему приложению необходимо организовать информационный обмен на этом уровне, то для работы с протоколами вам, вероятнее всего, придется написать большой объем собственного кода на языке С. Дополнительная сложность кода и необходимость его тщательного тестирования почти никогда не стоят того выигрыша, который от этого получит приложение. Высокоуровневые протоколы надежно тестируются, и для того чтобы обеспечить ту же степень надежности при использовании собственных коммуникационных протоколов, вам надо будет проделать невероятно большой объем работы. То же самое справедливо и в отношении протоколов, отличных от протокола TCP/IP; возможно, протокол TCP/IP и не является самым идеальным коммуникационным механизмом для всех задач, но обеспечить своими силами тот же уровень тестирования и надежности кода, что и для этих стеков протоколов, очень трудно. Если только вы не намереваетесь предложить совершенно новый коммерческий протокол, проектирование и тестирование которого потребуют от вас огромных усилий, то нет никакого резона заново изобретать колесо, пытаясь получить идеальный протокол, который будет использоваться исключительно для ваших собственных нужд. Использовать 80% вполне пригодного "колеса", которое уже существует и прошло многолетнее тестирование, намного лучше, чем пытаться создать новое "колесо" самому. Прежде чем приниматься за изобретение нового коммуникационного протокола или переходить на использование более низкого уровня в стеке коммуникационных протоколов, вы должны удостовериться в том, что существующие высокоуровневые коммуникационные протоколы не в состоянии удовлетворить запросам вашего мобильного приложения.
- Не допускайте того, чтобы работа приложения всецело зависела от возможности подключения к сети
- Не допускайте того, чтобы поток пользовательского интерфейса блокировался на длительное время
- Работайте на самом высоком уровне абстракции, который соответствует вашим потребностям
- Всегда исходите из того, что связь может быть нарушена в любой момент
- Имитация сбоев связи с целью тестирования отказоустойчивости приложения
- Информируйте пользователя о ходе выполнения процесса синхронизации данных
- Исходите из того, что скорость передачи данных и длительность задержек могут меняться
- Внедряйте необходимые коммуникационные средства безопасности уже на ранних стадиях проектирования приложения
- Нужно повторно использовать текст, который я уже набирал ранее. Как его скопировать?
- Вот уже в который раз при работе в сети появляется сообщение от других пользователей. Что это может быть?
- Мне требуется информация с сайта, который я посещал позавчера, но я не помню его адрес. Есть ли способ его узнать?
- Как самому собрать компьютер?
- Возле часов постоянно отображается значок Безопасное извлечение устройства, который предлагает отключить жесткий диск и ...
- В Интернете можно найти большое количество игр, баннеров и меню, сделанных во Flash. Можно ли самому создать подобную ан...
- Обработка данных на промежуточном уровне
- Как просмотреть фильм другим проигрывателем, не тем, который установлен по умолчанию?
- Глава 2 Первый уровень трехуровневой концепции мерчандайзинга. Внешний вид магазина и территория вокруг него
- Как найти исполнителя, который бесплатно настроит вам контекстную рекламу
- Контакты для связи на самом видном месте
- Объявление переменной на внутреннем уровне