Авторизация



Напомнить пароль
Регистрация

Блог им. kreshВыдержки из курса Продвинутые Веб Технологии (часть 3)

продолжение тем веб архитектур

Уровень представления

Роль уровня представления в веб архитектуре:
В веб приложениях, средний уровень это наиболее сложный программный компонент
Включающий следующие функции:
  • Получать запросы и посылать ответы
  • Создавать пользовательские интерфейсы
  • Воплощать бизнес логику и взаимодействие с уровнем данных
Цели уровня представления:
  • Функциональное разделение — функции разработанные отдельными программистами должны быть воплощены отдельно
  • Ремонтопригодность — изменения требований или програмные ошибки должны затрагивать только один програмный модуль каждый раз
  • Повтороное использования кода — ПО должно быть собрано из компонентов которые можно использовать повторно. Это подразумевает что межкомпонетные зависимости должны быть минимизированы
Логика представления может быть разделена по разному между уровнем презентаций и клиентом:
  • Уровень представления генерирует HTML который отрисован клиентским браузером
  • Уровень представления генерирует HTML + CSS который отрисован клиентским браузером
  • Уровень представления генерирует XML. Клиент использует XSL для создания HTML + CSS который будет отрисован браузером.

Пример кода:

<%@page language="java" %> 
<%@ page import= "java.sql.*" %> 
<% // DATABASE CONNECTION Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 
Connection conn = DriverManager.getConnection("jdbc:odbc:acer",  "aceruser", "acerpwd"); 
 // QUERY PREPARATION AND EXECUTION 
Statement stmt = conn.createStatement(); 
ResultSet result = stmt.executeQuery( 
"SELECT NAME FROM NEWSCATEGORY ORDER BY NAME");
%> 
<!-- CONTENT PRODUCTION --> 
<html> 
<head> 
<title>News Categories Page</title> 
</head> 
<body> 
<table> 
<% while (result.next()) { %> 
<tr> 
<td><a href=“dett.jsp?par=<%= result.getString("NAME")%>”> 
<%= result.getString("NAME")%> </a> </td> 
</tr> 
<% } %> 
</table> 
</body> 
</html> 
<!-- TEMPORARY OBJECTS DISPOSAL --> 
<% 
result.close(); 
stmt.close(); 
conn.close(); 
%> 

Заметки:
1) Програмирование функциональных особенностей уровня представления в значении шаблонов страниц и серверных скриптов соединяет вместе:
  • Логику представления: HTML теги
  • Логику доступа к данным: SQL запросы
  • Контрольную логику: формы и навигационные якоря
  • Бизнес-логику (если существует): например преобразование форматов данных, извлекаемых из базы данных
2) Приложения, разрабатываемые в соответствии с этой парадигмой сложны в обслуживании и не масштабируемы.

Фреймоворк представления

Фреймоворк представления это ПО архитектура определяющая организацию компонентов уровня представления
Он предлагает:
  • Создание разделов в программных компонентах для того, чтобы улучшить ремонтопригодность
  • Библиотеки, реализующих вспомогательные функции, которые расширяют функциональные возможности веб сервера и скриптовый языков
Фреймворк основана на одном или нескольких шаблонов дизайна.
Примеры: Jakarta Struts, Velocity, Turbine, Microsoft .NET

Model View Controller


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

Компоненты MVC:
Клиент: посылает запросы и отображает обновление интерфейсов с содержанием ответов
Контроллер: получает запросы и решает, какой компонент должен быть использован для вычисления ответа.
Модель: представляет внутреннее состояние приложения и предлагает функциональные особенности, направленные на обработку запросов и обновление состояния приложения.
Вид: отображает внутреннее состояние приложения как пользовательский интерфейс, который может быть использован клиентом.

Ограничения:
  • Иерархическая организация ПО компонентов: клиент ➙ модель ➙ контроллер ➙ вид
  • Клиенты знают только контроллер
  • Модель не знает клиент, и не имет дело с презентации (т.е. не может измененить GUI)
  • Вид не знает бизнес-логику, которая обновляет состояния приложения. Вид только имеет дело только с презентацией (т.е. не может вызовать модель функции)
Оценка:
Преимущества:
[+] Одно и то же приложение может предоставить несколько видов для различных клиентов
[+] Возможно изменить бизнес логику без влияния на представление (вид), предполагая, что представление состояние остается без изменений.
[+] Воможно изменить логику управления (что отвечает на конкретный запрос) обновляя только контроллера.
Недостатки:
[-] Запрос жизненного цикла, как правило, дольше, в связи с обработкой выполняемой контроллером.
[-] Не возможно выполнить некоторые местные оптимизации, например частичное превычисление касающееся только части интерфейса

В своем классическом варианте, MVC предполагает возможность отслеживать состояние
приложения в модели, а так же возможность для обновления пользовательского интерфейса, когда происходят изменения в модели.
С другой стороны, протокол HTTP
  • Не имеет состояния(stateless)
  • Не позволяет автоматически обновлять страницу в браузере
MVC должна быть адаптирована к трехуровневой веб архитектуре, это ведет нас ко второй модели — MVC2

MVC2


MVC компоненты реализованы с использованием веб архитектуры и Java J2EE API
  • Клиент — браузер, запрашивает и отвечает по HTTP
  • Контроллер сервлет, который обрабатывает все запросы
  • Модель — набор классов Java (действие и состояние объектов)
  • Вид — шаблон JSP
  • 0
  • kresh
  • 23 июня 2011, 23:04

Комментарии (0)

rss свернуть / развернуть
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.