Fusebox в помощь веб-программисту::Журнал СА 11.2003
www.samag.ru
     
Поиск   
              
 www.samag.ru    Web  0 товаров , сумма 0 руб.
E-mail
Пароль  
 Запомнить меня
Регистрация | Забыли пароль?
Журнал "Системный администратор"
Журнал «БИТ»
Подписка
Архив номеров
Где купить
Наука и технологии
Авторам
Рекламодателям
Контакты
   

  Опросы
  Статьи

Дата-центры  

Дата-центры: есть ли опасность утечки данных?

Российские компании уже несколько лет испытывают дефицит вычислительных мощностей. Рост числа проектов,

 Читать далее...

Событие  

В банке рассола ждет сисадмина с полей фрактал-кукумбер

Читайте впечатления о слете ДСА 2024, рассказанные волонтером и участником слета

 Читать далее...

Организация бесперебойной работы  

Бесперебойная работа ИТ-инфраструктуры в режиме 24/7 Как обеспечить ее в нынешних условиях?

Год назад ИТ-компания «Крок» провела исследование «Ключевые тренды сервисного рынка 2023». Результаты

 Читать далее...

Книжная полка  

Читайте и познавайте мир технологий!

Издательство «БХВ» продолжает радовать выпуском интересных и полезных, к тому же прекрасно

 Читать далее...

СУБД PostgreSQL  

СУБД Postgres Pro

Сертификация по новым требованиям ФСТЭК и роль администратора без доступа к данным

 Читать далее...

Критическая инфраструктура  

КИИ для оператора связи. Готовы ли компании к повышению уровня кибербезопасности?

Похоже, что провайдеры и операторы связи начали забывать о требованиях законодательства

 Читать далее...

Архитектура ПО  

Архитектурные метрики. Качество архитектуры и способность системы к эволюционированию

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

 Читать далее...

Как хорошо вы это знаете  

Что вам известно о разработках компании ARinteg?

Компания ARinteg (ООО «АРинтег») – системный интегратор на российском рынке ИБ –

 Читать далее...

Графические редакторы  

Рисование абстрактных гор в стиле Paper Cut

Векторный графический редактор Inkscape – яркий представитель той прослойки open source, с

 Читать далее...

День сисадмина  

Учите матчасть! Или как стать системным администратором

Лето – время не только отпусков, но и хорошая возможность определиться с профессией

 Читать далее...

День сисадмина  

Живой айтишник – это всегда движение. Остановка смерти подобна

Наши авторы рассказывают о своем опыте и дают советы начинающим системным администраторам.

 Читать далее...

Виртуализация  

Рынок решений для виртуализации

По данным «Обзора российского рынка инфраструктурного ПО и перспектив его развития», сделанного

 Читать далее...

Книжная полка  

Как стать креативным и востребованным

Издательский дом «Питер» предлагает новинки компьютерной литературы, а также книги по бизнесу

 Читать далее...

Книжная полка  

От создания сайтов до разработки и реализации API

В издательстве «БХВ» недавно вышли книги, которые будут интересны системным администраторам, создателям

 Читать далее...

1001 и 1 книга  
19.03.2018г.
Просмотров: 6225
Комментарии: 0
Машинное обучение с использованием библиотеки Н2О

 Читать далее...

12.03.2018г.
Просмотров: 6931
Комментарии: 0
Особенности киберпреступлений в России: инструменты нападения и защита информации

 Читать далее...

12.03.2018г.
Просмотров: 4213
Комментарии: 0
Глубокое обучение с точки зрения практика

 Читать далее...

12.03.2018г.
Просмотров: 3006
Комментарии: 0
Изучаем pandas

 Читать далее...

12.03.2018г.
Просмотров: 3806
Комментарии: 0
Программирование на языке Rust (Цветное издание)

 Читать далее...

19.12.2017г.
Просмотров: 3819
Комментарии: 0
Глубокое обучение

 Читать далее...

19.12.2017г.
Просмотров: 6315
Комментарии: 0
Анализ социальных медиа на Python

 Читать далее...

19.12.2017г.
Просмотров: 3168
Комментарии: 0
Основы блокчейна

 Читать далее...

19.12.2017г.
Просмотров: 3459
Комментарии: 0
Java 9. Полный обзор нововведений

 Читать далее...

16.02.2017г.
Просмотров: 7276
Комментарии: 0
Опоздавших не бывает, или книга о стеке

 Читать далее...

17.05.2016г.
Просмотров: 10645
Комментарии: 0
Теория вычислений для программистов

 Читать далее...

30.03.2015г.
Просмотров: 12364
Комментарии: 0
От математики к обобщенному программированию

 Читать далее...

18.02.2014г.
Просмотров: 13998
Комментарии: 0
Рецензия на книгу «Читаем Тьюринга»

 Читать далее...

13.02.2014г.
Просмотров: 9123
Комментарии: 0
Читайте, размышляйте, действуйте

 Читать далее...

12.02.2014г.
Просмотров: 7077
Комментарии: 0
Рисуем наши мысли

 Читать далее...

10.02.2014г.
Просмотров: 5387
Комментарии: 3
Страна в цифрах

 Читать далее...

18.12.2013г.
Просмотров: 4615
Комментарии: 0
Большие данные меняют нашу жизнь

 Читать далее...

18.12.2013г.
Просмотров: 3426
Комментарии: 0
Компьютерные технологии – корень зла для точки роста

 Читать далее...

04.12.2013г.
Просмотров: 3154
Комментарии: 0
Паутина в облаках

 Читать далее...

03.12.2013г.
Просмотров: 3399
Комментарии: 0
Рецензия на книгу «MongoDB в действии»

 Читать далее...

02.12.2013г.
Просмотров: 3024
Комментарии: 0
Не думай о минутах свысока

 Читать далее...

Друзья сайта  

 Fusebox в помощь веб-программисту

Архив номеров / 2003 / Выпуск №11 (12) / Fusebox в помощь веб-программисту

Рубрика: Веб /  Веб

Андрей Уваров, Дмитрий Горяинов

Fusebox в помощь веб-программисту

Любой действующий сайт нуждается в обновлении. От корпоративного «интернет-представительства» до частного фотоальбома. А значит перед любым разработчиком возникает проблема адаптации готовой или создания собственной системы управления сайтом.

Такие системы существуют в виде коммерческих и свободно распространяемых «движков», такие системы создаются и будут создаваться веб-разработчиками на самых различных языках программирования. Практически никогда такие системы не создаются «за раз». Их совершенствуют, дорабатывают, наделяют новыми возможностями.

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

Fusebox – это технология создания веб-приложений, начавшаяся с небольших модулей и развившаяся до применимости в средних и больших информационных системах. Изначально Fusebox создавалась для платформы Coldfusion. Сейчас существуют реализации для PHP, J2EE, MS ASP и Lasso. Т.е. для её применения вам скорее всего не придется усаживаться за изучение нового языка программирования.

Основные цели, преследуемые Fusebox:

  • Читаемость кода;
  • Структурность и законченность приложений (Applications);
  • Наглядность кода программ;
  • Упрощение проектного менеджмента;
  • Защищённость кодов и проекта в целом;
  • Утилизация кода;
  • Создание портативных «Partapplications».

Fusebox задумывалась как модульная технология создания веб-приложений. Пространство приложения определяется (задается) каталогом на веб-сервере.

Fusebox-приложение состоит из трех основных компонентов: оператор выбора (switch), обработчик события (fuseaction) и подключаемые модули (fuse).

Оператор выбора (switch) – это своеобразный менеджер задач – вся работа приложения ведется через него. Обращения к той или иной функции приложения (выбор) осуществляется в зависимости от переданного оператору значения параметра «fuseaction». Метод передачи параметра определяется Fusebox автоматически. Вы можете передать эту переменную методом POST или в строке запроса и быть уверенным, что ваша программа получит передаваемое значение.

Таким образом, внутри оператора выбора описываются возможные значения параметра «fuseaction» и обработка (fuseaction) этого значения приложением: запуск соответствующего кода или подключение нужного модуля (fuse). Модуль может быть выполнимым сценарием или просто набором страниц.

Теперь посмотрим все это на конкретном примере. В качестве платформы для реализации используем PHP. Предполагается, что у читателя установлен интерпретатор PHP.

Создайте для примера подкаталог «fuse_sample» внутри корневой директории веб-сервера. Для пользователей веб-сервера Apache (http://httpd.apache.org) это по умолчанию каталог /usr/local/apache/htdocs или /var/www (этот параметр хранится в файле настроек httpd.conf и называется ServerRoot), а для пользователей MS-IIS (http://www.microsoft.com/iis), скорее всего каталог C:\inetpub\wwwroot.

Файлы Fusebox 3.0 for PHP: http://www.fusebox.org/index.cfm?&fuseaction=phpframework.default (а так же для других реализаций) можно получить по интернет-адресу: http://www.fusebox.org/index.cfm?&fuseaction= framework.languages. Выбираем нужную нам ссылку («Fusebox 3.0 for PHP»: http://www.fusebox.org/index.cfm?& fuseaction=phpframework.default). На следующей странице выбираем ссылку «Download Core Files».

В индексном файле index.php описывается только одно действие – выбирается ядро Fusebox для использования. Нужное значение зависит от того, какую версию PHP вы используете. Если этого не происходит, то можно выбрать вручную, закомментировав соответствующие строки, или переименовать файл fbx_Fusebox3.0_PHP4.0.6.php или fbx_Fusebox3.0_PHP4.1.x.php в index.php.

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

Первым делом (помните основные компоненты приложения?) посмотрим на оператор-переключатель. Он описан в файле fbx_Switch.php. Изменим его первые две ветви («mainpage» и «Fuse-box.defaultFuseaction») на:

switch($Fusebox["fuseaction"]) {

   case "mainpage":

case "Fusebox.defaultFuseaction":

     include( "out_simple.php" );

     break; 

   default:   //остальное содержимое оставим без изменений

Создадим в том же каталоге (fuse_sample) скрипт out_simple.php следующего содержания:

<?php echo"This is main page"; ?>

Замечание: никогда не ленитесь писать «<?php» при оформлении PHP-кода.

И скрипт out_main.php, который будет отрабатывать по умолчанию:

<html>

<body>

<table width="50%" border="1" cellpaddin="3" cellspacing="0" align="center">

<tr>

  <td colspan="0" align="center">

    <h2>Sample application</h2>

  </td>

</tr>

<tr>

  <td width="100%" valign="top">

    <?php echo $Fusebox[ "layout" ]; ?>

  </td>

</tr>

<tr>

  <td colspan="2">

    <?php

    Module( "index.php", array( "fuseaction"=>"bar.menu", "stoplayout"=>"true" ) ); 

    ?>

  </td>

</tr>

</table>

</body>

</html>

Этот пример – простая и надуманная демонстрация работы технологии Fusebox. В реальном программировании не стоит вот так совмещать HTML- и PHP-коды. Да, язык PHP (и не только он) это позволяет и часто это преподносится как возможность быстро научиться писать простые сценарии.

В начале статьи мы говорили о том, что одна из наших задач – обновление и сопровождение программного обеспечения. Так вот, подобная «мешанина» крайне сложно читается даже через пару месяцев. А использовать такое смешанное кодирование при групповой работе – непростительная потеря времени.

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

В файле fbx_Settings.php изменим первое условие на:

//In case no fuseaction was given, I'll set up one to use

//by default

if( !isset( $attributes[ "fuseaction" ] ) ) {

   $attributes["fuseaction"] = "home.mainpage";

}

Этим мы определим новое значение «по умолчанию» для параметра «fusecation».

Далее мы пропишем в файле fbx_Circuits.php (описывает состав приложения) следующее:

$Fusebox["circuits"]["home"]  = "fuse_sample";

$Fusebox["circuits"]["bar"]   = "fuse_sample/bar";

Так мы создаём привязку к структуре каталогов нашего приложения. Основное приложение располагается в каталоге «fuse_sample», а его подприложение – «fuse_sample/bar».

В файл fbx_Layouts.php пропишем:

if ( $attributes["stoplayout"] ) {

  $Fusebox["layoutFile"]  = "";

  $Fusebox["layoutDir"]   = "";

}

else {

  $Fusebox["layoutFile"]  = "out_main.php";

  $Fusebox["layoutDir"]   = "";

}

Займемся подприложением. В каталоге «fuse_sample» создадим подкаталог «bar» и скопируем в него файлы fbx_Settings.php, fbx_Layouts.php, fbx_Switch.php.

Сейчас наша цель – создать горизонтальное меню. Изменим содержимое файла fbx_Switch.php на следующее:

switch($Fusebox["fuseaction"]) {

       case "mainpage":

    case "Fusebox.defaultFuseaction":

        echo "Bar's main page";

             break;   

    case "menu":

        $XFA[ "main" ]  = "home.mainpage";

      $XFA[ "bar1" ]  = $Fusebox[ "thisCircuit" ] . ".bar1";

      $XFA[ "bar2" ]  = $Fusebox[ "thisCircuit" ] . ".bar2";

      $XFA[ "bar3" ]  = $Fusebox[ "thisCircuit" ] . ".bar3";

             include( "out_barmenu.php" );

        break;   

       case "bar1":

        echo "this is content of bar1";

             break;   

    case "bar2":

        echo "this is content of bar2";

             break; 

       case "bar3":

        echo "this is content of bar3";

              break;

     default:   //остальное содержимое оставим без изменений

Содержимое файла fbx_Layouts.php изменим на:

$Fusebox["layoutFile"]  = "";

$Fusebox["layoutDir"]   = "";

И наконец, создадим сам скрипт-меню out_barmenu.php:

<?php

echo '<center><strong>';

echo '<a href="index.php?fuseaction=home.mainpage">Main</a> | ';

echo '<a href="index.php?fuseaction='.$XFA[ "bar1" ].'">Bar 1</a> | ';

echo '<a href="index.php?fuseaction='.$XFA[ "bar2" ].'">Bar 2</a> | ';

echo '<a href="index.php?fuseaction='.$XFA[ "bar3" ].'">Bar 3</a>';

echo '</strong></center>';

?>

И наше простейшее приложение готово.

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

Так как все запросы к приложению в Fusebox совершаются через один-единственный файл, то целесообразно организовать перенаправление любых запросов пользователя на него. Это нужно для предотвращения попыток излишне любопытного пользователя обратиться к какому-то элементу нашего приложения напрямую (например, ввести в адресной строке браузера http://our_site/fuse_sample/out_main.php).

Для этого есть несколько способов. Если вы используете веб-сервер Apache, имеете возможность работы с файлами конфигурации доступа к директории (файлы .htaccess) и у вас установлен модуль Rewrite, это можно сделать следующим образом. Создайте в каталоге вашего приложения (fuse_sample) файл .htaccess следующего вида:

RewriteEngine on

Options +FollowSymlinks

DirectoryIndex index.php

RewriteBase /fuse_sample/

RewriteCond  %{REQUEST_FILENAME} !(index.php)

RewriteRule  ^(.*)$ index.php [QSA,R]

Таким образом мы перенаправим все HTTP-запросы к подкаталогу fuse_sample на файл /fuse_sample/index.php. Подробности о модуле Rewrite и использовании директив перенаправления можно найти в документации к веб-серверу Apache.

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


Комментарии отсутствуют

Добавить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

               Copyright © Системный администратор

Яндекс.Метрика
Tel.: (499) 277-12-45
E-mail: sa@samag.ru