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

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

Используйте интегрированную аутентификацию Windows (Windows Integrated Authentication) или интегрированное решение аутентификации, если требуется обеспечить пользователям возможность доступа к множеству приложений по одному удостоверению или с использованием одних и тех же учетных данных. Если нет возможности использовать Windows Integrated Authentication, можно работать с внешним сервисом, предлагающим интегрированную поддержку аутентификации. Если нет возможности использовать внешний сервис, используйте систему на базе сертификатов или создавайте собственное решение для своей организации.

Учтите требования по валидации пользовательского ввода и вывода из таких источников, как интерфейсы сервисов и других приложений. Возможно, придется создать собственные механизмы проверки или использовать функции валидации применяемой технологии. Среда разработки Microsoft Visual Studio® Windows Forms включает элементы управления валидации. В качестве альтернативы можно использовать инфраструктуру валидации сторонних производителей, такую как

Enterprise Library Validation Application Block, которая обеспечивает возможности проверки в UI и бизнес-слое в полном объеме. Независимо от выбранного подхода следует всегда помнить, что валидация данных должна проводиться при любом пересечении ими границ доверия.

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

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

Вопросы обработки данных

Серверные приложения могут предоставлять данные приложения через Веб-сервис. Кэширование этих данных на клиенте позволит улучшить производительность и обеспечит возможность работы в автономном режиме. Также насыщенные клиентские приложения могут использовать локальные данные. Данные, используемые насыщенными клиентскими приложениями можно подразделить на две категории:

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

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

Кэширование данных

Насыщенные клиенты часто кэшируют локально все данные: и справочные данные только для чтения, и изменяющиеся. Кэширование может улучшить производительность приложения и обеспечить данные, необходимые для работы в автономном режиме. Для обеспечения кэширования насыщенные клиентские приложения должны реализовать некоторую инфраструктуру кэширования, которая может прозрачно реализовывать механизмы кэширования. Самыми распространенными типами кэширования являются:

Кратковременное кэширование данных. Данные хранятся не постоянно, поэтому приложение не может выполняться в автономном режиме.

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

Параллельная обработка данных

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

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

пока изменения, вносимые этим клиентом, не будут завершены и подтверждены. Такая схема также известна как пессимистическая блокировка в автономном режиме.

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

ADO.NET DataSet обеспечивает клиентам работу с данными в автономном режиме. DataSets может отслеживать локальные изменения данных, что упрощает синхронизацию данных с сервером и разрешение конфликтов данных. DataSets также может использоваться для объединения данных из разных источников.

Привязка данных

Механизмы привязки данных Windows Forms, WPF и Silverlight поддерживают двустороннюю привязку, что позволяет связывать структуру данных с компонентом UI, отображать текущие значения данных пользователю, обеспечивает возможность пользователю редактировать данные и затем автоматически обновлять их, используя введенные пользователем значения. Привязка данных может применяться для отображения пользователю данных только для чтения, позволяет пользователям обновлять данные в UI и просматривать сложные элементы связанных данных, обеспечивает представления типа мастер/детали и отображение данных из связанных таблиц, благодаря чему в UI могут отображаться понятные пользователю имена элементов данных, а не значения ключей строки данных.

Проектированию слоя доступа к данным посвящена глава 8, «Рекомендации по проектированию слоя доступа к данным». Более подробно проектирование компонентов слоя доступа к данным для насыщенных клиентских приложений рассматривается в главе 15, «Проектирование компонентов слоя доступа к данным».

Вопросы автономной работы/работы без постоянного подключения

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

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

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

При проектировании сценария без постоянного подключения возможны два подхода:

Ориентированный на данные. При использовании стратегии с ориентированием на данные для приложения локально на клиенте устанавливается система управления реляционной базой данных (relational database management system, RDBMS), и

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

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

Вопросы выбора технологий

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

имониторинга:

Выберите подходящую технологию разработки:

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

Используйте Windows Forms, если уже имеете опыт работы c Windows Forms, либо создаете LOB-приложения, которые не требуют насыщенной визуализации и должны выполняться с минимальными требованиями к оборудованию.

Используйте XBAP для приложений, которые будут загружаться с Веб-сервера и затем выполняться в браузере.

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

Ознакомьтесь с предложениями patterns & practices, которые могут быть полезны при проектировании и реализации приложения:

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