Есть ли готовый к использованию готовый веб-фреймворк в Python? - PullRequest
14 голосов
/ 15 апреля 2010

Я слышал много хороших мнений о языке Python. Говорят, что он зрелый, выразительный и т. Д. Я ищу готовые производственные фреймворки для корпоративных приложений на Python. Под «готовым производством» я имею в виду:

  • поддерживает объектно-реляционное отображение с кэшированием и декларативным описанием (например, JPA, Hibernate и т. Д.)
  • поддержка ориентированного пользовательского интерфейса - нет шаблонов HTML, но что-то вроде JSF (RichFaces, Icefaces) или GWT, Vaadin, ZK
  • декомпозиция компонентов и внедрение зависимостей (например, EJB или Spring)
  • блок и интеграционное тестирование
  • хорошая поддержка IDE
  • кластеризация, модульность и т. Д. (Например, Terracota, OSGi и т. Д.)
  • есть успешные приложения, написанные на нем такими компаниями, как IBM, Oracle и т. Д. (Я имею в виду реальные бизнес-приложения, а не Twitter)
  • может иметь коммерческую поддержку

Возможно ли это вообще в мире Python? Или только варианты:

  • использовать Python и писать все снизу (слишком дорого)
  • придерживайтесь Java EE
  • купить .NET stack

Ответы [ 6 ]

26 голосов
/ 15 апреля 2010

Джанго кажется очевидным выбором. На сегодняшний день это самая стабильная и развитая платформа, используемая несколькими крупными корпорациями .

Поскольку это среда Python, он обычно может использовать любой модуль Python, а также множество модулей, созданных для Django.

Он должен отвечать всем вашим потребностям, и его не так уж сложно изучить / развернуть.

14 голосов
/ 15 апреля 2010

Для контекста я работаю в крупном частном банке в Швейцарии, пишу корпоративные приложения в стеке J2EE.

В Python есть множество веб-фреймворков "Ready Ready". И есть множество крупных сайтов на Python.

Тем не менее, я думаю, что Python - плохой выбор для приложения для предприятий. Его можно использовать в качестве связующего языка или языка сценариев (наши сценарии развертывания - Python). Showtopper для меня - обратная совместимость (Python 3.x не обратно совместим с Python 2.x). Философия Python, кажется, больше для инноваций и делает язык лучше, плавнее и необязательно для поддержки программ, написанных 10 лет назад.

Что касается веб-фреймворка, мне нравится Django, но он определенно слишком молод и развивается слишком быстро, чтобы использоваться на предприятии. У меня нет большого опыта работы с другими основанными на Python средами.

Если вам нужна корпоративно-ориентированная среда, вам придется использовать корпоративные стеки (Java / .Net).

С другой стороны, даже в мире Java существует тенденция использовать менее предприимчивые фреймворки. Подумайте, что Spring против EJB2 или EJB3 намного легче, чем EJB2. Или подумайте, что Flex (который, на мой взгляд, далек от корпоративной среды) все больше используется на предприятии. Так что, если ваше предприятие достаточно открыто, готово прыгнуть в будущее, используя Django, RoR или другую современную Web 2.0, основанную на сообществе, Open Source, следующее поколение, основанные на активных записях фреймворки ... возможно, это не так уж много. ..

И, наконец, ответить на несколько ваших вопросов напрямую:

  • поддержка ORM / кеширование / ...: да, но большинство решений основано на активной записи, что подходит для 90% того, что вы хотите сделать, но определенно не так полно / сложно, как JPA / Hibernate
  • ориентированный на управление пользовательский интерфейс: нет, и вы не найдете стандарт, поэтому вы не найдете сторонние компоненты. Самое близкое, что вы можете получить - это интеграция с jQuery или другими инфраструктурами JS UI
  • внедрение зависимостей: существует порт Spring для Python, поддерживаемый SpringSource. Но DI не в философии Python. Та же проблема будет решена с помощью функций, аргументов по умолчанию и замыканий. И мы можем утверждать, что решение Pythonic чище, чем способ Java ...
  • модульные / интеграционные тесты: очень хорошая поддержка, несколько тестовых сред. Тем не менее, поддержка не так хороша, как в Java, где у нас есть множество инструментов для тестирования.
  • хорошая поддержка IDE: существуют технические ограничения на количество поддержки, которую вы можете предоставить динамическому языку, но, по крайней мере, Eclipse и Netbeans имеют отличную поддержку Python.
  • кластеризация / модульность: кластеризация будет решаться с использованием инфраструктуры «без участия пользователя» и / или распределенного кэширования. Насколько я знаю, решений для модульности (в смысле OSGI) не существует. Но я бы сказал, что очень часто OSGI - это решение проблемы, которой у нас нет на предприятии ...
5 голосов
/ 15 апреля 2010

Выезд Zope ...

4 голосов
/ 15 апреля 2010

Как уже упоминалось, django, пожалуй, самая стабильная среда веб-приложений на python. Чтобы ответить на ваши очки по очереди:

  • поддерживает объектно-реляционное отображение с кэшированием и декларативным описанием (например, JPA, Hibernate и т. Д.). Да, см. модели Django
  • контролирует поддержку ориентированного пользовательского интерфейса - нет шаблонов HTML, но что-то вроде JSF (RichFaces, Icefaces) или GWT, Vaadin, ZK. Шаблоны django есть, но вы можете легко добавить другой слой представления.
  • декомпозиция компонентов и внедрение зависимостей (например, EJB или Spring). Не уверен, так как я не использовал EJB.
  • модульное и интеграционное тестирование. Да, см. Джанго тестирование .
  • хорошая поддержка IDE. Довольно хорошо. Смотрите затмение + pydev
  • кластеризация, модульность и т. Д. (Например, Terracota, OSGi и т. Д.). Не знаю.
  • есть успешные приложения, написанные на нем такими компаниями, как IBM, Oracle и т. Д. (Я имею в виду реальные бизнес-приложения, а не Twitter). В основном новостные организации, такие как LA Times и Washington Post.
  • может иметь коммерческую поддержку. Есть несколько таких как .
1 голос
/ 16 апреля 2010

А как насчет Plone? посетите http://www.plone.org для получения дополнительной информации. Используется во многих приложениях уровня предприятия.

Некоторые организации, использующие Plone: ​​

ЦРУ, ФБР, НАСА, Оксфам, федеральное правительство Бразилии, Novell, этот список можно продолжить.

Для получения информации о развернутых решениях и тематических исследованиях посетите www.plone.net

1 голос
/ 15 апреля 2010

Вы смотрели на Jython? Jython - это реализация Python для виртуальной машины Java. Можно запустить Django на Jython: Django на Jython и использование Jython и Django с сервером приложений Java EE: Django на Glassfish .

Если вы еще не выбрали Python, вы можете взглянуть на Groovy с Wicket или Grails в качестве фреймворка веб-приложения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...