Каковы различия в реальном мире между Zend Framework и Django?

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

  • Symfony казался сложным (мне не нравится настраивать модель базы данных как
  • CakePHP казался мутным
  • Igniter Мне понравилось сначала, но тогда мне показалось, что это больше похоже на 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 не содержит реального ORM. Он предоставляет некоторые вспомогательные классы, но вы в основном сами по себе в моделировании своей базы данных и написании собственных SQL-запросов. Таким образом, у вас будет полная свобода. Как говорит Дереш, Zend является модульным, поэтому вы можете выбрать и выбрать нужные части.

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

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

Ответ 2

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

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

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

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

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

Ответ 3

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

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

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

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

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

Ответ 4

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

У приложения Django admin есть ограничения, но он очень эффективен для чего-то, что почти бесплатное.

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