Использование Java в серверной части веб-приложения и php в промежуточном программном обеспечении

Я с нетерпением жду разработки социального веб-приложения с использованием Java в бэкэнде (для поддержки операций из базы данных Cassandra) и php в промежуточном программном обеспечении. Выгоден ли такой подход? Есть ли недостатки вышеописанной стратегии?

Существуют ли другие лучшие варианты обеспечения масштабируемой архитектуры?

Редактировать: что вы, ребята, думаете о том, чтобы сделать это полностью в JAVA (J2EE)?


person Rajat Gupta    schedule 13.01.2011    source источник
comment
Вы также отметили JSP, но это противоречит вашему вопросу, поскольку JSP является интерфейсной технологией. Не могли бы вы пояснить, как JSP соответствует этому требованию?   -  person BalusC    schedule 13.01.2011
comment
Я думал, что разработчики JSP могли бы предложить предпочесть JSP и использовать только одну технологию с использованием Java, если это может быть выгодно в каком-либо смысле.   -  person Rajat Gupta    schedule 13.01.2011
comment
кстати, у меня к вам вопрос, как вы так высоко подняли свою репутацию? :) Я имею в виду, сколько жизней в качестве пользователя stackoverflow? :)   -  person Rajat Gupta    schedule 13.01.2011
comment
Просто добавляя 10-15 (хорошего качества) ответов в день.   -  person BalusC    schedule 13.01.2011


Ответы (3)


Смешивание PHP и Java делает несколько вещей:

  1. Вы теряете преимущество тесной интеграции между PHP и MySQL, так как Java поместится посередине (возможно, с большим количеством сложного спагетти-кода).
  2. Вы вводите сложный уровень контроллера между представлением PHP и моделью Java, с которым можно легко справиться, используя проекты MVC с открытым исходным кодом, такие как Spring MVC или Struts 2.
  3. Вы создаете больший барьер для новых разработчиков, знакомящихся с кодом, поскольку им придется изучать оба языка программирования.

Лично я выступаю за архитектуру Struts 2 MVC с интеграцией Spring для управления вашим доступом к данным с помощью Hibernate или IBatis или к любому сервису/бэкенду, к которому вы можете подключить свой уровень модели.

Если вы привязаны к PHP, я бы посоветовал придерживаться чистого PHP и MySQL, так как у вас есть целое сообщество, которое поможет с устранением неполадок, поддержкой и технической помощью, когда вы ищете других разработчиков для присоединения к проекту.

person Nick    schedule 13.01.2011
comment
Если бы я использовал PHP с MySQL, у меня не было бы вопроса об использовании Java, но я использую Cassandra в качестве базы данных, которая предоставляет Гектору клиент на основе Java для запросов к базе данных. Таким образом, я думал о создании бэкэнда с использованием Java. Для этого также есть php-клиент, но не настолько развитый и зрелый. - person Rajat Gupta; 13.01.2011
comment
Поскольку вам необходимо использовать серверную часть Java, я определенно рекомендую использовать полный стек технологий на основе Java, например: JSP/Spring MVC/Java Model поверх клиента Hector. На мой взгляд, это увеличило бы производительность любого java-программиста, которого вы использовали бы в проекте. Затем вы также можете использовать контейнер сервлетов Java с открытым исходным кодом, например Tomcat или Glassfish. Разработчики Java также с большей вероятностью будут знать эту технологию и смогут обеспечить поддержку инфраструктуры. - person Nick; 13.01.2011

Недостатком является наличие нескольких технологий программирования для продукта, который, судя по тому, как вы его описали, еще даже не запущен, когда одна из них может соответствовать всем требованиям на данный момент, пока вы полностью не определите, как программа будет развиваться и изменяться. . То, как, по вашему мнению, все пойдет сегодня, не то, как все сложится, когда проект будет завершен. Создавая многоуровневую/многогранную среду выполнения программы, вы создаете кошмар для отладки, масштабирования и разработки. Отойдите от земли, а затем переопределите свои требования, чтобы увидеть, нужны ли эти чрезвычайно сложные структуры.

person Geoffrey Wagner    schedule 13.01.2011

Я обычно думаю, что это хороший подход, если вы можете справиться с дополнительной сложностью. Преимущества:

  • Разработка на PHP намного продуктивнее и проще в освоении, чем разработка на Java.
  • PHP, по моему опыту, часто лучше подходит для веб-требований.
  • У вас по-прежнему есть вся мощь Java в вашем бэкэнде
  • Это то, как это делает Facebook: (хотя они «прокачали» свой PHP http://developers.facebook.com/blog/post/358) front-End-> PHP, backend-> какой-то другой язык:http://developers.facebook.com/blog/post/354

Опять же, как указал Джеффри Вагнер, это добавляет много сложности, и вы должны быть уверены, что вам нужна такая настройка.

person wosis    schedule 13.01.2011
comment
Я согласен с вашей точкой зрения, если вы можете справиться с дополнительной сложностью. С моей точки зрения, это кажется сложной задачей, но вы и ваша компания могли бы быть гораздо лучше подготовлены к тому, чтобы справляться с дополнительными накладными расходами на программирование. Java очень мощный, а PHP — отличный внешний интерфейс, но оба могут выполнять работу друг друга за счет производительности и простоты кодирования в обоих направлениях. - person Geoffrey Wagner; 13.01.2011
comment
Я не думаю, что такая установка создает накладные расходы на программирование. На мой взгляд, проблема больше в том, чтобы предоставить инфраструктуру, которая поддерживает такие настройки и имеет одинаково хорошие ноу-хау в обеих средах. - person wosis; 13.01.2011