Каков «правильный способ» организации этого проекта? - PullRequest
1 голос
/ 11 января 2011

Я работаю над проектом, который позволяет нескольким пользователям отправлять большие файлы данных и выполнять над ними операции.«Бэкэнд», который выполняет эти операции, написан на Perl, в то время как «веб-интерфейс» использует PHP для загрузки файлов шаблонов HTML и определяет, какой контент доставлять.Данные хранятся в базе данных (MySQL, SQLite, Oracle), и, хотя есть данные, которые еще не были обработаны, Perl добавляет их в рабочую очередь, которая доставляет данные в другие потоки в зависимости от загрузки системы.Кроме того, возможна предварительная и последующая обработка данных до и после работы основного сценария Perl (спецификации неясны), поэтому я могу разрешить этим процессорам выбираемые пользователем плагины.Я писал этот проект более процедурным образом, но я быстро осознаю преимущества разделения проблем, поскольку они ограничивают область применения одного изменения в остальной части проекта.

Я совершенно неопытен с шаблонами проектированияи мне любопытно, как лучше поступить.Я много слышал о MVC, но не уверен, как его применить.В частности, какие есть хорошие варианты структурирования этого кода (с точки зрения шаблонов проектирования и иерархии папок)?Как я могу добиться этого как с PHP, так и с Perl, минимизируя дублирующийся код между языками?Должен ли я хранить свои файлы PHP на верхнем уровне, чтобы у меня не было уродливых путей в URL?

Кроме того, если я хочу предоставить взаимозаменяемые базы данных, нужна ли каждой таблице собственная реализация DAO?

Ответы [ 2 ]

1 голос
/ 16 июня 2011

Это действительно несколько вопросов, но здесь идет речь:

MVC

Для реализации MVC вам необходимо иметь четкое представление о том, за что отвечают разделы Model, View и Controller. Вы можете прочитать об этом для себя , но в этом случае:

  • Модель должна содержать только код, который выполняет операции с файлами данных, то есть внутренние сценарии Perl
  • Представлением будут только шаблоны HTML. В них не должна быть встроена логика PHP, кроме того, что необходимо для отображения страницы.
  • Контроллером будет остальная часть приложения: части, которые соединяют интерфейс PHP с фоном Perl, и, возможно, сценарии Perl, которые опрашивают новые файлы.

Для каждого php, html или perl файла, который вы создаете, должно быть абсолютно ясно, к какому разделу он принадлежит, полностью. Никогда не путайте модель, представление или код контроллера в одном файле.

Не должно быть никаких причин, по которым вы не можете продолжать писать процедурно. Вам не обязательно нужна основа; Это может помочь вам расставить вещи по местам, но также может занять некоторое время, чтобы выучить.

MVC - это скорее разделение интересов, о котором вам нужно помнить. Хороший способ подумать об этом: «Может ли каждый из этих компонентов работать отдельно от других», например ::1023

  • Можете ли вы написать «макетированный» (пример) файл данных, и чтобы сценарии Perl обрабатывали его без выполнения кода PHP?
  • Можете ли вы запросить операцию у внешнего интерфейса и заставить ее доставить все параметры в одно место, готовые к подбору одной подпрограммы Perl, без запуска и кода Perl?

Вам не нужно беспокоиться о дублировании кода, если скрипты PHP и Perl делают совершенно разные вещи (PHP настраивает только пользовательские параметры и входные файлы, а Perl берет только эти параметры и файлы и выводит новые файлы. ).

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

Уродливые URL

Вам не нужно помещать ваши php-файлы в любое конкретное место. Используйте правила переписывания Apache, чтобы потом сделать красивые URL-адреса. ( генератор правил перезаписи - см. Раздел «Файл переадресации 301»). Но хороший MVC-фреймворк решит это за вас.

Пользовательские плагины

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

0 голосов
/ 13 июня 2011

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

Для PHP я рекомендую Zend Framework

Схема базы данных будет меняться в зависимости от используемой вами платформы.

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