2009-06-02 19 views
8

Java için Bahar çerçevesinin (Rod Johnson) bir hayranıyım. Python'u öğreniyorum ve Python için Spring'i bulmaktan heyecan duydum. Topluluğun ilkbaharın bu iki aromasıyla karşılaştırılmasına ilişkin görüşlerini duymak isterim. Python'un paradigmalarına ne kadar iyi uyuyor?Spring for Python, Java for Spring ile karşılaştırıyor

cevap

12

BİLGİLENDİRME: ne kadar basit deyimleri kullanılarak sınıflar arasındaki gevşek bağlantı elde etmek için bu örneğe bakın.

Spring Python tarafından sağlanan seçeneklerin birçoğunun aşağıdakiler dahil olmak üzere faydalı olduğunu buluyorum: aspect oriented programming, dependency injection, remoting, security, and easy database access.

Boyut yönelimli programlama, dediği gibi, manşeti python ile java'dan daha kolay uygulamaktır. Ancak Spring Python, kaynak kodlarını düzenlemeden mevcut python modüllerine ekleyebiliyor. Diğer çözümler, meta-programlama veya orijinal kaynak kodunu değiştirmeyi gerektirir. Daha önce bir kullanıcı bir PyGame uygulamasına nasıl bir engelleyici ekleyeceğimizi soran forumlarımızı ziyaret etti, bu yüzden bazı kodları dikkatsizce "hafifçe" ekleyebilirdi.

Birçok kişi hızlıca assume "dependency injection" or "IoC" instantly means "XML configuration files". Durumda değil. Bir XML yapılandırmasını desteklerken, doğrudan python dekoratörlerini kullanarak sıçramak.

Yaylı bir sistem olan Spring Python'u kullanan bir şirketi zaten biliyorum. İyileştirmeler yapmak, yeni özellikler eklemek ve genellikle çözümlerinin bir parçası olarak kullanmakla ilgilenirler. Onlar da ilginizi çeken piques'ler için jython içinde çalıştırmayı denediler.

Günün sonunda, önerim tüm özellikleri incelemek ve bunlardan herhangi birinin ihtiyaçlarınızı karşılayıp karşılamadığını görmek. Bunun gereksiz karmaşıklık ya da sükunet değeri ekleyip eklemeyeceği sadece sizin tarafınızdan belirlenebilir. Her şeyi kullanmak zorunda değilsin; sadece ihtiyacın olan şey. Neler olduğu hakkında daha fazla bilgi almak için, SpringOne Americas 2008 konferansında sunduğum Introduction to Spring Python'u görüntülemeye davet ediyorum.

+0

Yay Python'a Giriş bağlantısı kesildi. En son canlı yayına bağlantı isteğinde bulunun – gansub

+0

https://www.slideshare.net/gturnquist/intro-to-spring-python – gregturn

+0

Bu arada, bir kitap da var => https://www.packtpub.com/application -development/yay piton-11 – gregturn

22

Bağımlılık enjeksiyon çerçeveleri, dinamik olarak yazılan bir dilde neredeyse yararlı değildir. Örnek olarak, sunum Dependency Injection: Vitally important or totally irrelevant? Java'da, bir bağımlılık enjeksiyon çerçevesi tarafından sağlanan esneklik hayati öneme sahiptir, Python'da ise genellikle gereksiz karmaşıklığa neden olur.

Bu, ilkelerin yanlış olduğu anlamına gelmez. Ben Bahar Python için proje kurşun değilim, bu yüzden Bence önyargılı düşünebiliriz:

# A concrete class implementing the greeting provider interface 
class EnglishGreetingProvider(object): 
    def get_greeting(self, who): 
     return "Hello %s!" % who 

# A class that takes a greeting provider factory as a parameter 
class ConsoleGreeter(object): 
    def __init__(self, who, provider=EnglishGreetingProvider): 
     self.who = who 
     self.provider = provider() 
    def greet(self): 
     print(self.provider.get_greeting(self.who)) 

# Default wiring 
greeter = ConsoleGreeter(who="World") 
greeter.greet() 

# Alternative implementation 
class FrenchGreetingProvider(object): 
    def get_greeting(self, who): 
     return "Bonjour %s!" % who 
greeter = ConsoleGreeter(who="World", provider=FrenchGreetingProvider) 
greeter.greet() 
+0

6 yıl sonra ... Yuvadaki bağımlılıkları nasıl ele alırdınız? (B (c (d)))? Kurucuda başka bir parametre eklemeden bilinmeyen bağımlılık sayısını nasıl ele alırsınız? – dakt

0

İyi şeyler. Spring Java, Spring Dot Net'i kullandım ve şimdi Spring Python ile başlıyorum. Python programcılar için her zaman oldukça kolay olmuştur; Bence özellikle yazması kolay olduğu için. Spring Dot Net'i biraz kafa karıştırıcı buldum, ancak hem Spring Java hem de Python benzer görünüyor. Eminim onların farklılıkları vardır, ama şimdiye kadar hiç de Python'un Spring'in uygulanışıyla pek de karışık değilim.