Языки сценариев. Часть 2 Доклад на семинаре по специальности Студент гр. 4057/2 Вячеслав Присивко 22 ноября 2011.

Презентация:



Advertisements
Похожие презентации
WEB- ТЕХНОЛОГИИ Лекция 1. WEB- ПРИЛОЖЕНИЯ 1 Особый тип программ, построенных по архитектуре « клиент - сервер » Основа получение запросов от пользователя.
Advertisements

Microsoft TechDays Александр Неволин Nevlabs кандидат технических наук.
Веб-решение или Толстый клиент? Сравнение, тенденции, архитектура Иван Бодягин MAS Elektronik AG.
Троицкий Д.И. Интернет-технологии1 ДИНАМИЧЕСКИЕ WEB-СТРАНИЦЫ СЕРВЕРНЫЕ СЦЕНАРИИ Лекция 9 Кафедра «Автоматизированные станочные системы» Dept. of Automated.
Лекция 2. Тема « Новые технологии и тенденции развития Интернет »
Учебный курс Объектно-ориентированный анализ и программирование Лекция 4 Трансформация логической модели в программный код Лекции читает кандидат технических.
Платформа разработки ASP.NET Гайдар Магдануров t: e: m: +7.
Специальность «Программное обеспечение вычислительной техники и автоматизированных систем» Ижевск 2009 Мамаев Михаил Владимирович Платформа для.
AJAX Asynchronous Javascript and XML. Для чего нужен AJAX Недостаточная функциональность HTTP и HTML Не интерактивен Нет частичных обновлений Альтернативы.
Web-узлы. Разработка и администрирование.. Часть 1. Web-технология.
Учебный семинар по ASP.NET Нижегородское сообщество.NET разработчиков Нижегородское сообщество.NET разработчиков Лаборатория информационных технологий.
Обнаружение уязвимостей в web- приложениях, написанных на Python, средствами динамического анализа исходных кодов Заливин Д.А. Козлов Д.Д. Петухов А.А.
Где хранить данные в web- приложении page –JSP страница request – HTTP запрос session – сессия пользователя application – веб-приложение Static Java class.
Проф. В.К.Толстых, Применение ASP.NET AJAX Extensions Asynchronous JavaScript And XML (Асинхронный JavaScript и XML) Основано на существующих.
Разработка информационной системы управления документацией (Wiki-системы) программный проект по курсу «Базы данных» Скворцов А.Н. гр. 4081/4 Рытенков А.С.
Saint Petersburg, 2012 Java Lecture 12 JSTL. JSP -> JSTL JSP – хорошо Что делать если хотим добавить условие? Итерирование по списку и вывод каждого элемента.
Разработка web- приложений и ASP.NET. Web-приложения и web- серверы Web-приложение это набор взаимосвязанных файлов (*.htm, *.asp, *,aspx, файлов изображений.
Java Server Pages (JSP). JSP Позволяет веб разработчикам динамически генерировать HTML, XML - и другие веб страницы. Страницы компилируются JSP- компилятором.
Симпозиум 2008 Сергей Шутов, ДИМАС Борис Егоров, Интерсистемс Практика использования Zen и Прототип-6.
Программирование на стороне сервера.
Транксрипт:

Языки сценариев. Часть 2 Доклад на семинаре по специальности Студент гр. 4057/2 Вячеслав Присивко 22 ноября 2011

Содержание 1.Введение o Взаимодействие сервера и клиента o Обработка запроса на стороне сервера 2.Обзор языков веб-разработки 3.Клиентская часть JavaScript 4.Серверная часть o PHP o ASP.NET o JSP o Python (Django) o Ruby (Ruby on Rails) 5.Заключение 2

Взаимодействие клиента и сервера 3

Обработка запроса на стороне сервера Процесс работы веб-приложения на стороне сервера: 1.Получение клиентского запроса 2.Обработка запроса o Исполнение серверного кода веб-приложения веб- сервером o Обращение к серверам баз данных (БД) o Обращение к веб-сервисам 3.Генерация ответа o HTML o Ресурсы (изображения, …) o Браузерные скрипты 4.Выдача ответа клиенту 4

Обзор языков веб-разработки Серверные Исполняются на сервере Клиент получает только результат Необязательно скриптовые Языки o PHP o ASP.NET o JSP o Python (Django) o Ruby (Ruby on Rails) o … Клиентские Исполняются браузером Обычно без взаимодействия с сервером Языки o JavaScript o Остальные браузеро- специфичны 5

Язык JavaScript Создан в 1995 г. Б. Айхом (на фото справа) для Netscape Отсутствие работы с памятью Интерпретируемый Динамический Объектно-ориентированный, основанный на прототипах Частично функциональный Объекты с возможностью интроспекции Автоматическое приведение типов Отсутствуют o Стандартная библиотека o Модульная система o Система управления пакетами 6

JavaScript в веб-разработке Де-факто единственный скриптовый браузерный язык Используемые интерфейсы программирования (API) предоставляются браузером o Объектная модель браузера (BOM) o Объектная модель документа (DOM) API не стандартизирован и различается в разных браузерах Много библиотек, решающих проблему различия в API o jQuery o Prototype o … AJAX отсылка фоновых запросов к серверу для обновления контента без перезагрузки страницы Трудности при разработке 7

Пример кода на JavaScript (1) function Rectangle(x, y, width, height) { this.x = x; this.y = y; this.width = width; this.height = height; this.intersectsWith = function (rectangle) { var xProjection = new Segment(x, x + width); var yProjection = new Segment(y, y + height); var otherXProjection = new Segment(rectangle.x, rectangle.x + rectangle.width); var otherYProjection = new Segment(rectangle.y, rectangle.y + rectangle.height); return xProjection.intersectsWith(otherXProjection) && yProjection.intersectsWith(otherYProjection); }; } var rectangle1 = new Rectangle(0, 0, 10, 20); var rectangle2 = new Rectangle(5, 5, 20, 10); rectangle2.area = rectangle2.width * rectangle2.height; if (rectangle1.intersectsWith(rectangle2)) alert('Intersect'); 8

Пример кода на JavaScript (2)... $(document).ready(function () { // Is invoked after the page load $("p.sampleClassName").click(function () { $("div#someId").fadeOut(); }); 9

Серверная часть веб-приложений Клиент не видит серверный код Разделение частей веб-приложения o Статический контент страниц o Элементы пользовательского управления o Ресурсы o Код генерации динамического контента o Работа с базами данных o Оформление, дизайн Упрощение реализации типичных элементов веб- приложений Параллелизация работы на стороне сервера 10

PHP PHP: PHP Hypertext Preprocessor Интерпретируемый Динамическая типизация Объектно-ориентированные возможности Синтаксис o Похож на синтаксис Perl o Обращение к переменным через $имя_переменной o Суперглобальные массивы Интерпретируется в байт-код, который можно кешировать Механизм расширений 11

История PHP (1) В 1994 г. Р. Лендорфом создал набор скриптов на Perl/CGI для обработки HTML-документов Personal Home Page Скоро Perl перестало хватать, и был создан новый интерпретатор шаблонов PHP/FI (Personal Home Page / Forms Interpreter) PHP/FI имел базовую функциональность в стиле Perl o $имя_переменной для вывода значения o Автоматическая обработка форм o Встраиваемость в HTML-текст o … PHP/FI имел более простой и ограниченный синтаксис, чем Perl В 1997 г. Э. Гутманс и З. Сураски переписали код интерпретатора и назвали его PHP 3.0, объявив его преемником PHP/FI 12

История PHP (2) PHP 3.0 был официально выпущен в 1998 г. o Возможность расширения ядра дополнительными модулями К концу 1998 г. PHP использовался сотнями тысяч сайтов В 1999 г. был представлен новый движок Zend Engine В 2000 г. вышел PHP 4.0, основанный на Zend Engine o Улучшение производительности o Поддержка сессий o Буферизация вывода o Безопасные способы обработки ввода В 2004 г. был выпущен PHP 5 o Улучшение производительности o Поддержка XML o Переработка концепций ООП C 2006 г. PHP 6 находится в разработке 13

Веб-разработка на PHP Большое количество средств для веб-разработки o Автоматическое извлечение POST и GET-параметров и переменных окружения сервера в предопределенные массивы o Взаимодействие с СУБД o Автоматическая отправка HTTP-заголовков o HTTP-авторизация o Работа с cookies и сессией o Работа с локальными и удаленными файлами и сокетами o Обработка файлов, загружаемых на сервер Можно программировать на PHP «из коробки», без использования сторонних библиотек и фреймворков 14

Популярность PHP Самый популярный язык веб-разработки 4 по популярности среди всех языков Facebook, Wikipedia, ВКонтакте… Drupal, Joomla, MediaWiki, phpBB, SMF, phpMyAdmin… Интерпретатор PHP установлен на большинстве хостингов Большое количество фреймворков, в т.ч. реализующих MVC o CakePHP o Yii o … 15

Недостатки PHP Несогласованный синтаксис функций Отсутствие обратной совместимости Отсутствие поддержки многобайтовых кодировок и юникода Отсутствие встроенной многопоточности 16

Пример кода PHP (Mediawiki) // Log the request if ( $wgAPIRequestLog ) { $items = array( wfTimestamp( TS_MW ), $endtime - $starttime, $wgRequest->getIP(), $_SERVER['HTTP_USER_AGENT'] ); $items[] = $wgRequest->wasPosted() ? 'POST' : 'GET'; $module = $processor->getModule(); if ( $module->mustBePosted() ) { $items[] = "action=". $wgRequest->getVal( 'action' ); } else { $items[] = wfArrayToCGI( $wgRequest->getValues() ); } wfErrorLog( implode( ',', $items ). "\n", $wgAPIRequestLog ); wfDebug( "Logged API request to $wgAPIRequestLog\n" ); } 17

Сравнение компилируемых и скриптовых языков для веба Компилируемые языки При первом обращении код компилируется в бинарный или байт-код, а после только исполняется Оптимизация разных участков кода (циклов, условий) Можно выявить ошибки на этапе компиляции Скриптовые языки Не требуется время на компиляцию проекта Небольшие проекты проще писать Меньше время развертывания JIT-компиляция 18

История ASP.NET В 1997 г. Microsoft начала работу над ASP.NET для решения проблем ASP o Разделение оформления и контента, чтобы писать более «чистый» код В 2000 г. была анонсирована ASP+, раняя версия ASP.NET В 2002 г. ASP.NET была выпущена как часть.NET Последняя версия ASP.NET 4.0, она выпущена в 2010 г. 19

ASP.NET Часть Microsoft.NET Можно писать на любом языке, поддерживаемом CLR (C#, VB.NET, F#…) Веб-приложение o Веб-страницы (ASP.NET Web Page) Статический HTML Веб-элементы управления (на серверной стороне из них генерируется соответствующий HTML и браузерные скрипты) Динамический код Хорошая интеграция с MSSQL Объектно-ориентированная парадигма Разработка средствами Visual Studio, ReSharper… 20

Недостатки ASP.NET Работает только на веб-сервере Microsoft IIS Разработка возможна практически только в Microsoft Visual Studio Понятие состояния приложения необходимо реализовать самостоятельно Высокая начальная стоимость инструментов Большой размер сгенерированного HTML кода Отсутствие полной интеграции с JavaScript и AJAX Плохая интеграция с СУБД не от Microsoft Сложно реализовать нестандартную функциональность 21

Пример кода ASP.NET protected void Page_Load(object sender, EventArgs e) { // Assign the datetime to label control lbl1.Text = DateTime.Now.ToLongTimeString(); } mobile service The current time is: 22

Java Классы, генерирующие веб-контент o Cервлет o Портлет Код классов исполняется JVM Кроссплатформенность Исполняется на множестве веб-серверов Фреймворки o Apache Struts o Spring 23

JSP Технология Oracle для Java Создана как конкурент ASP.NET и PHP Текстовый документ *.jsp o Статическое содержимое o JSP элементы o Динамический код JSP компилируется в код Java-сервлета комплятором Jasper Полученный Java-сервлет исполняется JVM Разделение содержимого как в PHP и ASP.NET 24

Python Web Server Gateway Interface (WSGI) Широко распространен в веб-разработке, через фреймворки o Django o Pylons o TurboGears o … 25

Django Создан в 2005 г. в Lawrence Journal-world Видоизмененный MVC Model-Template-View (MTV) Объектно-реляционное отображение (ORM) БД Встроенная админка Аутентификация Создан специально для быстрого написания веб- приложений с динамическим контентом Недостатки o Специфический язык шаблонов o Не очень удобная работа с AJAX o Неудобства при замене компонентов 26

Пример кода на Django {% if error_message %} {{ error_message }} {% endif %} {% csrf_token %} {% for choice in poll.choice_set.all %} {{ choice.choice }} {% endfor %} from... #... def vote(request, poll_id): p = get_object_or_404(Poll, pk=poll_id) try: selected_choice = p.choice_set.get(pk=request.POST['choice']) except (KeyError, Choice.DoesNotExist): # Redisplay the poll voting form. return render_to_response('polls/detail.html', { 'poll': p, 'error_message': "You didn't select a choice.", }, context_instance=RequestContext(request)) else: selected_choice.votes += 1 selected_choice.save() return HttpResponseRedirect(reverse('polls.views.results', args=(p.id,))) 27

Ruby (Ruby on Rails) Rack объект, обеспечивающий интерфейс между веб-сервером и веб-приложением на Ruby Ruby on Rails единственный популярный фреймворк для Ruby Выпущен в 2004 г. Д. Ханссоном MVC Поставляется вместе с библиотекой JavaScript Prototype и библиотекой AJAX Script.aculo.us Популярность o BaseCamp o GitHub o Twitter 28

Пример кода на Ruby on Rails class ApplicationController < ActionController::Base before_filter :authorize protect_from_forgery private def current_cart Cart.find(session[:cart_id]) rescue ActiveRecord::RecordNotFound cart = Cart.create session[:cart_id] = cart.id cart end protected def authorize unless User.find_by_id(session[:user_id]) redirect_to login_url, :notice => "Please log in" end 29

Заключение Две части: клиентская и серверная Уменьшение доли старых языков (PHP, Perl) Увеличение доли веб-приложений на рынке ПО o Улучшение качества веб-приложений o Повышение квалификации веб-программистов Увеличение методологий веб-разработки o Объектно-ориентированный подход o Функциональное программирование o Предметно-ориентированное программирование (DSL) Веб-приложения будут включать в себя несколько технологий 30

Список литературы (1) JavaScript. Web application. TIOBE Programming Community Index for October /index.html /index.html Введение в JSP. Ruby on Rails. Ruby on Rails: Applications. Zittrain J. The Future of the Internet And How to Stop It. nternet.pdfhttp://futureoftheinternet.org/static/ZittrainTheFutureoftheI nternet.pdf 31

Список литературы (2) Красс А. Ruby on Rails. Ruby S., Thomas D., Hansson D. Agile Web Development with Rails. Holovaty A., Kaplan-Moss J. The Django Book. jangobook-1-0.pdfhttp://driveactivated.com/files/ftpupload/djangobook/d jangobook-1-0.pdf Django Documentation. Weinberg A. What is The Future of Web Development. development/what-is-the-future-of-web-development/ development/what-is-the-future-of-web-development/ 32