Python web programlama Artıları ve farklı yaklaşımların Eksileri

oy
24

Python kullanarak bazı sunucu tarafı kodlama yapmak istiyorum. Ama ben tür bunu yollarını sayısı ile kayboldum.

Bu do-it-yourself CGI yaklaşımı ile başlar ve temelde tüm işi kendileri yapardı bazı oldukça sağlam çerçeveler ile sona görünmektedir. Ve gibi aradaki şeyler büyük sürü web.py , Peroksit ve Django .

  • Nelerdir artıları ve eksileri çerçeveler veya yaklaşımların Üzerinde çalıştığınız ?
  • Ne dengelemeler vardır?
  • Için projelerin ne tür onlar iyi ve istemedikleri şeyleri yapmak?

Düzenleme: Henüz web programlama ile fazla deneyim yok.
Ben vb parametreler URL'sini ayrıştırma gibi temel ve sıkıcı şeyleri önlemek istiyorum
video ederken, diğer yandan 15 dakika içinde oluşturulan blogda ile Ruby on etkiledi beni bıraktı, ben şeyler yüzlerce gizli olduğunu fark bana gelen - hiçbir zaman bir çalışma webapp yazmak gerekirse hangi serin, ama gerçekten sihirli anlamak için değil, büyük - ve bu şimdi aramaya budur.

Oluştur 04/09/2008 saat 12:00
kaynak kullanıcı
Diğer dillerde...                            


9 cevaplar

oy
2

sadece kendiniz için belki de sadece bir örnek oyun sitesi - - Ben bir projeyi yapmaya değer olacağını düşünüyorum önce herhangi bir CGI programlama yapmadım varsa DIY yaklaşım kullanarak. Bir çerçeve kullanarak yapacağınız daha tüm çeşitli parçalar nasıl çalıştığı hakkında çok daha fazla bilgi edineceğiz. Bu size bunları yazmak ancak tüm Gelecekteki web uygulamaları üzerinde çok tasarım ve hata ayıklama ve yardımcı olacaktır.

Şahsen ben artık kullanıma Django . Gerçek yararı çok hızlı uygulama dağıtımıdır. Nesne ilişkisel eşleme şeyler hızlı hareket ve şablon kütüphanesi kullanmak için bir sevinç alır. Ayrıca yönetici arayüzü size "sıkıcı" şeyler herhangi yazmaya gerek kalmaz tüm nesneler için temel CRUD ekranları verir.

Solüsyon bazlı bir ORM kullanmanın dezavantajı bazı SQL el sanatları istiyoruz, eğer çok daha zor aksi olurdu daha hala olmasına rağmen çok olası performans nedenleriyle söylemek olmasıdır.

Cevap 04/09/2008 saat 12:17
kaynak kullanıcı

oy
7

Eğer WSGI bazlı (örneğin içindir bir çerçeve ile gitmeye karar verirseniz TurboGears'ın ), sana mükemmel bir makalesinde geçmesi öneriyoruz Başka Do-It-Yourself Çerçeve Ian Bicking tarafından.

Yazıda, geçmişte sıfırdan basit bir web uygulaması çerçevesinde inşa eder.

Ayrıca, video çıkışı kontrol WSGI ile bir web çerçeve oluşturma Kevin Dangoor tarafından. Dangoor TurboGears projesinin kurucusudur.

Cevap 04/09/2008 saat 12:24
kaynak kullanıcı

oy
17

CGI Trafik yoğunluğu düşük olan web siteleri için harika ama o başka bir şey için bazı performans sorunları vardır. Bir istek içinde her geldiklerinde sunucu kendi süreçte CGI uygulaması başlatır olmasıdır. 1) Başlangıç ve bir süreç zaman alabilir durdurma ve 2) Eğer hafızada şey önbelleğe olamaz: Bu iki nedenden dolayı kötü. Sen FastCGI gidebilir, ama sadece düz bir yazma daha iyi olurdu iddia ediyorum WSGI bu nedenle bu yolu gitmek için gidiyoruz eğer app (yön WSGI gerçekten çalışıyor CGI farklı bir sürü bir bütün halt değil ).

Bunun dışında da seçimler çerçeve yapmak istiyorum ne kadar çoğunlukla içindir. Tüm şarkı, Django veya elektrik direği gibi tüm dans çerçevesi bir ile gidebilir. Ya da bir mix ve maç yaklaşımla gidebilir (HTTP şeyler için CherryPy'ın gibi bir şey kullanmak, SQLAlchemy veritabanı şeyler, dağıtım için macun, vb). Ben aynı zamanda en çerçeveler de başkaları için farklı bileşenleri dışarı geçiş, bu nedenle bu iki yaklaşım mutlaka birbirini dışlayan değil izin verir işaret olmalıdır.

Şahsen ben benim için çok fazla büyü yapmak ve mix ve maç tekniğini tercih çerçeveler sevmediğim, ama ben de tamamen deli olduğumu söylemişlerdi. :)

Ne kadar web programlama deneyimi var? Eğer bir acemi iseniz, Django ile gitmek demek. Eğer daha deneyimli iseniz, haklı bulana kadar farklı yaklaşımlar ve teknikler ile uğraşmak demek.

Cevap 04/09/2008 saat 12:35
kaynak kullanıcı

oy
12

En basit bir web programı temelde standart çıktı istekte web tarayıcısı yönlendirilir sadece bir programdır CGI komut dosyası vardır. Bu yaklaşımda, her sayfa yüklendiğinde ve her istekte ayrıştırılması gereken kendi çalıştırılabilir dosya vardır. Bu gerçekten basit ve çalışıyor şeyler almak için yapar, ama performans ve organizasyon açısından kötü hem ölçekler. Ben çok çabuk daha büyük bir sisteme büyümek olmayacak çok dinamik sayfa gerektiğinde Yani, bir CGI komut dosyasını kullanın.

Bu bir adım yukarı böyle PSP olduğu gibi, HTML kodundaki Python kod gömme edilir. Modern şablon sistemleri bu oldukça eskimiş yaptık beri birçok kişi, günümüzde bu kullanmak sanmıyorum. Bi süre PSP ile çalıştı ve onu boşluk duyarlı Python ile boşluk-cahil HTML karıştırmak için çalışırken (her sayfa kendi dosyası vardır) artı temelde bazı boşluk ilgili sıkıntılar CGI komut aynı örgütsel sınırları olduğunu bulmuşlardır.

Bir sonraki adım yukarı ben de kullandım böyle web.py olarak çok basit bir web çerçeveler vardır. CGI komut dosyaları gibi, yukarı ve koşma şey almak çok basit ve herhangi bir karmaşık yapılandırma veya otomatik olarak oluşturulan kod gerekmez. Neler olduğunu görebilmesi Kendi kod, anlamak oldukça basit olacaktır. Ancak, zengin özelliklere diğer web çerçeveler gibi değil; Son kez hiçbir oturum izleme yoktu, kullandı, böylece kendi rulo zorunda kaldı. Ayrıca Guido alıntı "çok fazla sihirli davranışı" ( "upvars () bah") vardır.

Son olarak, bu tür Django olarak zengin özellikli web çerçeveler var. Bu basit Merhaba Dünya programları çalışma almak için iş biraz gerektirir, ama her büyük bir o size yol için büyük, iyi yazılmış öğretici (özellikle Django) sahiptir. Çok kolaylık nedeniyle ve özellikleri ve dokümantasyon, vb herhangi bir gerçek proje için bu web çerçevelerin birini kullanarak tavsiye

Sonuçta ne tercih karar gerekecek. Örneğin, HTML dosyaları oluşturmak için tüm kullanım şablonu dilleri (özel kodu / etiketleri) çerçeveler. Böyle Cheetah şablon olarak Bazıları bir şablona her şeyi yapabilir, böylece keyfi Python kodunu yazalım. Böyle Django şablon olarak Diğerleri daha kısıtlayıcı olan ve program mantığı adresinin sunum kodunu ayırmak için zorlar. Her şey kişisel olarak tercih ilgili.

Diğer bir örnek, bir URL işleme olduğu; Böyle Django gibi bazı çerçeveler normal ifadeler aracılığıyla başvuruda URL'ler tanımlamak gerekir. Böyle CherryPy'ın olarak Diğerleri otomatik fonksiyon adlarıyla adresler İşlevlerinizi map. Yine, bu kişisel bir tercihtir.

Ben şahsen benim nesne ilişkisel haritalama ve şablonlar için benim web sunucusu şeyler için (form parametreleri, oturum yönetimi, url haritalama, vb) ve Django CherryPy kullanarak web çerçevelerin bir karışımını kullanın. Benim öneri, yüksek düzeyde bir web framework ile başlamak onun öğretici aracılığıyla inin, sonra küçük kişisel proje üzerinde başlamaktır. Ben belirttiğimiz teknolojilerin hepsi ile yaptık ve gerçekten yararlı oldu. Sonunda sen tercih ve bu süreçte daha iyi bir web programcısı (ve genel olarak daha iyi bir programcı) haline ne bir fikir alırsınız.

Cevap 04/09/2008 saat 13:11
kaynak kullanıcı

oy
1

Tamam, raylar aslında oldukça iyidir, ama (ben çok raylarına merb tercih edeceğini Yakut dünyadan) oluyor orada biraz fazla sihir vardır. Ben şahsen Pylons kullanın ve güzel yama mutluyum. Ben (django kıyasla), bu direkler dahili parçaları daha kolay Django yaptığından daha int'leri verişi sağlayan söyleyebilirim. olumsuz (temel CRUD gibi) bütün kendinizi tarafından daha fazla şeyler yazmak zorunda olmasıdır.

bir çerçeve kullanmanın Artıları:

  1. malzeme hızla halletmek (ve çerçeve öğrendikten sonra ben hızlı lighning demek)
  2. herşey (kendi haddeleme sırasında elde etmek muhtemelen o kadar kolay değil) standartlarına compying edilir
  3. kolay gelen milyarlarca makale ve belgeler okumadan (öğreticiler sürü) çalışma şey almak için

Eksileri:

  1. Eğer daha az öğreniyoruz
  2. sert parçaların değiştirilmesi için (direkler bir sorun değil bu kadar, daha çok Django ile birlikte)
  3. sert (yukarıda bahsedilen SQLs gibi) bazı düşük seviyeli malzeme çimdik

Eğer tüm kodu almak beri muhtemelen onlar :-) ne işe yaradığını hazırlamak anlamına itibaren (dikmesi sözde ... artık Google uygulaması motor üzerinde çalışmak) bile en bizzare durumları sığacak şekilde ince ayar yapmak mümkündür.

Cevap 04/09/2008 saat 18:55
kaynak kullanıcı

oy
4

Eğer büyük gitmek isterseniz, Django seçin ve ayarlanır. Sadece öğrenmek istiyorsanız, önce bahsedilen kullanarak kendi çerçevesini rulo WebOb - bu gerçekten eğlenceli olabilir ve ben çok daha öğreneceksiniz eminim (artı Hoşunuza bileşeni kullanabilirsiniz: şablon sistemini, url memuru, veritabanı katmanı, oturumları, et Caetera).

Son 2 yılda, Django kullanan birkaç büyük siteler inşa ve tüm söyleyebileceğim, Django zamanın% 20'sinde ihtiyaçlarınız% 80'ini dolduracak. işin% 20 Kalan olursa olsun kullanmak istiyorum hangi çerçeve, zaman% 80 alacak.

Cevap 17/09/2008 saat 19:04
kaynak kullanıcı

oy
3

bir kere - - bir öğrenme egzersizi gibi bir şey zor yoldan yapmak her zaman değer. nasıl çalıştığını anladıktan sonra başvurunuzu uygun bir çerçeve almak, ve bunu kullanın. Eğer açısal hız anladıktan sonra tekerleği yeniden icat gerekmez. :-)

Ayrıca çerçeve arkasında programlama dili oldukça sağlam bir anlayışa sahip emin değer önce sen atlamak - Aynı anda Django ve Python hem öğrenmeye çalışıyorum (veya Yakut ve raylar, ya da X ve Y), yol açabilir daha karışıklığı eşitlemek için. Daha sonra çerçeve eklemek, birinci dildeki bazı kodu yazın.

Biz değil, araçlarını kullanarak ancak çözme sorunları, geliştirmeyi öğrenirler. Birkaç duvarlara Run aşmanız ve bazı yüksek duvarlar bulun!

Cevap 21/10/2008 saat 13:49
kaynak kullanıcı

oy
2

Python kullanıyorsanız, gereken değil CGI ile başlamak yerine WSGI ile başlar (ve kullanabileceğiniz wsgiref.handlers.CGIHandler bir CGI betiği olarak WSGI komut dosyasını çalıştırmak için. Neticede temel CGI gibi düşük seviyeli bir şey (olduğunu bu, bir eğitim anlamda faydalı olabilir, ama aynı zamanda bir dereceye kadar rahatsız edici olacaktır), fakat) tamamen eski arabirim yazmak zorunda (ve tek bir işlem modeli için uygulama sıkışmadan.

Eğer daha az rahatsız edici, ancak benzer şekilde düşük seviyeli bir arayüz istiyorsanız, kullanan WebOb o sağlayacaktır. Sen uygulayan olacağını tümmantık ve anlayamazlar birkaç karanlık köşeleri olacak, ama HTTP tarihleri ​​ayrıştırmak (onlar garip!) veya POST organları ayrıştırmak nasıl bulmaktan zaman harcamak zorunda kalmazsınız. Ben uygulamaları (başka bir çerçeve olmadan) bu şekilde yazmak ve tamamen uygulanabilir olduğunu. Eğer çerçeveler ne anlamak isteyen olsaydı kendi küçük çerçeveyi yazılı olacak kaçınılmazdır çünkü bir acemi olarak, ben bu öneririm. Otoh, gerçek çerçeve muhtemelen size uygulama tasarımı ve yapının iyi uygulamaları öğretir. Gerçekten iyi bir web programcısı olmak gerekirse, ben ciddiye hem denemek gerekir inanıyoruz; Yani (bir çerçeve ve iç yapıları korkmak değil herşeyi anlamalıdır, ama aynı zamanda tasarlanmış başka bir düşünceli çevre birisi zaman geçirmeliyim

Cevap 30/07/2009 saat 20:44
kaynak kullanıcı

oy
1

Küçük projeler için, kendi çalışırken oldukça kolaydır. Sadece böyle bir çiftleşmiş motoru alabilirsiniz Özellikle olarak Genshi ve almak çok oldukça hızlı ve kolay oluyor. Bazen güç matkap arayan gitmek daha bir tornavida kullanmak sadece hızlıdır.

Tam şişmiş çerçeveler daha fazla güç sürü sağlar, ancak bu gücünü artırabilecek ilk önce yüklenmiş ve kurulum olması gerekiyor. Daha büyük projeler için, bu ihmal edilebilir bir husustur, ama daha küçük projeler için bu zamanınızı en çekici kadar Rüzgar - çerçeve yabancı özellikle.

Cevap 09/12/2009 saat 12:02
kaynak kullanıcı

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more