Существует ли производство готовая платформа веб-приложений в Python?

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

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

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

  • используйте Python и запишите все из нижней части (также expensice)
  • придерживайтесь Java EE
  • купите стопку.NET
14
задан Arjan Tijms 9 May 2013 в 14:53
поделиться

6 ответов

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

В Python существует множество веб-фреймворков, «готовых к производству». И существует множество крупных веб-сайтов на основе Python.

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

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

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

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

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

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

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

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

Django кажется очевидным выбором. Это, безусловно, наиболее стабильная и развитая среда, используемая несколькими крупными корпорациями .

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

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

26
ответ дан 1 December 2019 в 06:12
поделиться

Проверить Zope ...

5
ответ дан 1 December 2019 в 06:12
поделиться

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

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

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

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

1
ответ дан 1 December 2019 в 06:12
поделиться

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

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

1
ответ дан 1 December 2019 в 06:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: