Нейросети и Интернет :: Публикации

Главная

   Новости

   Публикации

   Продукты

   О нас

   Задайте ваш вопрос

Публикации

   Нейросети и Интернет

   Zope & Midgard

Ссылки

   Личные сервисы

   Поисковые сервисы

   Скачать!

   Баги

   Демо IIGFS

   Разработка rPAS

 

<< Нейросети и Интернет | ^Публикации^ | 

Технологии разработки WEB-проектов с использованием серверов приложений.

  печать |  2002-05-03 14:47:46  | mcray

Midgard

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

Оглавление:

  1. Общие принципы
  2. Используемые инструментальные средства
  3. Пакет CGI-скриптов, обеспечивающих необходимую функциональность
  4. Сервер приложений Midgard
  5. Сервер приложений Zope
  6. Выводы

Ссылки по теме:

Общие принципы

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

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

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

Используемые инструментальные средства

В последее время, появился ряд инструментальных средств, ориентированных на поддержку разработки интернет-проектов при соблюдении вышеприведенных требований. Хотя среди их производителей можно упомянуть такие известные названия как Software AG и Oracle, производящие хорошо масштабируемые и интенсивно разрабатываемые продукты, необходимо отметить: для 90% российского рынка интернет-проектов использование настолько масштабных решений неоправдано, ибо влечет за собой существенные финансовые затраты без получения существенных преимуществ. Бесспорно, Oracle - более мощная база данных, чем MySQL. Но не менее бесспорно то, что для поддержки базы данных из сорока таблиц длиной не более нескольких тысяч записей MySQL более чем достаточен. При этом накладные расходы на использование MySQL (лицензирование, контракты с хостинг-провайдерами) существенно ниже.

На сегодняшний день, в зависимости от требований клиента можно предложить один из трех вариантов архитектуры интернет-ресурса, основанных на свободно-распространяемом ПО. Это CGI-скрипты и сервера приложений - Midgard и Zope

Пакет CGI-скриптов, обеспечивающих необходимую функциональность

В целях пояснения дальнейшего изложения преимуществ серверов приложений, опишем гипотетический универсальный модуль языка Perl, позволяющий создавать и поддерживать интернет-ресурс как тройку вида

<оформление, информационное наполнение, метод доступа> .

Информационное наполнение хранится в реляционной базе данных (как правило, MySQL), откуда извлекается по запросу и заполняет слоты темплейтов, формирующих концепцию оформления. Практически, модуль может представлять собой удачное объединение трех общеизвестных модулей: HTML::Template, CGI, MySQL, допускающее использование ряда взаимозаменямых модулей, реализующих стандартные концепции веб-интерфейсов.

Идея модуля следующая: разобрать http-запрос и выполнить соответствующие действия, разобрать темплейт, определить свободные слоты, запросить заполнение слотов из базы данных, заполнить слоты и отобразить веб-страницу. Реализация существенно сложнее этого краткого описания, но это вполне работоспособное решение, хорошо зарекомендовавшее себя во многих проектах.

Возвращаясь к взаимозаменяемым модулям отметим следующее: использование такого модуля в новом проекте сводится лишь к дизайну нового интерфейса, затраты на переработку самого модуля близки к нулю. Могут быть созданы такие модули как "Гостевая книга", "Доска объявлений", "Каталог услуг", "Корзина покупателя" и другие.

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

Сервер приложений Midgard

Технология PHP , используемая данным продуктом, имеет ряд неотъемлемых преимуществ, таких как высокая скорость обработки запросов и ориентированность на создание веб-приложений. Однако, из-за невозможности декомпозиции на дизайн и програмный код, PHP больше подходит для индивидуальных разработчиков разовых проектов, а не корпоративного применения. Несмотря на недостатки использования PHP в чистом виде, его использование в составе таких средств, как сервер приложений Midgard, может быть крайне эффективным. Midgard содержит встроенные средства управления информационным наполнением и динамической генерации страниц, что дает возможность легкой для пользователя поддержки крупных контент-проектов. Встроенный язык программирования - PHP - позволяет решать достаточно сложные задачи представления информации, причем оригинальная архитектура Midgard снимает большую часть присущих PHP проблем.

Midgard представляет интернет-ресурс как три древовидных пространства имен: Стиль (дизайн), Адресное пространство (оформление и размещение), Публикуемые материалы (информационное наполнение). В первых двух пространствах могут быть определены стилевые и страничные элементы, причем такой элемент вставляется в веб-страницу посредством синтаксиса вида "<[" + <ИМЯ_ЭЛЕМЕНТА> + "]>". Midgard предоставляет средства управления видимостью элементов, позволяя легко варьировать оформление страниц перекрытием имен. С другой стороны, любой элемент оформления пишется один и только один раз, что дает возможность быстрого изменения дизайна сайта переопределением элементов оформления.

Доступ к публикуемым материалам осуществляется посредством PHP-скриптов на страницах Адресного Пространства, формируя тем самым развитый аналог технологии, описанной выше для случая CGI-скриптов. Публикуемые материалы имеют строго фиксированную структуру (дерево каталогов типизированных статей в ранних версиях Midgard, к которым в более поздних версиях добавились прикреплениия к статьям и отношения между статьями), поэтому после достижения договоренности о размещении материалов, с точки зрения контент-менеджера поддержка интернет-ресурса созданного на базе Midgard укладывается в привычную абстракцию, сходную с размещением данных в дереве каталогов, а добавление или изменение материалов не представляет сложностей.

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

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

Сервер приложений Zope

Сегодня существует более продвинутое решение в области серверов приложений - Z Object Publishing Environment (ZOPE). Zope представлет собой мощную и чрезвычайно гибкую среду разработки и поддержки, которая содержит коннекторы к подавляющему большинству распространенных баз данных, средства автоматического контроля версий, мощную схему разделения доступа, возможность отчуждения и репликации любых фрагментов сайтов, встроенные средства поиска и индексирования содержимого и многое другое, что позволяет делать на его основе все. К сожалению, для российской действительности, практически неразрешимая для Zope проблема - размещение сервера у хостинг-провайдера.

Проведенный опрос московских провайдеров дал неутешительные результаты: в тот период, когда python уже входил в десятку первых проектов на www.sourceforge.net, являлся частью процедуры инсталляции RedHat и использовался при конфигурировании ядра Linux, на вопрос о возможности использование python подавляющее большинство провайдеров дало ответы типа: "наверное, вам нужна NT, а у нас Linux RedHat 6.1". Похоже, единственный вариант контракта c провайдером, допускающим возможность использования Zope - услуга co-location, что приемлимо лишь для достаточно крупных и дорогостоящих проектов.

Технически Zope представляет собой объектно-ориентированную среду, реализующую поверх Python все ту же базовую идею заполнения слотов темплейта данными, извлеченными по запросу пользователя. В качестве языка темплейтов используется DTML, которого в подавляющем большинстве случаев достаточно для извлечеия и отображения данных. В остальных случаях можно создавать массивные процедуры на Python и импортировать их в Zope . Как и в случае Midgard , проектирование интернет ресурса требует хорошей начальной проработки для определения списка используемых объектов и отношений наследования между ними: любое информационное наполнение в Zope представляется как объекты определенного типа, такие как "DTML-документ", "DTML-метод", "Рисунок", "Каталог" или типы, определяемые пользователем (скажем, для логотипов или баннеров отображаемых на страницах, можно определить типы "Logo" и "Banner"). Далее следует не менее сложная стадия программирования и определения пользовательских типов: но результат оправдывает затраченные усилия. Тип Logo, Banner, ZDiscuss (доска объвлений) - это готовые, легко тиражируемые решения, затраты на повторное использование которых близки к нулю.

Выводы

Изложив общие декларации, попробуем точно ответить на следующий вопрос: что дает использование такого подхода к разработке интернет-ресурсов?

Декомпозиция проекта на исполняемый код, дизайн и информационное наполнение - означает в первую очередь то, что ваша секретарша решив исправить название поля в элементе диалога с "От:" на "Отправитель:" не нарушит работоспособность интернет-ресурса, забыв поставить точку с запятой после оператора;

Возможность повторного использования - означает, что каждый последующий ресурс будет создаваться быстрее, качественнее и дешевле чем предыдущий, ибо многие его составляющие будут уже готовы;

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


Вложенные материалы

Приложение

2002-05-03 14:54:50

Примеры кода, иллюстрирующие три различных подхода к декомпозиции интернет-ресурса

Вход для пользователей

логин:

пароль:

ZOPE Powered by IIG FS Info Industries Group mosgird