Я хотел бы, чтобы мое более новое приложение C# 2.0 говорило с моим более старым приложением Java 1.4 (не может изменить версии, извините). Каковы мои опции?
Я думаю, что использование общей памяти дало бы мне лучшую производительность, но с другой стороны, если бы я использую сетевой протокол затем, архитектура была бы более гибкой. Таким образом, я надеюсь уравновешивать обе опции видеть, который имеет самую большую плату прочь.
Я использовал реализации XML-RPC, которые являются медленной собакой, но я предполагаю, что это было просто плохой реализацией а не действующим протоколом. Я был бы более обеспеченным движением с протоколом нижнего уровня? Я использовал protobuf Google прежде в C++ и Python (по простым сокетам), но я не так уверен, что это доступно для Java, и C# - является там чем-либо подобным, доступным для языков, которые я использую?
Я ищу лучшую производительность, которую я могу возможно получить, но, я работаю с иерархиями объектов и иерархиями наследования, которые я хотел бы сериализировать (protobuf, хороший пример того, как это может быть сделано). Так, к сожалению, просто отправка простой строки по сокетам не действительно выполнима.
вы также можете рассматривать JSON как сериализацию для ваших объектов, намного легче, чем XML, но те же возможности для представления иерархий объектов и многие библиотеки доступны.
для коммуникационной шины, однако, я бы порекомендовал сеть, поскольку она обеспечивает большую гибкость.
IMHO, ваше узкое место в производительности больше связано с сериализацией / десериализацией, чем с самой коммуникационной шиной.
Ага, на самом деле есть версии protobuf для C #!
... и protobuf в любом случае поддерживает Java .