E d p b 03miu.by/rus/kaf_kit/kaf_download/31925_200654820.pdf · Ramaze, Ruby on Rails, XForms 4...

Post on 17-Oct-2020

0 views 0 download

Transcript of E d p b 03miu.by/rus/kaf_kit/kaf_download/31925_200654820.pdf · Ramaze, Ruby on Rails, XForms 4...

А.Н.Лаврёнов, 2020 Cоздание веб приложений

17.04.2020

Лекция 03

по дисциплине

«Cоздание web-приложений »

Учитесь работать

эффективно и аккуратно

Тема 7 : Технология разработки web-приложений

ASP.Net MVC. Проектирование web-приложений

Тема 8 : Java разработка web-приложения

Докладчик: Лаврёнов Александр Николаевич

доцент кафедры информационных технологий,

кандидат физико-математических наук

Телефон рабочий: +375-17-291-21-01

Кабинет: 1-4

E-mail: lanin0777@list.ru

А.Н.Лаврёнов, 2020 Cоздание веб приложений

17.04.2020

2

Тема 7. Технология разработки web-приложений

ASP.Net MVC. Проектирование web-приложений

Понятие MVC шаблона. Разработка компонент

MVC.

Подходы к разработке web приложений.

Архитектура web-приложений. Рекомендации по

разработке архитектуры web-приложений.

А.Н.Лаврёнов, 2020 Cоздание веб приложений

Разработка веб-приложений

3

• Простой протокол передачи данных HTTP

• Простые стандарты описания интерфейса HTML/CSS

• Простой принцип работы «запрос-ответ»

• Абстракции для упрощения разработки:

– Простые – классические ASP, PHP

– Сложные – ASP.NET, JSP

– Гибкие – MVC

А.Н.Лаврёнов, 2020 Cоздание веб приложений

Паттерн Model-View-Controller

• Впервые описан в 1979 году– Trygve M. H. Reenskaug/MVC—XEROX PARC 1978-79

• Предназначен для отделения данных и логики

от интерфейса

• Реализаций огромное множество:ASP.NET MVC, Maverick.NET, Monorail, ProMesh.NET,

PureMVC, Mach-II, Model-Glue, FuseBox, Aranea, Cocoon,

Grails, GWT, Spring, Struts, Stripes, Tapestry, WebObjects,

Wicket, JSF, SproutCore, Wawemaker, Dojo, Catalyst,

CGI:Application, Solstice, Gantry, CakePHP, Joomla, Odin

Assemble, Prado, Solar, Zand Framework, Symfony, Django,

Pylons, Enthought, Zope, web2py, Camping, Merb, Nitro,

Ramaze, Ruby on Rails, XForms

4

А.Н.Лаврёнов, 2020 Cоздание веб приложений

Термин MVC

MVC – model-view-controller.

Модели, которые содержат или представляют данные,

с которыми работают пользователи.

Представления, которые используются для того, чтобы

обработать некоторые части модели в качестве

пользовательского интерфейса.

Контроллеры, которые обрабатывает входящие

запросы, выполняют операции для модели и выбирают

представления для показа пользователю.

5

А.Н.Лаврёнов, 2020 Cоздание веб приложений

Паттерн Model-View-Controller

6

• Model (модель) — модель данных

• View (представление) – интерфейс

• Controller (контроллер)— логика

Model

View Controller

А.Н.Лаврёнов, 2020 Cоздание веб приложений

Визуализация MVC паттерна

7

А.Н.Лаврёнов, 2020 Cоздание веб приложений

Почему MVC для веб-приложений?

8

• Внешний вид страниц часто изменяется

• Иногда нужно несколько вариантов представления одной и той же страницы

– Разные браузеры (IE, FireFox, Safari, Opera, ...)

– Разные платформы (PC, телефон, КПК, ...)

– Разные модели отображения (графические, текстовые, ...)

• Тестирование приложения без зависимости от интерфейса значительно проще

А.Н.Лаврёнов, 2020 Cоздание веб приложений

ASP.NET MVC Framework

9

• Набор компонентов для создания приложений, основанных на подходе MVC

• Статус MVC Framework - Release Candidate 2

– Поддержка Microsoft (включая jQuery)

– Исходный код открыт

• MVCContrib

– Проект сообщества по расширению возможностей MVC Framework

А.Н.Лаврёнов, 2020 Cоздание веб приложений

Запросы в MVC Framework

Браузер Сервер/Product/List/2

ProductController

(Controller)

Product

(Model) БД

Edit

(View)

/Product/Edit/3

List

(View)

10

А.Н.Лаврёнов, 2020 Cоздание веб приложений

ASP.NET MVC(Model2)

11

А.Н.Лаврёнов, 2020 Cоздание веб приложений

Жизненный цикл запроса

12

ЗапросТаблица

маршрутовКонтроллер

Действие контроллера

ПредставлениеОтвет

(разметка)

А.Н.Лаврёнов, 2020 Cоздание веб приложений

Проект MVC Framework

1

2

3

4

Таблица маршрутизации

Контроллер

Модель

Представление

13

А.Н.Лаврёнов, 2020 Cоздание веб приложений

ASP.NET: MVC и WebForms?

14

• ASP.NET – платформа, лежащая в

основе MVC фреймворка

• MVC и WebForms – два подхода к

созданию веб-приложений на

платформе ASP.NET

• Возможность выбора – это хорошо!

А.Н.Лаврёнов, 2020 Cоздание веб приложений

ASP.NET предоставляет инфраструктуру

15

• Модель провайдеров

• Механизмы кеширования

• Шаблоны страниц

• Состояние сеансов пользователей

• Обработчики страниц

• Управление клиентским кодом

• Управление данными

• Контекст запроса и ответа

• И другое...

А.Н.Лаврёнов, 2020 Cоздание веб приложений

Web Forms

16

• Хранение состояния между

обращениями на сервер

• Компонентная модель серверных

элементов управления

• События элементов управления

• Широкая поддержка графической и

декларативной разработки

• Расширяемость «за рамками» сложна

А.Н.Лаврёнов, 2020 Cоздание веб приложений

MVC Framework

17

• Разделение логики и представления

• Прозрачность обработки запроса

• Легковесные объекты

• Простое тестирование

• Отчуждаемые компоненты

• Широкие возможности по расширению

А.Н.Лаврёнов, 2020 Cоздание веб приложений

Преимущества MVC

• Архитектура

• Расширяемость

• Жесткий контроль над HTTP и

HTML

• Тестируемость

• Система маршрутизации

18

А.Н.Лаврёнов, 2020 Cоздание веб приложений

Сравнение с WebForms

WebForms:

1) ViewState и его размер, что

виляет на размер страницы

и скорость ее загрузки

2) Страница проживает весь

этап жизненного цикла

3) Логика UI тесно связана с

кодом и таким образом,

сложно отделима

4) можно производить unit-

тистирование, таким

образом сложно

использовать подход TDD

MVC:

1) Полный контроль на

генерируемым HTML

2) Чистый HTML и URL

3) Разделение UI и логики

4) Возможность тестирования

5) Модульность и

заменяемость компонентов

6) Нет ViewState

7) Простая интеграция с

современными JS

технологиями и

фреймворками

19

А.Н.Лаврёнов, 2020 Cоздание веб приложений

ASP.Net MVC Pipeline

20

А.Н.Лаврёнов, 2020 Cоздание веб приложений

Процесс разработки с MVC Framework

1. Структуры данных - Модель

2. Структура приложения -

Маршрутизация

3. Логика работы - Контроллеры

4. Интерфейс пользователя -

Представление

5. Автоматическое тестирование -

Счастье

21

Жизненный цикл ASP.NET

MVC

22

А.Н.Лаврёнов, 2020 Cоздание веб приложений

Процесс разработки обычного ПО

• Разработка ПО это творческий процесс,

который ведут к созданию инновационных

программных продуктов и систем.

• Процесс разработки ПО – это не единый

монолитный блок работ, который

– принимает на входе некоторые идеи о новом

приложении,

– в качестве результата выдает решение

(продукт), полностью соответствующее

данной идеи.

23

А.Н.Лаврёнов, 2020 Cоздание веб приложений

План разработки web-приложения

1. Сформулировать цель создания сайта.

2. Построить внешний вид сайта.

3. Определить целевую аудиторию.

4. Тщательно спланировать требования к

контенту.

5. Выбрать правильные инструменты для

работы.

Для динамического web-сайта

24

А.Н.Лаврёнов, 2020 Cоздание веб приложений

17.04.2020

25

А.Н.Лаврёнов, 2020 Cоздание веб приложений

17.04.2020

26

Тема 8. Java разработка web-приложения

Платформа Java. Спецификация Java Platform Enterprise

Edition (J2EE). Понятие Application Server. Обзор технологий

платформы J2EE.

Распределенные многоуровневые приложения. J2EE клиенты

(web-клиент, клиент приложения). Web компоненты (сервлеты,

страницы JSP). Корпоративные и\или бизнес компоненты. Роли в

разработке ПО.

Спецификация Servlet. Назначение. Назначение и принципы

применения. Спецификация JSP. Назначение. Основные

возможности. Модели web-приложений на основе технологий

сервлетов и JSP.

Обзор IDE средств для программирования на Java: среды

разработки IntelliJ IDEA, NetBeans, Eclipse. Сборщики Ant, Maven.

Технология JDBC. Состав и архитектура JDBC. Объектная

модель JDBC API. Применение JDBC API. Структура jdbc-

приложения

А.Н.Лаврёнов, 2020 Cоздание веб приложений

Платформа J2EE

27

J2EE - это не конкретный продукт, а набор

спецификаций, устанавливающих правила, которых

следует придерживаться поставщикам конкретной

реализации платформы J2EE, а также

разработчикам корпоративных приложений.

Цифра "2" в названии спецификации связана с тем, что

все технологии, охватываемые спецификациями

J2EE, базируются на инструментальном комплекте

поддержки разработок в среде Java - JDK (Java

Development Kit) версии 1.2 и старше.

А.Н.Лаврёнов, 2020 Cоздание веб приложений

Платформа J2EE

28

Java 2 Platform, Enterprise Edition (J2EE) определяет

стандарт для разработки многоуровневых

корпоративных приложений.

Java 2 Enterprise Edition - это комплекс

взаимодействующих Java-технологий, базирующихся

на спецификациях, разработанных фирмой Sun

Microsystems (http://java.sun.com/j2ee/),

представляющих стандарт разработки серверных

приложений уровня предприятия.

А.Н.Лаврёнов, 2020 Cоздание веб приложений

Платформа J2EE

29

Технологии J2EE ориентированы на разработку

серверной стороны приложения и облегчают, в

первую очередь, процесс эффективной реализации

среднего уровня (Middle tier), содержащего бизнес-

логику.

Стандарт Java EE расширяет платформу Java Standard

Edition (Java SE) добавляя поддержку веб-сервисов,

модели бизнес компонентов, API управления,

коммуникационных протоколов, распределенных и

веб-приложений. Веб-приложения являются лишь

частью того, что описывает Java EE.

А.Н.Лаврёнов, 2020 Cоздание веб приложений

Платформа J2EE

30

Стандартный Java EE сервер приложений должен

поддерживать такие технологии как EJB (сервер и

контейнер), JNDI, JMS (Java Message Service), JTA

(Java Transaction API), архитектуру J2EE Connector.

Java EE задает контейнеры для серверных

приложений, сервлетов, EJB компонентов.

Такие контейнеры предоставляют функциональность,

позволяющую устанавливать, сохранять и выполнять

поддерживаемые компоненты.

А.Н.Лаврёнов, 2020 Cоздание веб приложений

Платформа J2EE

31

Java EE также предоставляет стандартную архитектуру

для взаимодействия Java EE приложений и серверов

приложений с гетерогенными корпоративными

информационными системами, такими как ERP-

системы, мейнфреймы, системы баз данных и т.д.

Архитектура Java EE Connector предоставляет

средства взаимодействия с корпоративными

системами используя стандартный интерфейс,

известный как адаптер ресурсов (Resource adapter).

А.Н.Лаврёнов, 2020 Cоздание веб приложений

Платформа J2EE

32

J2EE-сервер

EJB-контейнер

Web-контейнер

J2EE - cервисы,

адаптеры, ресурсы

Приложение 3

- EJB-модуль 1

- EJB-модуль 2

- Web-модуль 1Приложение 2

- EJB-модуль 1

- EJB-модуль 2

- Web-модуль 1

- Web-модуль 2

Приложение 1

- EJB-модуль 1

- EJB-модуль 2

- Web-модуль 1

Сервис:

Java Naming Directory (JNDI)

– универсальный сервис

хранения объектов

в иерархической структуре

имен (аналогично файловой

системе)

Ресурс:

DataSource

- объект, позволяющий

приложению

получить доступ к

соединению к БД

А.Н.Лаврёнов, 2020 Cоздание веб приложений

Платформа J2EE

33

Платформа J2EE использует модель многоуровневого

распределенного приложения.

Логически приложение разделено на компоненты в соответствии с

их функциональностью.

Различные компоненты, составляющие J2EE-приложение,

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

их уровня в многоуровневой среде J2EE, которой данный компонент

принадлежит.

• Компоненты клиентского уровня работают на клиентской

машине.

• Компоненты web-уровня работают на J2EE-сервере.

• Компоненты бизнес-уровня работают на J2EE-сервере.

• Программное обеспечение уровня корпоративной

информационной системы (EIS) работает на EIS-сервере.

А.Н.Лаврёнов, 2020 Cоздание веб приложений

Платформа J2EE

34

Приложение Java EE может состоять из нескольких

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

адаптеры ресурсов, клиентские модули J2EE.

Каждый из компонентов может иметь свой дескриптор

развертывания – XML файл, описывающий

компонент.

Для разворачивания Java EE компонентов применяется

файл в формате «Java архив» (JAR), который

расширяется несколькими дополнительными

форматами в зависимости от того или иного типа

компонента. Формат JAR основан на формате ZIP.

А.Н.Лаврёнов, 2020 Cоздание веб приложений

Платформа J2EE

35

JAR файл может содержать Java классы, XML файлы,

вспомогательные ресурсы, статические HTML файлы

и другие.

Стандартное Java веб-приложение разворачивается в

WAR (Web Application Archive) файле, который

является JAR файлом с расширением WAR.

Стандартное Java EE приложение разворачивается в

EAR (Enterprise Application Archive) файле, который

является JAR файлом с расширением EAR.

А.Н.Лаврёнов, 2020 Cоздание веб приложений

Платформа J2EE

36

WAR файл - это специализированный JAR файл,

содержащий такие компоненты веб-приложения как

сервлеты, JSP файлы, HTML файлы, дескрипторы

развертывания, библиотеки классов и тому

подобное.

WAR файл может быть развернут на веб-сервере,

таком как Tomcat.

А.Н.Лаврёнов, 2020 Cоздание веб приложений

Платформа J2EE

37

EAR файл – это специализированный JAR файл,

содержащий компоненты Java EE приложения, такие

как веб-приложения (WAR), EJB, адаптеры ресурсов

и так далее.

Файл EAR может быть развернут на сервере

приложений Java EE, таком как JBoss, WebLogic или

WebSphere.

Сервер приложений Java EE загружает EAR файлы в

процессе выполнения и устанавливает

обнаруженные в нем компоненты на основе

инструкций, описанных в дескрипторе развертывания

каждого компонента.

А.Н.Лаврёнов, 2020 Cоздание веб приложений

Понятие web-компонента

38

• Согласно спецификации J2EE web-компонентами являются– Сервлеты

– JSP-страницы

– Фильтры

– Слушатели событий

• Управление работой web-компонентов возлагается на web-контейнер (сервер web-приложений)

• Спецификация J2EE содержит основные понятия и сведения о технологиях, применяемых в рамках J2EE-платформы. Спецификация доступна по адресу:

http://www.oracle.com/technetwork/java/javaee/downloads/index.html

А.Н.Лаврёнов, 2020 Cоздание веб приложений

Что такое web-контейнер?

• Web-контейнер – это инструментальный программный модуль, который управляет сервлетами и JSP-страницами, который работаетв среде J2EE-сервера

J2EE Server

Web-броузер

Web Container

JSP Servlet

EJB Container

Enterprise

Bean

Enterprise

Bean

Другой

клиент

СУБД

39

А.Н.Лаврёнов, 2020 Cоздание веб приложений

Понятие web-контейнера

40

• Web-контейнер –стандартизованный

компонент, который занимается системной

поддержкой прикладных программных

компонентов и обеспечивает их жизненный

цикл в соответствии с правилами,

определенными в спецификациях

• Функции web-контейнера

– Управление жизненным циклом компонентов

– Управление безопасностью

– Управление конкурентным доступом

– Перенаправление запросов

А.Н.Лаврёнов, 2020 Cоздание веб приложений

Jakarta Tomcat 6.x, 7.х и 8.х

• входит в состав Sun Reference Implementation

• Линейка 6.x (version 6.0.43, 14.01.2014)– Спецификация Servlets – 2.5

– Спецификация JSP – 2.1

• Линейка 7.x (version 7.0.59, 02.04.2014)– Спецификация Servlets – 3.0

– Спецификация JSP – 2.2

• Линейка 8.х (version 8.0.32, 02.04. 2016)– Спецификация Servlets – 3.1

– Спецификация JSP – 2.3

41

А.Н.Лаврёнов, 2020 Cоздание веб приложений

Получение и установка Tomcat

• http://jakarta.apache.org

• Полностью написан на Java

• Доступен:– Binary Distributions

• zip

• tar.gz

• 32-bit Windows zip

• 64-bit Windows zip

• 64-bit Itanium Windows zip

• 32-bit/64-bit Windows Service Installer

– Full documentation:• tar.gz

42

А.Н.Лаврёнов, 2020 Cоздание веб приложений

Запуск/останов Tomcat

• JAVA_HOME=C:\jdk1.7

• /bin/startup.bat

• /bin/catalina.bat start

• /bin/shutdown.bat

43

А.Н.Лаврёнов, 2020 Cоздание веб приложений

Структура каталогов

44

А.Н.Лаврёнов, 2020 Cоздание веб приложений

Работа нескольких web-компонентов

в одном web-контейнере

45

Browser1

Browser2

Browser3

web-контейнер

8087

GET http://evm.kture:8087/web-comp1

Web-comp1

Web-comp2

Thread1

Thread3

Thread2

200 OK html

GET http://evm.kture:8087/web-comp2

200 OKhtml

GET http://evm.kture:8087/web-comp1

200 OKhtml

А.Н.Лаврёнов, 2020 Cоздание веб приложений

Сервлет

46

• Сервлет - это самостоятельный web-компонент, который, согласно спецификации J2EE, функционирует под управлением web-контейнера

• Сервлет в ответ на полученный от клиента HTTP-запрос динамически генерирует HTTP-ответ: HTML-страницу, XML-документ или другой документ, контент которого корректно отображается в стандартном браузере

• Спецификация технологии сервлетов находится по адресам: http://www.oracle.com/technetwork/java/index-jsp-135475.html

http://jcp.org/en/jsr/detail?id=315

– Последняя версия спецификации – 3.2

А.Н.Лаврёнов, 2020 Cоздание веб приложений

Структура web-приложения

47

Компоненты типичного Java EE приложения

А.Н.Лаврёнов, 2020 Cоздание веб приложений

Структура web-приложения

48

Традиционно, корпоративное Java EE приложение

определяется как набор следующих компонентов и

технологий:

• The Java Management Extensions (JMX) API

• Java API for XML Processing (JAXP)

• The Java API for XML-based RPC (JAX-

RPC)

• The Java Architecture for XML Binding

(JAXB)

• The SOAP with Attachments API for Java

(SAAJ)

• JavaServer Pages или JavaServer Faces

• Сервисы аутентификации и авторизации

(JAAS)

• JavaBeans Activation Framework (JAF)

• Java Database Connectivity (JDBC)

framework

• EAR файлы

• Java сервлеты

• Enterprise JavaBeans (EJB)

• Архитектура J2EE Connector

• JavaMail

• Java Message Service (JMS)

• Java Persistence API (JPA)

• Java Transaction API (JTA)

А.Н.Лаврёнов, 2020 Cоздание веб приложений

Структура web-приложения

49

В свою очередь, веб-приложение Java объединяет подмножество

компонентов и технологий корпоративного приложения, таких

как:

• WAR файлы

• Java сервлеты

• JavaServer Faces или JavaServer Pages

• Java Database Connectivity (JDBC) framework

Популярные фреймворки, такие как Apache Struts, Spring, Hibernate

и другие стирают традиционную грань между корпоративными

приложениями и веб-приложениями. Каждый фреймворк

предлагает свою точку зрения на то, как решить ту или иную

задачу. Каждый фреймворк пытается более эффективно

решить те или иные сложности, возможно используя набор

дополнительных технологий.