2010-04-15 9 views
13

Słyszałem wiele dobrych opinii na temat języka Python. Mówią, że jest dojrzały, ekspresywny itp. Poszukuję gotowych do użycia frameworków aplikacji korporacyjnych w Pythonie. Przez "produkcji ready" to znaczy:Czy w języku Python istnieje gotowe do użycia środowisko aplikacji internetowych?

  • popiera cel-relacyjnego mapowania z buforowania i deklaratywnej desciption (jak JPA, Hibernate etc ..)
  • kontrole zorientowany interfejs użytkownika - bez wsparcia szablonów HTML, ale coś jak JSF (RichFaces, ICEfaces) lub GWT, Vaadin, ZK
  • rozkładu części i wtrysk zależność (jak EJB lub sprężyny)
  • urządzenie i testowania integracji
  • dobre wsparcie IDE
  • klastrów mod ularity etc (jak Terracota, OSGi etc ..)
  • istnieją udane aplikacje napisane w nim takie firmy jak IBM, Oracle itp (mam na myśli prawdziwe aplikacje biznesowe nie twitter)
  • mogłyby mieć komercyjne wsparcie

Czy jest to możliwe w ogóle w świecie Pythona? Lub tylko wybory są:

  • używanie Python i pisać wszystko od dołu (zbyt expensice)
  • trzymać się Java EE
  • Kup NET stosu
+3

Jeśli nie wiesz nic o Python następnie przełączenie na bazie ram Python wiedzieć prawdopodobnie nie jest to bardzo dobry pomysł. –

+9

Więc chcesz wszystkie funkcje Java EE ... W Pythonie? STICK DO JAVY! – jonwd7

+2

Prawie wszystkie ramy spełniają twoje "gotowe do produkcji" kryteria. Ale zadajesz pytanie w sposób ("czy są jakieś"), które jest zasadniczo argumentacyjne. Po co zadawać pytanie w ten sposób? –

Odpowiedz

14

W tym kontekście pracuję w dużym prywatnym banku w Szwajcarii, pisząc aplikacje korporacyjne na stosie J2EE.

W Pythonie dostępnych jest wiele frameworków internetowych "Production Ready". Istnieje wiele dużych serwisów opartych na Pythonie.

Powiedział, że myślę, że Python jest złym wyborem dla aplikacji Enterprisy. Może być używany jako język klejenia lub język skryptowy (nasze skrypty wdrożenia to Python). Showstopper to dla mnie kompatybilność wsteczna (Python 3.x nie jest wstecznie zgodny z Pythonem 2.x). Filozofia Pythona wydaje się bardziej innowacyjna i sprawia, że ​​język jest lepszy, płynniejszy i niekoniecznie wspiera programy napisane 10 lat temu.

Po stronie strony internetowej, uwielbiam Django, ale jest zdecydowanie za młody i ewoluuje zbyt szybko, aby mógł być używany w przedsiębiorstwie. Nie mam dużego doświadczenia z innymi frameworkami opartymi na Pythonie.

Jeśli chcesz stworzyć platformę dla przedsiębiorstw, musisz pozostać przy stosach korporacyjnych (Java/.Net).

Z drugiej strony, nawet w świecie Java istnieje tendencja do korzystania z frameworków, które są mniej entuzjastyczne.Think Spring vs EJB2 lub EJB3 są znacznie lżejsze niż EJB2. Albo myślę, że Flex (który jest daleki od ram korporacyjnych, moim zdaniem) jest coraz częściej wykorzystywany w przedsiębiorstwie. Więc jeśli twoja firma jest wystarczająco otwarta, gotowa do skoku w przyszłość, używanie Django, RoR lub innych nowoczesnych Web 2.0, opartych na społeczności, Open Source, następnej generacji, opartych na aktywnych rekordach ... może nie być aż tak trudne. ..

I wreszcie, aby odpowiedzieć na kilka z punktów bezpośrednio:

  • wsparcie ORM/cache/...: Tak, ale większość rozwiązań są oparte na aktywnym rekordu, co jest dobre dla 90 % z tego, co możesz chcieć, ale z pewnością nie jest tak kompletny/złożony jak JPA/Hibernate
  • zorientowany na kontrolę UI: nie, i nie znajdziesz standardu, więc nie znajdziesz komponentów innych firm. Najbliższym, co możesz uzyskać, jest integracja z jQuery lub innymi frameworkami JS UI
  • Wstrzykiwanie zależności: Istnieje port Spring do Pythona, obsługiwany przez SpringSource. Ale DI nie jest w filozofii Pythona. Ten sam problem zostanie rozwiązany za pomocą funkcji, domyślnych argumentów i zamknięć. I możemy argumentować, że rozwiązanie Pythonic jest czystsze niż metoda Java ...
  • testy jednostkowe/integracyjne: bardzo dobra obsługa, wiele frameworków testowych. Mimo to wsparcie nie jest tak dobre, jak w Javie, gdzie mamy mnóstwo narzędzi do testowania.
  • Dobre wsparcie dla IDE: istnieją ograniczenia techniczne w zakresie wsparcia, które możesz zapewnić w dynamicznym języku, ale przynajmniej zarówno Eclipse, jak i Netbeans mają świetne wsparcie dla Pythona.
  • Klastrowanie/modułowość: klastrowanie zostanie rozwiązane za pomocą "infrastruktury nic nie udostępniaj" i/lub rozproszonego buforowania. Na ile wiem, nie ma rozwiązań dla modułowości (w sensie OSGI). Ale rzuciłbym wyzwanie, że bardzo często OSGI jest rozwiązaniem problemu, którego nie mamy w przedsiębiorstwie ...
+0

Świetne porównanie! –

+2

Myślę, że zgodność wsteczna nie ma znaczenia, ponieważ Python 2 jest nadal obsługiwany. Nie jest tak, jak w przypadku Java, gdzie zakłada się, że zawsze powinieneś uaktualnić ją do najwyższej wersji - na razie dwa pasma rosną równolegle. – Kylotan

+6

Python jest znacznie bardziej kompatybilny wstecz niż typowa implementacja C++/Java, z * możliwym * wyjątkiem Pythona 3.x. Widzę dużo więcej awarii ze zmian kompilatora JVM/C++, nie wspominając o zmianach w bibliotece, niż w przypadku aktualizacji Pythona. Nawet zmiany wymagane do przejścia z wersji 2.x na 3.x są łagodne w porównaniu do niektórych zmian w C++ i Javie w ostatnich latach. Wydaje się, że nie ma innego powodu, aby nie nazywać Pythona "enterprisy", biorąc pod uwagę to, jak dobrze się integruje i streszcza. –

27

Django wydaje się oczywistym wyborem. Jest to zdecydowanie najbardziej stabilny i opracowany framework, używany przez several large corporations.

Ponieważ jest to framework Pythona, może on ogólnie używać dowolnego modułu Pythona, a także wielu modułów, które zostały wykonane dla Django.

Powinien spełniać wszystkie Twoje potrzeby i nie jest trudny do nauczenia/wdrożenia.

+1

yay for Django! (jeśli tylko było tam więcej zadań django) –

+2

Django +1, a przy okazji, nienawidzę web2py i tych, którzy zmuszają podwładnego do korzystania z web2py ... – satoru

+3

Django wygląda na biednego dla mnie. Modele wyglądają dobrze, istnieje prosta obsługa transakcji opartych na adnotacjach. Wyświetl warstwę i szablon jest bardzo słaba i niedopuszczalna. Nie chcę myśleć o żądaniu abou, GET, POST, ale o metodach i zdarzeniach. Warstwa widoku musi być ponownie (Flex być może) Nie mogę znaleźć żadnych elementów stanowych. Django to narzędzie do tworzenia stron internetowych i e-sklepów, ale nie dla aplikacji korporacyjnych. –

4

Jak wspomniano, django jest prawdopodobnie najbardziej stabilnym środowiskiem aplikacji sieci Web Pythona. Aby odpowiedzieć na twoje pytania kolejno:

  • obsługuje mapowanie obiektywno-relacyjne z buforowaniem i deklaracją deskrypcji (jak JPA, Hibernate itp.). Tak, patrz: django models
  • obsługa interfejsu użytkownika sterowana sterowaniem - bez szablonów HTML, ale coś w stylu JSF (RichFaces, Icefaces) lub GWT, Vaadin, ZK. Nie ma szablonów django, ale można łatwo dodać inną warstwę widoku.
  • Dekompozycja składnika i iniekcja zależności (np. EJB lub Spring). Nie jestem pewien, ponieważ nie korzystałem z EJB.
  • testowanie jednostek i integracji. Tak, patrz django testing.
  • dobra obsługa IDE. Całkiem dobre. Patrz: eclipse + pydev
  • tworzenie klastrów, modularność itp. (Np. Terracota, OSGi itp.). Nie wiem.
  • znajdują się aplikacje napisane przez takie firmy jak IBM, Oracle itp. (Mam na myśli prawdziwe aplikacje biznesowe, a nie Twitter). Głównie organizacje informacyjne takie jak LA Times i Washington Post.
  • może mieć wsparcie komercyjne. Istnieje kilka like this.
1

Czy obejrzałeś Jython? Jython jest implementacją języka Python dla wirtualnej maszyny języka Java. Możliwe jest uruchomienie Django na Jython: Django on Jython oraz użycie Jython i Django z serwerem aplikacji Java EE: Django on Glassfish.

Jeśli jeszcze nie wybrałeś Pythona na pewno, możesz spojrzeć na Groovy z Wicket lub Grails jako strukturą aplikacji internetowych.

5

Wyjazd Zope ...

+0

+1: wszystko, co wymagane, plus opcja wsparcia komercyjnego. –

+0

Zope 2 to serwer aplikacji, a Zope 3 to architektura komponentów? Potrzebuję zarówno Zope 2, jak i 3 lub 3, który tylko wykonuje lewę? Zope wygląda obiecująco. –

1

Co o Plone? Odwiedź stronę http://www.plone.org, aby uzyskać więcej informacji. Używany w wielu aplikacjach na poziomie przedsiębiorstwa.

Niektóre organizacje korzystające Plone: ​​

CIA, FBI, NASA, Oxfam, brazylijski rząd federalny, Novell, lista jest długa.

uzyskać informacje na temat wdrożonych rozwiązań oraz case studies odwiedzić www.plone.net

+0

Plone jest zbudowany na Zope. – Unreason

Powiązane problemy