MVC в мире приложений Google App Engine
Я прихожу на Java из С# и ASP.NET MVC, мне бы хотелось найти эквивалент в мире Java, который я мог бы использовать в Google App Engine. Я уже начал играть с FreeMarker и даже сделал первые шаги для написания очень простой структуры. В идеале мне не пришлось бы делать всю тяжелую работу, хотя кто-то должен был это сделать уже! Поэтому мой вопрос: какие рамки существуют там, которые были бы знакомы мне из ASP.NET MVC, и я мог бы использовать их в Google App Engine для Java.
Ключевыми вещами, которые я хочу, являются:
- Простая маршрутизация -
/products/view/1
преобразуется в действие представления контроллера продуктов с продуктом 1
- Шаблон Engine - способ легко передать "ViewData" в представление, и из вида, легко доступного для него, в идеале я бы хотел избежать всего, что слишком XMLy (поэтому мне нравится FreeMarker).
Ответы
Ответ 1
В настоящее время я работаю над приложением Google App Engine с помощью Spring MVC. Он намного более зрелый, чем ASP.NET MVC, поэтому вы не должны разочаровываться. В качестве дополнительного бонуса вы получаете всю мощность IoC Spring.
Для слоя вида я пытаюсь использовать Velocity. Это довольно просто, но мне еще предстоит решить, предпочитаю ли я его JSP. Я коротко посмотрел на FreeMaker, но мне не понравилось то, что я видел. Если вы хотите держаться подальше от шаблонов XML'y JSP, я рекомендую вам дать Velocity спину.
Единственной проблемой, с которой я столкнулся с Spring в GAE, является загрузка файлов. Реализации MultipartResolver полагаются на временный каталог файлов. После написания моей собственной реализации я вернулся к бесшовной загрузке файлов в своих моделях.
Ответ 2
Есть несколько фреймворков MVC, которые вы должны учитывать (что я сейчас делаю). Сначала я пошел с Spring MVC (3.0), а холодный запуск на GAE ужасен! Для начала требуется около 10 секунд (и я даже не использую ничего сложного, например Spring security и т.д.), Поэтому мне нужно использовать задание cron, чтобы поддерживать его. Поэтому я не рекомендую использовать Spring вообще для GAE.
Взгляните на следующие рамки:
VRaptor
Slim3
Google Sitebricks
Что касается шаблонов, я использую Sitemesh - использовал его довольно долгое время, поэтому не вижу необходимости переключатель.
Надеюсь, это поможет!
Ответ 3
Play Framework будет соответствовать счету. Это современная среда MVC для Java и имеет модуль Google App Engine для обеспечения совместимости. См. http://www.playframework.org/modules/gae.
Еще одно преимущество использования Play - это переносимость. Вы можете развернуть Play с помощью встроенного веб-сервера (опционально за apache для кеширования, балансировки нагрузки и т.д.), Или вы можете связать его как файл .war для развертывания на многих серверах приложений Java (Glassfish, Tomcat,...).
Ответ 4
У меня также есть сильное предпочтение Freemarker. Я предлагаю вам взглянуть на структуру Induction, его механизм шаблонов подключается, но поддержка по умолчанию для Freemarker. Индукция представляет собой легкую и быструю структуру MVC (7,7K строк), но имеет множество функций, отсутствующих в основных средах MVC, таких как:
- динамическая перезагрузка во время разработки при изменении контроллеров, представлений или моделей
- Загрузка файлов настолько проста (немного отличается от ввода строки)
- Конфигурация не требуется для контроллеров
- возможность анализировать зависимости между вашими моделями, представлениями и контроллерами с помощью IDE
- сопоставление URL на основе регулярных выражений
- лучшая поддержка для управления переадресацией любой инфраструктуры MVC
Что касается проблемы с загрузкой файлов, вызванной @pjesi, Induction позволяет установить порог размера, при котором файлы записываются на диск. Если он установлен достаточно большим, он не должен пытаться записывать файлы на диск.
Ознакомьтесь с учебником по началу работы: http://www.inductionframework.org/getting-started-tutorial.html
Ответ 5
JavaServer Faces (JSF), который я слышал, похож на структуру Microsoft MVC. (Я использую JSF, но никогда не использовал .NET MVC). И я считаю, что JSF 1.1 отлично работает в Google App Engine, и я подозреваю, что новые версии JSF будут работать, если вы будете использовать XHTML вместо JSP в качестве шаблонов. Есть также несколько хороших библиотек, которые позволяют вам использовать интерфейс AJAX в рамках JSF, RichFaces является популярным.
Проверять, выписываться
JavaServer Faces на sun.com
а также
JBoss RichFaces