Как я могу структурировать программы CGI, которые перемещают страницу на страницу? - PullRequest
2 голосов
/ 20 сентября 2010

У меня общий вопрос о программах Perl CGI. Для некоторых приложений, не использующих MVC, разработчики пишут CGI-программы, могут использовать CGI.pm или каким-либо другим способом, который им нравится, и для перехода с экрана на сцену пишется новая CGI-программа (с - CVS TAGS, Perl-заголовками и т. Д. и т.д ..).

Но я чувствую, что если есть какие-то вещи (подпрограмма или бизнес-логика), которые не требуются в других программах, я продолжаю вызывать один и тот же скрипт для каждой страницы, вызываемой на основе одного дополнительного параметра Role. Преимущество, которое я получаю, - одноразовое объявление заголовка, простое в обслуживании,

%frmData = CGI::Lite->parse_form_data();
$Role    = $frmData{Role};
if ($Role eq 'A'){ getPageFirst()}
elsif ($Role eq 'B'){ getPageB()}  etc..

Это правильный подход? Можем ли мы столкнуться с какой-то проблемой. Какой будет лучший подход?

Ответы [ 2 ]

2 голосов
/ 20 сентября 2010

Я думаю, что объединение набора функциональных возможностей (нескольких CGI) в один файл на самом деле не способствует удобству сопровождения.

Альтернативный подход состоит в том, чтобы разделить CGI и поместить общий код в отдельные файлы (такие какМодули Perl), которые могут быть включены в каждый из них.

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

Можем ли мы столкнуться с какой-то проблемой?

Первая проблема, с которой вы, вероятно, столкнетесь с CGI, - это производительность, потому что скрипт нужно постоянно перезагружать.Итак, вы хотите взглянуть на что-то вроде FastCGI, которое сохраняет скрипт (и библиотеки) в памяти между запросами.Если вы зайдете туда, правильное разделение вашей кодовой базы на модули поможет.

1 голос
/ 20 сентября 2010

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

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

Не зная больше о том, что вы делаете, трудно дать лучший ответ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...