УДК 681.3.06

Сергеева Ю. В.

Национальный горный университет, Украина

Анализ и сравнительная характеристика современных фреймворков для разработки web-приложений

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

Для повышения эффективности работы программистов были созданы специальные системы создания web-приложений, так называемые web-фреймворки, которые позволяют разработчику сфокусироваться на основной логике приложения. Такие технологии, как PHP[2,15], Java[9], Microsoft.Net [10](создание приложений), MySQL[13], Oracle[14], Microsoft SQL Server[11] (серверы баз данных) и  разработанные на их основе фреймворки используются разработчиками по всему миру.

С технической точки зрения, web-каркас (web-framework) - это базовое web-приложение, которое контролирует выполнение модулей и закладывает общий стандарт кодирования. Логически система разделена на ядро, загрузчик ядра, библиотеку общих функций и хранилище конфигурации [1].

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

С точки зрения web-программирования, framework-система (CMF-система) это платформа позволяющая решать задачи, которые постоянно возникают при создании Интернет-приложений [8].

В современных фреймворках заложен базовый функционал и набор архитектурных стандартов,  которые система накладывает на web-приложения. Это снимает с разработчиков необходимость придумывать все с нуля и позволяет более эффективно использовать код повторно; CMF-системы обеспечивают инверсию управления (от англ. Inversion of Control, IoC) Инверсия управления переносит ответственность за выполнение действий с кода приложения на фреймворк.

 

Рассмотрим наиболее известные framework-системы.

ASP.NET — технология создания веб-приложений и веб-сервисов от компании Майкрософт. Она является составной частью платформы Microsoft.NET и развитием более старой технологии Microsoft ASP.  Корпорация Майкрософт выпустила несколько расширений для ASP.NET:

·        ASP.NET AJAX

·        ASP.NET MVC Framework

ASP.NET MVC Framework — фреймворк для создания веб-приложений, который реализует шаблон  проектирования Model-View-Controller (MVC). В апреле 2009 года, исходный код ASP.NET MVC был опубликован под лицензией Microsoft Public License (MS-PL) Проект ASP.NET MVC — это часть платформы ASP.NET. Разработка приложений ASP.NET MVC можно рассматривать как альтернативу разработке страниц web-форм ASP.NET, но не  как замену модели web-форм [12] .

Zend Framework (ZF)—является объектно-ориентированным фреймворком с открытым исходным кодом (лицензия New BSD), использует PHP5. Основывается на идеях MVC. Разрабатывается компанией Zend, являющейся разработчиком самого PHP. Помимо MVC-компонентов Zend Framework содержит множество библиотек, необходимых для построения приложения. Также есть компоненты для интеграции со сторонними сервисами.

CakePHP—это программный каркас для создания веб-приложений, написанный на языке PHP и построенный на принципах открытого ПО —лицензия MIT. Многие идеи и принципы CakePHP были заимствованы от Ruby on Rails. CakePHP отличается от других своих собратьев (Symfony, PHPonTrax) тем, что он полностью совместим как с PHP4 так и с PHP5.

Symfony—web-фреймворк написанный на PHP5, использует паттерн MVC. Данный фреймворк является свободным программным обеспечением, выпущен под лицензией MIT. Symfony является довольно простым фреймворком, который, тем не менее имеет большие возможности. Документация у данного фреймворка имеется только на английском языке. 

Ruby On Rails (RoR или Rails)[3,5], является фреймворком с открытым исходным кодом для c-приложений, написан на языке Ruby. Он предназначен для использования методологии Agile-программирования. Rails следует архитектуре MVC . Распространяется под лицензией MIT/Ruby. За последние насколько лет популярность данного фреймворка значительно возросла.

Apache Struts—фреймворк с открытым исходным кодом для создания JavaEE web-приложений. Основывается на Java Servlet API и расширяет его, в архитектурном плане. Этот фреймворк способствует разработке приложений с архитектурой, базирующейся на парадигме Model-View-Controller(MVC).

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

Tapestry—представляет собой объектно-ориентированный Java фреймворк для создания web-приложений реализующих модель MVC. В Tapestry web-приложение представляет из себя набор страниц, каждая из которых составлена из компонентов. Каждой странице соответствует Java класс, который представляет из себя POJO (англ. Plain Old Java Objects) класс, т.е. класс, который ничего не наследует и реализует минимальный интерфейс.  Данный фреймворк основан на компонентной технологии. Проект с довольно низким уровнем документированности. Распространяется под лицензией Apache.

Таблица 1. Сравнение основных характеристик framework-систем.

Критерий

ФРЕЙМВОРК

 

ASP.NET MVC

Zend

Cake

Symfony

ROR

Struts

Tapestry

Язык

ASP.NET

PHP

PHP

PHP

Ruby

JAVA

JAVA

Шаблон проектирования  MVC

ДА

ДА

ДА

ДА

ДА

ДА

частич-

но

Применение ORM

ORM-неза-висима

ДА

ДА

ДА

ДА

ДА

ДА

(Hiber-

nate)

Миграция БД



ДА

ДА

ДА

ДА





Механизмы интернационализации и локализации



ДА

ДА

ДА

ДА

ДА

ДА

Применение шаблонов при создании пользовательских интерфейсов

ДА

ДА

ДА



ДА

ДА

(Jakarta

Tiles)

ДА

Создание и проверка форм

ДА

ДА

ДА

ДА

ДА

ДА

(Jakarta

Validator)

ДА

Управление доступом на основе ролей

ДА

 

ДА

 

ДА



ДА

НЕТ

ДА

Использование AJAX

ДА

ДА

ДА



ДА

ДА

ДА

ЧПУ (Friendly URL)

ДА

ДА

ДА

ДА

ДА

НЕТ

НЕТ

Модульное тестирование (unit-testing)

ДА

ДА

ДА



ДА

ДА

НЕТ

Система кэширования

ДА

ДА

ДА

ДА

ДА

НЕТ

НЕТ

Охарактеризуем суть некоторых вышеперечисленных критериев.

В настоящее время большинство современных фреймворков используют шаблон проектирования Model-View-Controller или MVC (Модель-Вид-Контроллер). В [4] рассмотрены ключевые аспекты архитектуры корпоративных программных приложений.

Шаблон  MVC  разделяет бизнес-логику, представление и обработку действий пользователя на три части.

Пример классической модели архитектуры MVC (Model-View-Controller или Модель-Представление-Контроллер ) приведен на рис1.

Рис. 1. Классическая модель трехзвенной архитектуры MVC(модель-представление-контроллер)

Эта архитектура характеризуется тремя основными элементами:

1. Модель(Model)—ядро приложения. Модель ответственна за управление состоянием приложения.  Логика приложения в модели выполняет две важных задачи: возвращает информацию о состоянии приложения,  и изменяет состояние приложения.

2. Представление(View)—средство отображения информации, полученных данных о модели и ее состоянии.

3. Контроллер(Controller)—интерпретирует данные, введенные пользователем, и информирует модель и представление о необходимости соответствующей реакции.

Очевидное преимущество, при использовании концепции MVC — это чёткое разделение логики представления (интерфейса пользователя) и логики приложения.

В настоящее время становится популярным применение объектно-реляционного отображения (Object Relational Mapping -ORM) для реализации модели web-приложеиий. ORM в широком смысле - это правило или метод, связывающий объекты языка программирования с отношениями реляционной базы данных и трансформирующий операции над объектами в соответствующие операции над отношениями. В этом смысле в любом проекте, разработка которого ведется на объектно-ориентированном языке, а данные хранятся в реляционной СУБД, эта трансформация каким- либо образом уже осуществляется [1].

Механизмы интернационализации и локализации интерфесов web-приложения. Интернационализация—это создание и развитие содержания продукта, программы или документации, чтобы позволить лёгкую локализацию для целевых рынков, различающихся по культуре, региону или языку. Локаль—   набор параметров, включая набор символов, язык пользователя, страну, часовой пояс, а также другие предустановки, которые пользователь ожидает видеть в пользовательском интерфейсе. Локализация относится к адаптации содержания продукта, программы или документа к языковым соответствиям, культурным и другим требованиям определённого целевого рынка[16].

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

AJAX (от  англ. Asynchronous Javascript and XML «асинхронный JavaScript и XML») подход к построению интерактивных пользовательских интерфейсов web-приложений, заключающийся в «фоновом» обмене данными браузера с web-сервером. В результате, при обновлении данных, web-страница не перезагружается полностью, и web-приложения становятся более быстрыми и удобными. Таким образом, технология  AJAX служит для создания более гибких и интерактивных web-приложений. Данная технология может применяться разработчиками для создания web-приложений, более интеллектуально  взаимодействующих с человеком. [6] .

Ajax объединяет:

ЧПУ (англ.  Friendly URL) — web-адреса, удобные для восприятия человеком (а также системы и методы построения таких адресов). Обычно параметры запроса, например,  идентификатор нужной страницы, передаются посредством GET-запроса (то, что идёт в URL после вопросительного знака), в виде:

/news.php?topic=8&year=2010&month=9 — новости по теме 8 (здоровье) за сентябрь 2010.

Это вполне понятно и естественно для разработчиков и программ, но не совсем понятно и удобно для посетителей. Концепция ЧПУ предполагает максимально лаконичные и интуитивно понятные адреса, которые показывают естественную для человека логическую структуру данных на сервере, а не её программный интерфейс с модулями и параметрами. Структуру обычно представляют в виде иерархии как в обычной файловой системе, к которой привык пользователь.

Тот же самый пример, но с ЧПУ будут выглядеть уже так:

/news/health/2010/9/

Реализация ЧПУ может производиться несколькими способами.

Модульное тестирование или юнит-тестирование (англ. unit testing)

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

Процесс кэширования — это процесс сохранения результата ресурсоёмкого вычисления, для исключения повторной траты ресурсов на такое же действие в будущем. Кэширование в web-приложениях — это распространенный подход для увеличения быстродействия, при котором  копия объекта, который доставлялся пользователю, сохранялась  и использовалась для последующих запросов [1].

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

Список литературы

 

1.     Булгаков М.В., Носов В.П., Исследование и разработка методов построения и кэширования веб-приложений/ФГУ ГНИИ ИТТ «Информика».

2.     Джордж Шлосснейгл Профессиональное программирование на PHP. пер. с англ. –М.: «Вильямс», 2006.-624с.

3.     Томас Д., Хэнссон Д.Х. Гибкая разработка веб-приложений в среде Rails: Пер. с англ.: СПб Питер, 2008- 716с.

4.     Фаулер М. Архитектура корпоративных программных приложений. Пер с англ. М.: Вильяме, 2006.- 544с.

5.     Фернандес О., Путь Rails. Подробное руководство по созданию приложений в среде Ruby on Rails: Пер. с англ. СПб Символ-Плюс, 2008- 768с.

6.     Ajax и PHP разработка динамических веб-приложений/ Кристиан Дари, Богдан Бринзаре, Филип Черчез-Тоза, Михаил Бусика/ Спб.: Символ Плюс, 2006.-336 с.

  1. Ajax: Новый подход к веб-приложениям. - Режим доступа:   http://www.codenet.ru/webmast/js/ajax/AJAX-New.php
  2. Framework-системы- Режим доступа: http://wiki.agiledev.ru/doku.php?id=frameworks
  3. Java Server Faces.- Режим доступа:  http://java.sun.com/javaee/javaserverfaces/
  4. Microsoft ASP.NET. - Режим доступа:  http://www.asp.net/
  5. Microsoft SQL Server.- Режим доступа: http://www.microsoft.com/sqlserver/
  6. MSDN.- Режим доступа: http://msdn.microsoft.com/ru-ru/library/dd394709.aspx
  7. MySQL AB. Mysql.- Режим доступа: http://www.mysql.com/
  8. Oracle DB. -Режим доступа: http://www.oracle.com/database/
  9. PHP Group. Php..- Режим доступа:  http://www.php.net/
  10. W3C Internationalization. - Режим доступа:  http://www.w3.org/International/questions/qa-i18n.ru.php