Использование нескольких платформ в одном проекте - PullRequest
0 голосов
/ 01 декабря 2009

Я бы хотел использовать C #, Java и PHP в будущем проекте. Какие потенциальные ловушки я должен остерегаться? Есть ли преимущества в использовании нескольких платформ для проекта? Целевая группа разработчиков - люди с разным опытом, работающие в Интернете над этим проектом.

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

Мой план интеграции состоит в том, чтобы использовать 2 метода.

1.) Веб-сервисы (распространенные в php, .Net и JAVA)

2.) База данных MYSQL (общедоступно через PHP, .Net и JAVA)

Мой проект - это проект ERP + CRM для предприятий, где разработчики могут свободно кодировать на любой платформе, которую им нравится интегрировать и разрабатывать модули / плагины.

Ответы [ 11 ]

19 голосов
/ 01 декабря 2009

вы будете в беспорядке. выберите одну платформу и придерживайтесь ее.

5 голосов
/ 01 декабря 2009

Преимущества:

Некоторые технологии хороши для одних вещей и вредны для других. Использование нескольких технологий позволяет использовать сильные стороны нескольких технологий.

Недостатки:

Сложность. Объединение нескольких систем может привести к значительному увеличению сложности. (Это, как правило, перевесит преимущества)

3 голосов
/ 02 декабря 2009

Сценарий, который я мог бы использовать для совместного использования этих трех технологий, - это распределенная система с богатым графическим интерфейсом (C # в Windows), надежной серверной частью (EJB или аналогичной Java Framework) и веб-интерфейсом для удаленных пользователей (PHP). .

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

Лучшим подходом было бы использование основной функциональности продукта (вашего кода) на одной платформе. Затем предоставьте точки интеграции в виде веб-сервисов и буферных таблиц в MySQL, которые позволяют взаимодействовать с вашим приложением по определенным путям, и позволяют разработчикам, которые хотят писать плагины, использовать эту интеграцию на языке их предпочтений. Что касается интеграции с базой данных, разумным подходом может быть использование определенных таблиц для этой цели плюс хранимые подпрограммы, которые написаны для сопоставления этих таблиц с вашей внутренней структурой данных. Это даст вам гораздо лучшую инкапсуляцию, чем непосредственное запись модулей в вашу модель данных.

2 голосов
/ 01 декабря 2009

Правильное повторное использование кода уже является проблемой с кодом как есть, вы делаете это невозможным, выбирая три разных языка. Вы также гарантируете, что кто-то, работающий над одной частью проекта, не сможет легко перейти к работе над другой частью, если он также не знает этот язык ...

А как насчет взаимодействия с работающей системой, как вы планируете отлаживать вызовы, охватывающие три языка?

Insanity. Я согласен с наиболее часто задаваемым вопросом: неважно, что вы выберете, но выберите один и только один.

2 голосов
/ 01 декабря 2009

Я бы смешал эти технологии только в случае крайней необходимости. В противном случае вы тратите много времени на реализацию одних и тех же частей проблемы на разных языках и исправление ошибок, связанных с технологиями.

2 голосов
/ 01 декабря 2009

Хм. Если не справиться должным образом, это звучит как рецепт катастрофы:)

Почему три технологии? Существуют ли технические факты, требующие этого (например, то, что PHP слишком медленный для некоторых частей) или это просто из-за предпочтений людей, принимающих участие? В последнем случае я бы серьезно пересмотрел. Слишком много подводных камней и проблем на пути интеграции команды с тремя технологиями.

2 голосов
/ 01 декабря 2009

Вы должны использовать 1 платформу. Эти 3 платформы более или менее равны по функциональности. Как сказал jjnguy, у вас будет огромная сложность для небольшого возврата. У вас будет достаточно проблем и проблем, не сделав это искусственно сложным!

1 голос
/ 02 декабря 2009

Что касается части веб-сервисов, я думаю, что это была бы очень хорошая возможность предложить встроенную поддержку для веб-сервисов каждого языка, поскольку для стороны C # вы можете предоставлять сервисы WCF вместе с уже сгенерированными WSDL, используя svcutil и dll контракта данных это позволяет избежать всех проблем, которые обычно возникают при использовании общих классов, существующих на нескольких хостах служб.

1 голос
/ 01 декабря 2009

Я бы сказал, что PHP может быть хорошим выбором для использования вместе с C #, так как вы не сказали ASP.NET. Я никогда не пытался работать с такой функциональной совместимостью, но если вы используете PHP для своей логики представления пользовательского интерфейса и выполняете бэкенд / доступ к данным в C #, это все равно должно быть относительно поддерживаемым.

0 голосов
/ 01 декабря 2009

Одна проблема, с которой вы непременно столкнетесь, - это управление состоянием и сессиями; у каждой платформы есть свои способы сделать это, и они не будут общаться друг с другом очень хорошо, если вообще будут.

В общем, единственный способ оставаться в здравом уме в такой среде - это переключаться между платформами только в точках, где очевидна потребность в совместимости, таких как сервисные интерфейсы. Если это действительно многоуровневая среда (где «уровень» означает пересечение границ между машинами), то у вас есть чистая линия, которую вы можете нарисовать. В противном случае я согласен с остальными советами здесь; выберите одну платформу и придерживайтесь ее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...