Zend Framework ve Django arasında gerçek dünya farklar nelerdir?

4 Cevap php

Ben web uygulamaları konusunda uzun bir süre PHP kullanıcısıyım ve onunla mostlz rahatım. Ancak, kimin bakım / uzayabilirliğin bir yaşam döngüsünün sona ulaşmış bir tek yarı-büyük proje var. Bu proje için gitmek yoludur beri, (proje kökenli olduğunda hiçbir vardı) farklı PHP çerçeveler ağırlığında idi ve ben ebst seçeneği Zend Framework ile bunu yapmak olacaktır sonuca geldi.

  • Symfony (Ben bu kadar veritabanı modelini kurma sevmiyorum karmaşık gibiydi
  • CakePHP karanlık gibiydi
  • Ateşleyici Ben ilk başta sevdim, ama sonra bunun arkasında daha az özelliklere sahip Zend ve hiçbir Zend gibi görünüyordu bana
  • Zend Ben ne gibi sadece kullanabilir ve belirli bir dizin yapısı içine bağlı olmak değil bunun sistemi gibi, ve tabii Zend arkasında bulunmaktadır. Performans potansiyel beni rahatsız ediyor

Şimdi, Zend seçimi geride küçük mantığı sonra, bir çerçeve seçerken ben bir anlaşma kırıcı olarak görmek birkaç şey vardır.

  • Ben doğrudan rahat yazı SQL daha fazla çünkü ben geçmişte ORM kullanılan değil, bu yüzden hala ORM kullanmak için ikna olması gerekir
  • Çok fazla soyutlama cesareti gelen gitmiyor
  • Esnek dizin yapısı

As long as this project is going to be written anew, I just as might write it in Python/Django, since I am quite familiar with Python, but not with Django. So, I would like to know if there is someone that worked with both Zend Framework and Django frameworks and if can outline a few key point differences?

I must also say that this project is made as a standard site/admin dual project. That is, it is basically two sites in one. One is for frontend and users, other is for data administration in the backend. I must and will build backend on my own, some scaffolding methods would be cool, but full automatic scaffolding is as good as nothing in this case.

I am still quite not sure how one approaches building basically two applications within a directory structure of, what is supposed to be, one application. Do you just make two separate applications and rely on URL scheme from there on to separate them? www.example.com and all of the /* being one application and www.example.com/admin/* being a second application.

Sorry for the long question(s), but as you can see - everything is pretty much related to one problem - I need to start a project anew, it has already established database+data which I can remodel, but would like to keep that kind of work at minimum.


Ok, thank you everybody - looks like I'll try and implement this stuff with Zend, gives me most flexibility out of the package (I did tests with both), and we'll see how it goes.

4 Cevap

Zend gerçek ORM içermez. Bu bazı yardımcı sınıfları sağlar ama sizin veritabanı modelleme ve kendi SQL sorguları yazarken kendi üzerinde çoğunlukla. Yani orada tam özgürlük olurdu. Deresh dediği gibi istediğiniz parçaları almak ve seçmek, böylece Zend modüler olduğunu.

Şahsen ben ORM tarafından da PEAR gelen DB_DataObjects birlikte Zend kullanın. Bu iskelet kodu otomatik olarak oluşturabilirsiniz. Çok basit sorguları işlemek için çok basit bir çözüm ama gerektiğinde ben hep özel SQL yazabilirsiniz.

İki yönetici ve frontendlerinin ayrılıkla ilgili farklı etki koyarak öneririm, örneğin: admin.yoursite.com (backend) ve www.yoursite.com (ön). Muhtemelen aynı URL ikisini de sahip çalışabilirsiniz ama gerçekten Django veya Zend tarafından desteklenen bir kullanım-durum değildir.

Peki Django Zend daha fullstack çerçevedir. Bu Zend daha symfony daha benzer.

Django ORM sınıfları içine veritabanını ters mühendislik. ve (yönetici ve model jeneratörler, proje iskelet üretimi vb) şeyler yapmanıza yardımcı bir cli aracı var

Zend bir bileşen çerçevenin daha fazladır. kendi MVC ve ORM uygulama var ama tek başına bu şeyler yazmak gerekir. Bu yaklaşım bazı dizin yapısını empoze olmadan yalnızca size gereken malzeme kullanmaktır.

Senin durumunda Django nedeniyle büyük admin jeneratör modülü bazı avantajlara sahip olacak, ve Django kendisi (çoğu PHP çerçeveler daha hızlı) oldukça hızlı.

Ben şahsen (Posta, OpenID, Lucene arama) gereken bazı şeyler için Zend Framework ile Symfony kullanıyorum ama Django ile biraz oynadı ve ben bunu seviyorum.

I'm not so experienced with Django, but from what I've read about it, it doesn't seem to be what you're looking for (too much "abstraction from the guts"). Zend framework does not provide you with an ORM. It provides you with some tools that might aid in maintainability of your code (for example its much easier to do $user->save() on a Zend_Db_Table_Row object then to manually type in the equivalent SQL string). If you're more comfortable doing SQL, that's totally cool and Zend digs that...just beware that there might run into some more maintenance issues down the rode. I would suggest going with a "named query" approach where you store you queries in an external resource and load them "on demand". Zend has a very flexible directory structure...the recommended one only facilitates in making things a little easier. You can easily pull of your admin section urls using modules and routing....its a very common use case in Zend.

Alt satır Zend çoğunlukla bir "sunum çerçevesi" dır. İşte bu üstünlük budur. Size bakım kullanıcılar ve yardımcıları gösterilir sunum (ekranlar) organize temiz bir yol verir.

Bu bir veri açısından sizin için çok yapmaz. Bu size kalmış, ve muhtemelen "sürdürülebilir" olmak için yapılması gereken işin% 90'dır.

Amacınız iş mantığı malzeme ve veri erişim şeyler herhangi bir "çerçeve" içinde işlev ve hatta bir web sunucusu olmadan gerektiğidir! Aksi takdirde sadece Zend için var ne sizi unmaintainable karışıklık hareket edeceğiz.

Ayrıca, performansı ile kendimi endişe olmaz ... mosy şey iyi bir önbelleğe alma stratejisi ile tespit edebilirsiniz.

Ben Zend ve Django arasında karşılaştırma olamaz, ama ben farklı bir etki alanı (sanal adında sunucu) Django "admin" uygulaması çalıştırmak için tamamen mümkün söyleyebilirim, ve herhangi bir kod çoğaltmak gerekmez. Sadece normal olarak Django uygulaması oluşturmak ama ortak bir veritabanı sunucusu / küme paylaşan farklı bir sanal sunucu yönetici uygulaması ve url koymak.

Django yönetici uygulaması sınırlamalar var, ama neredeyse ücretsiz geliyor şey için çok güçlü.

Ben ilk Django başladı nihayet, ben genel olarak ORM yıllardan için küçümseme bir sürü vardı ama ben araç kutusunda yararlı bir araç olarak şimdi onları kabul edin.