Что такое хороший уровень связи для Java и C #? - PullRequest
1 голос
/ 01 июля 2010

Я бы хотел, чтобы мое новое приложение на C # 2.0 взаимодействовало с моим более старым приложением Java 1.4 (не могу изменить версию, извините). Какие у меня варианты?

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

Я использовал реализации XML-RPC, которые очень медленны, но я предполагаю, что это была просто плохая реализация, а не реальный протокол. Будет ли мне лучше использовать протокол более низкого уровня? Я уже использовал протобуф Google в C ++ и Python (поверх простых старых сокетов), но я не уверен, что он доступен для Java и C # - есть ли что-нибудь похожее для языков, которые я использую?

Я ищу наилучшую производительность, какую только могу получить, но я работаю с объектами и иерархиями наследования, которые я хотел бы сериализовать (protobuf - хороший пример того, как это можно сделать). Так что, к сожалению, просто отправить простую строку через сокеты на самом деле неосуществимо.

Ответы [ 2 ]

1 голос
/ 01 июля 2010

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

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

ИМХО, ваше узкое место в производительности связано с сериализацией / десериализацией больше, чем с самой коммуникационной шиной.

1 голос
/ 01 июля 2010

Ага, на самом деле есть версии C # protobuf!

... и protobufв любом случае имеет поддержку Java.

...