Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ООП / ООП / ры_приложений_полная_книга.pdf
Скачиваний:
500
Добавлен:
18.02.2017
Размер:
7.08 Mб
Скачать

Валидация

Аутентификация и авторизация

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

Проектируйте аутентификацию и авторизацию как для сценариев с постоянным подключением, так и для сценариев без постоянного подключения; включая синхронизацию по беспроводному соединению, синхронизацию при подключении к компьютеру, обнаружение по Bluetooth, синхронизацию по Виртуальной частной сети (Virtual Private Network, VPN) и локальную синхронизацию карты памяти SD.

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

Не делайте предположений о том, что механизмы безопасности, доступные на настольных платформах, будут доступны и на мобильной платформе, даже если используете одни и те же инструменты. Например, в Windows Mobile нет списков управления доступом (ACL) и, следовательно, нет безопасности файлов на уровне операционной системы.

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

Кэширование

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

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

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

Правильно выберите месторасположение кэша. Он может располагаться в устройстве, в мобильном шлюзе или на сервере базы данных. Применяйте для кэширования не память устройства, а SQL Server Compact Edition, поскольку используемая приложением память в ситуациях нехватки памяти может быть очищена.

Обеспечьте шифрование конфиденциальных данных при кэшировании, особенно при кэшировании данных на съемных носителях.

Более подробно проектирование стратегии кэширования рассматривается в главе 17, «Сквозная функциональность».

Сетевое взаимодействие

Взаимодействие устройств с компьютером может осуществляться с использованием беспроводной («по воздуху») и проводной связи, и также более специализированных видов связи, таких как Bluetooth или Infrared Data Association (IrDA). При беспроводном взаимодействии предусмотрите меры безопасности для защиты конфиденциальных данных от хищения, повреждения или подделки. При взаимодействии через интерфейсы Веб-сервисов используйте для защиты данных такие механизмы, как стандарты WS-Secure. Не забывайте, что связь с беспроводным устройством является намного менее устойчивой, чем при подключении к компьютеру, и что мобильному приложению, возможно, придется длительное время работать без подключения. При проектировании стратегии связи руководствуйтесь следующими рекомендациями:

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

используемое подключение и в случае необходимости выключать связь для сохранения заряда батареи.

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

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

Если требуется использовать данные из многих источников, взаимодействовать с другими приложениями или работать без подключения, применяйте Веб-сервисы. Обеспечьте эффективное управление подключениями, особенно в условиях ограниченной полосы пропускания.

Если при взаимодействии с использованием WCF требуется реализовать очередь сообщений, используйте WCF-механизм передачи данных с промежуточным хранением.

Более подробно протоколы и методики связи рассматриваются в главе 18, «Взаимодействие и обмен сообщениями».

Управление конфигурацией

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

Правильно выберите формат конфигурационных данных. Отдавайте предпочтение бинарным форматам, а не XML, чтобы сократить объем занимаемой памяти. Снизить требования к памяти позволит также применение библиотечных процедур сжатия для хранения данных конфигурации и состояния. Шифруйте конфиденциальные данные, хранящиеся в конфигурационных файлах.

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

Если для хранения данных предприятия используется Microsoft SQL Server 2005 или 2008 и требуется обеспечить короткий цикл выхода на рынок, используйте репликацию слиянием, обеспечиваемую готовым приложением стороннего

производителя1. Репликация слиянием синхронизирует данные за одну операцию независимо от пропускной способности сети или размера данных.

Для инфраструктуры Active Directory используйте интерфейс System Center Mobile Device Manager (Диспетчер мобильных устройств), он обеспечит управление групповой конфигурацией, аутентификацией и авторизацией устройств. Требования Mobile Device Manager можно найти в разделе «Вопросы выбора технологий».

Доступ к данным

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

Используйте локальную базу данных устройства, которая обеспечивает сервисы синхронизации, такую как SQL Server Compact Edition. Создавайте собственный механизм синхронизации данных, только если стандартные функции синхронизации не отвечают поставленным требованиям.

Обеспечивайте целостность данных. Файлы, остающиеся открытыми при приостановке работы устройства и сбоях питания, могут обусловить нарушение целостности данных, особенно если данные хранятся на съемном устройстве хранения. Для обеспечения целостности данных в случаях, когда устройства остаются без электропитания или подключения, используйте транзакции в SQL Server Mobile.

Не делайте допущение о том, что съемное хранилище будет всегда доступным, поскольку пользователь может убрать его в любое время. Проводите проверку на наличие съемного хранилища перед записью в него или использованием FlushFileBuffers (Очистка буферов файлов).

При использовании XML для хранения или передачи данных принимайте во внимание его общий размер и влияние на производительность. Применение XML повышает требования к пропускной способности и размеру локального хранилища. Используйте алгоритмы сжатия или не-XML методы передачи.

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

1 Если в качестве хранилища на мобильном устройстве используется SQL Server Compact Edition, то такая синхронизации обеспечивается встроенными средствами (прим. научного редактора).

Соседние файлы в папке ООП