Отдельная презентация / веб-сервисы
Является ли хорошей практикой разработка веб-сервиса и веб-сайта на двух разных языках на двух разных серверах? Например, сейчас я создаю веб-сервис Java, работающий на уровне представления Glassfish и Ruby on Rails, работающем на одном сервере.
Я бы хотел оставить веб-сервис на том же сервере, но использовать Ruby 1.9, работающий в Passenger.
Это хорошая идея? У меня нет опыта в архитектуре веб-приложений.
4 ответа
Технически, да, вы наверняка можете это сделать. Это одно из преимуществ использования WS. Они совместимы.
Тем не менее, я бы немного подумал над этой мыслью, если бы кто-то другой поддерживал ее и имел опыт только в одной из двух платформ (RoR или Java). Всегда лучше спросить:-)
Это зависит от того, насколько они похожи.
Если ваш веб-сервис в основном отражает функциональность вашего сайта - тогда имеет смысл повторно использовать существующий код и, таким образом, сделать их одинаковыми на одном сервере.
Обратите внимание - это не то же самое, что запутывание уровней, поскольку ваши представления по-прежнему отделены от вашей бизнес-логики.
С точки зрения Ruby-on-Rails, "веб-сервис" и "веб-сайт" часто взаимозаменяемы, поскольку они представляют собой один и тот же код, причем различаются только шаблоны представления (html для веб-сайта, xml для веб-сервиса), Если вы с самого начала создавали архитектуру RESTful, то этого можно достичь с минимумом дублирования и с правильно разделенными всеми прикладными уровнями.
Если вы напишите контракт в первую очередь веб-сервис, который использует и производит XML, вы можете общаться с любым клиентом, который может сделать HTTP-запрос GET или POST в соответствующем формате. Мыло или отдых, не имеет значения.
Я написал веб-сервисы Java/Spring, которые начинались с XSD. Клиент Yahoo UI RIA взял WSDL, сделал HTTP POST для отправки документа запроса и отобразил ответ XML в красивой сетке данных.
С точки зрения архитектуры системы, да, это "хорошая практика". Под добром я подразумеваю, что он достигает целей, не причиняет вреда и обеспечивает разделение интересов.
Я разрабатывал архитектуру с похожей структурой. Пользовательский интерфейс.NET и использует веб-службы Java. Эти веб-службы затем отвечают за все взаимодействие с постоянными носителями, сторонними компонентами и т. Д.
Я бы сказал, что в любой системе вы должны работать над тем, чтобы абстрагировать логику пользовательского интерфейса от бизнес-логики. Это просто хорошее разделение проблем. Использование веб-сервисов для этого является лишь одним из способов достижения этой цели. Я бы порекомендовал использовать веб-службы в том случае, если вы будете использовать эти бизнес-службы в других случаях в вашей системе.
Еще кое-что; после использования двух разных технологий в пользовательском интерфейсе и WS в течение последних 8 лет я понял, что большинство проблем - организационные, а не технические. Например, труднее найти новых разработчиков, обладающих обоими навыками, необходимыми для поддержки вашего приложения. В конечном итоге вам нужно найти эксперта по одному, а затем обучить его другой технологии.