Веб-уровень RoR со средним / внутренним интерфейсом Java - PullRequest
4 голосов
/ 29 октября 2010

Я ищу несколько советов / отзывов об использовании разных языков в многоуровневой архитектуре.В настоящее время речь идет о стеке Java (DB, средний уровень и веб-уровень), использующем Spring, чтобы связать все вместе.Мы обсуждали идею использования Ruby on Rails для веб-уровня, но я хотел бы знать, делал ли это кто-то раньше (возможно, с разными языками / технологиями).Идея перехода на RoR состоит в том, чтобы повысить скорость разработки на веб-уровне, однако мой первоначальный анализ заключается в том, что это также уменьшит скорость разработки на среднем уровне.

Некоторые вопросы, которые я пытаюсь получить,пункты:

  • Кто-нибудь из небольших групп разработчиков действительно использовал гибридный языковой подход в подобной архитектуре?
  • Почему вы использовали этот подход?Что работало хорошо, а что нет?
  • Как бы вы справились с интерфейсами и моделями (возможно, использовали бы что-то вроде буферов протокола Google или Apache Thrift)?
  • Есть ли какие-либо другие преимущества или подводные камни в использованиитакой подход?

Ответы [ 2 ]

2 голосов
/ 29 октября 2010

Хотя у меня нет опыта работы с RoR, мы применили аналогичный подход с Django в качестве внешнего уровня, где мы будем использовать службы на основе Java для обработки больших объемов транзакций.

Мы определяем БД в модели django, разрабатываем веб-интерфейс с django views / jquery и, очевидно, получаем бесплатный сайт администратора.

На стороне java мы запускаем задачу обратного инжиниринга hibernate для генерации классов доступа к БД для кода java. Там, где это необходимо, мы используем домашний механизм JSON поверх AMQP RPC для связи между компонентами Python и Java.

Есть взлеты и падения в этом подходе. Для нас, поскольку мы не использовали большие Java-фреймворки, это дало нам доступ к быстрому и легковесному веб-интерфейсу нашего решения, а также легкость моделирования нашей базы данных с использованием формата модели Django (который мне очень нравится).

С другой стороны, мы столкнулись с некоторыми хитрыми вещами с конфигурацией обратного проектирования Hibernate (что сложно, если вы делаете что-то, что не является стандартным для болота - особенно в отношении некоторых отношений Django ManyToMany).

Я заметил, что вы упомянули, что у вас уже есть архитектура на основе Spring с веб-уровнем. Я не эксперт здесь, но это может предоставить вам возможности, которые стоит изучить, такие как groovy / grails или SpringMVC, который в версии 3 утверждает, что он значительно упрощен и быстрее разрабатывается. Это может дать вам те победы, которые вам нужны.

Компромиссом может быть рассмотрение некоторых инструментов Java, вдохновленных RoR, таких как Rife .

Суть в том, что вам придется совершать вызов в свете требований вашего собственного приложения и возможностей группы. Это сработало для нас, и я думаю, что это правильное решение для нас, но если ваша команда уже обладает навыками Java и Spring, то Spring 3 может быть подходящим вариантом (но спросите об этом эксперта Spring :-))

Rob

1 голос
/ 29 октября 2010

Эта презентация, вероятно, будет вам интересна: Rails on Spring - Использование JRuby в качестве секретного соуса

...