2009-03-17 4 views
10

Я долгое время PHP-пользователь, когда дело доходит до веб-приложений, и я очень комфортно с ним. Тем не менее, у меня есть один полу-большой проект, обслуживание/расширяемость которого достигло конца жизненного цикла. Я взвешивал разные фреймворки PHP (не было, когда проект возник), так как это способ пойти на этот проект, и я пришел к выводу, что вариант ebst должен был бы сделать это с Zend Framework.Каковы различия между реальным миром между Zend Framework и Django?

  • Symfony казалось сложным (мне не нравится создание модели базы данных, как
  • CakePHP казалась мутной
  • воспламенитель мне понравилось сначала, но потом мне показалось, что это больше похоже на Zend с меньшими затратами функции и отсутствие Zend позади него
  • Zend Мне нравится система, в которой я могу использовать только то, что мне нравится, и не привязана к конкретной структуре каталогов, и, конечно же, Zend позади нее. Производительность - это то, что потенциально беспокоит меня

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

  • Я не использовал ORM в прошлом, потому что я более удобное написание SQL непосредственно, так что я все еще должен быть убеждено в том, чтобы использовать ORM
  • Не слишком много абстракции происходит из кишок
  • Гибкая структура каталогов

пока этот проект будет писать заново, я так же, как мог бы написать это в Python/Django, так как я хорошо знаком с Python, но не с Django. Итак, я хотел бы знать, есть ли кто-то, кто работал с платформами Zend Framework и Django, и может ли он выделить несколько ключевых различий?

Я также должен сказать, что этот проект выполнен в виде стандартного проекта сайта/администратора. То есть, это в основном два сайта в одном. Один для интерфейсов и пользователей, другой для администрирования данных в бэкэнд. Я должен и буду строить бэкэнд самостоятельно, некоторые методы строительства будут прохладными, но полные автоматические строительные леса так же хороши, как ничего в этом случае.

Я все еще не совсем уверен, как один из них подходит для создания в основном двух приложений в структуре каталогов, что должно быть, одного приложения. Вы просто делаете два отдельных приложения и полагаетесь на схему URL-адресов оттуда, чтобы отделить их? www.example.com и все/* - одно приложение, а www.example.com/admin/* - второе приложение.

Извините за длинный вопрос (ы), но, как вы можете видеть - все в значительной степени связано с одной проблемой - мне нужно, чтобы начать проект заново, она уже создала базу данных + данные, которые я могу реконструировать, но хотел бы сохранить такую ​​работу как минимум.


Хорошо, спасибо всем, - похоже, что я буду пытаться реализовать этот материал с Zend, дает мне большую гибкость из пакета (я сделал тесты с обоими), и мы увидим, как это происходит.

+1

Я бы не назвал Zend_Db ORM - это объектно-ориентированный SQL-интерфейс. Он предоставляет некоторые абстракции, которые облегчают вашу жизнь, но он не соответствует функциям, которые ORM предоставит. Я не считаю, что это не ORM. –

ответ

5

Zend не содержит настоящую ORM. Он предоставляет некоторые вспомогательные классы, но вы в основном сами по себе в моделировании своей базы данных и написании собственных SQL-запросов. Таким образом, у вас будет полная свобода. Как говорит Дереш, Zend является модульным, поэтому вы можете выбрать и выбрать нужные части.

Лично я использую Zend вместе с DB_DataObjects из PEAR, как и ORM. Он может автоматически генерировать ваш код скелета. Это очень простое решение для обработки простых запросов, но я всегда могу написать собственный SQL, если это необходимо.

Что касается разделения двух администраторов и интерфейсов, я бы предложил разместить их в разных доменах, например: admin.yoursite.com (backend) и www.yoursite.com (frontend). Вы, вероятно, можете работать с ними, имея их оба по одному URL-адресу, но на самом деле это не прецедент, который поддерживается Django или Zend.

+0

Он поддерживается модулями ZendF throught ..., но опять же ответ старый! –

12

Ну, Django - это более полноэкранный каркас, чем Zend.Это больше похоже на symfony, чем на Zend.

Django может перестроить вашу базу данных в классы ORM. и имеет инструмент cli, который помогает вам делать вещи (генераторы и генераторы моделей, генерация скелета проекта и т. д.)

Zend - это скорее составная структура. он имеет собственную реализацию MVC и ORM, но вам нужно написать этот материал в одиночку. Его подход состоит в том, чтобы использовать только то, что вам нужно, не навязывая какую-либо структуру каталогов.

В вашем случае Django будет иметь некоторые преимущества из-за своего великолепного модуля генератора администратора, а сам Django довольно быстрый (быстрее, чем большинство PHP-фреймворков).

Я лично использую symfony с картой Zend для некоторых вещей, которые мне нужны (Mail, OpenID, поиск Lucene), но немного поиграли с Django, и мне это нравится.

2

Я не настолько опытен с Django, но из того, что я читал об этом, это не похоже на то, что вы ищете (слишком много «абстракции от кишок»). Zend framework не предоставляет вам ORM. Он предоставляет вам некоторые инструменты, которые могут помочь в ремонтопригодности вашего кода (например, гораздо проще сделать $ user-> save() в объекте Zend_Db_Table_Row, а затем вручную ввести эквивалентную строку SQL). Если вам удобнее делать SQL, это абсолютно здорово, и Zend копает это ... просто остерегайтесь того, что там могут возникнуть проблемы с обслуживанием. Я бы предложил перейти с подходом «именованного запроса», где вы храните свои запросы во внешнем ресурсе и загружаете их «по требованию». Zend имеет очень гибкую структуру каталогов ... рекомендуемый способ облегчает работу. Вы можете легко потянуть свои URL-адреса раздела администратора с помощью modules и маршрутизации .... его очень распространенный вариант использования в Zend.

Итог линии, Zend - это «структура представления» в основном. Это то, чем он отличается. Это дает вам чистый способ организации презентации (экранов), отображаемой вашим пользователям, и помогает в обслуживании.

Это не делает для вас многого с точки зрения данных. Это зависит от вас и, вероятно, 90% работы, которая должна быть выполнена, чтобы стать «поддерживаемой».

Цель состоит в том, чтобы ваш бизнес-логика и материал для доступа к данным должны функционировать в любой «инфраструктуре» и даже без веб-сервера! В противном случае вы просто переместите вам непоправимый беспорядок из того, что у вас есть для Zend.

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

1

Я не могу сравнивать Zend и Django, но могу сказать, что вполне возможно, что приложение «admin» Django запускается на другом домене (виртуальном именованном сервере), и вам не нужно дублировать какие-либо код. Вы просто создаете приложение Django как обычно, но добавляете приложение администратора и URL-адрес на другом виртуальном сервере, который имеет общий сервер/кластер баз данных.

Приложение администратора Django имеет ограничения, но оно очень мощное для чего-то, что приходит почти бесплатно.

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

Смежные вопросы