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

Рис. 31

Типовая структура Веб-приложения

Слой представления обычно включает компоненты UI и логики представления; бизнес-слой – компоненты бизнес-логики, бизнес-процесса и бизнес-сущностей, а также иногда фасад; слой доступа к данным – компоненты доступа к данным и агенты сервисов. Более подробно многослойный дизайн рассматривается в главе 5, «Рекомендации по проектированию многослойных приложений». Компонентам, используемым в каждом слое, посвящена глава 10, «Рекомендации по проектированию компонентов».

Общие принципы проектирования

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

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

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

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

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

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

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

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

Не передавайте конфиденциальные данные по сети в виде открытого текста. Если требуется передавать по сети конфиденциальные данные, такие как пароль или cookie аутентификации, используйте для этого шифрование и подписи данных либо шифрование с использованием протокола Secure Sockets Layer (SSL).

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

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