Есть ли готовая платформа веб-приложений в Python?
Я слышал много хороших мнений о языке Python. Они говорят, что это зрелые, выразительные и т.д.... Я ищу готовые корпоративные приложения для приложений на Python. Под "готовкой производства" я имею в виду:
- поддерживает объектно-реляционное сопоставление с кэшированием и декларативным описанием (например, JPA, Hibernate и т.д.).
- поддерживает ориентированную поддержку пользовательского интерфейса - нет шаблонов HTML, но что-то вроде JSF (RichFaces, Icefaces) или GWT, Vaadin, ZK
- разложение компонентов и инъекция зависимостей (например, EJB или Spring)
- тестирование модулей и интеграции
- хорошая поддержка IDE
- кластеризация, модульность и т.д. (например, Terracota, OSGi и т.д.)
- есть успешные приложения, написанные в нем такими компаниями, как IBM, Oracle и т.д. (я имею в виду настоящие бизнес-приложения, а не Twitter).
- может иметь коммерческую поддержку.
Возможно ли вообще в мире Python? Или только варианты:
- используйте Python и напишите все со дна (слишком дорогостоящее)
- придерживаться Java EE
- купить стек .NET
Ответы
Ответ 1
В контексте я работаю в крупном частном банке в Швейцарии, написав Enterprise-приложения в стеке J2EE.
В Python существует множество веб-фреймворков "Ready Ready". И там есть много больших сайтов на базе Python.
Тем не менее, я думаю, что Python - плохой выбор для приложения Enterprisy. Его можно использовать в качестве языка клей или языка сценариев (наши сценарии развертывания - Python). Showstopper для меня - обратная совместимость (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.
- Вложение зависимостей: в Python имеется порт Spring, поддерживаемый SpringSource. Но DI не в философии Python. Эта же проблема будет решена с помощью функций, аргументов по умолчанию и замыканий. И мы можем утверждать, что решение Pythonic чище, чем способ Java...
- тесты на единицу/интеграцию: очень хорошая поддержка, несколько тестовых фреймворков. Тем не менее, поддержка не так хороша, как Java, где у нас есть множество инструментов для тестирования.
- хорошая поддержка IDE: существуют технические ограничения на объем поддержки, который вы можете предоставить динамическому языку, но по крайней мере оба Eclipse и Netbeans имеют большую поддержку Python.
- кластеризация/модульность: кластеризация будет решена с помощью "инфраструктуры" ничего общего с инфраструктурой "и/или распределенного кэширования. Насколько я знаю, нет решений для модульности (в смысле OSGI). Но я бы бросил вызов, что очень часто OSGI является решением проблемы, которую мы не имеем на предприятии...
Ответ 2
Django кажется очевидным выбором. Это, безусловно, самая стабильная и развитая структура, используемая несколькими крупными корпорациями.
Поскольку это Python-инфраструктура, он обычно может использовать любой модуль Python, а также множество модулей, которые были созданы для Django.
Он должен удовлетворять всем вашим потребностям и не очень трудно изучить/развернуть.
Ответ 3
Отъезд Zope...
Ответ 4
Как уже упоминалось, 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.
- может иметь коммерческую поддержку. Есть несколько как это.
Ответ 5
Вы видели Jython? Jython - это реализация Python для виртуальной машины Java. Можно запустить Django на Jython:
Django on Jython и использовать Jython и Django с сервером приложений Java EE: Django on Glassfish.
Если вы еще не определили Python, вы можете взглянуть на Groovy с помощью Wicket или Grails в качестве рамки веб-приложения.
Ответ 6
Как насчет Plone? посетите http://www.plone.org для получения дополнительной информации. Используется во многих приложениях уровня предприятия.
Некоторые организации, использующие Plone:
ЦРУ, ФБР, НАСА, Оксфам, Федеральное правительство Бразилии, Novell, список продолжается.
Информацию о развернутых решениях и тематических исследованиях можно найти на сайте www.plone.net