2010-07-01 5 views
1

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

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

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

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

+0

Буферы протокола доступны как для Java, так и для C#, fyi. – dsolimano

+0

WCF или поддерживает только 3,5? – Jonathan

+0

Оригинальный WCF - это .NET 3.0, который в основном является .NET 2.0, за исключением того, что он содержит фрагменты, необходимые для WCF, WFF и, возможно, некоторых других инструментов. Любое решение 2.0 должно иметь возможность использования WCF. Однако обновление до NET4 следует серьезно рассматривать, особенно для усовершенствований WCF в нем, помимо всего остального, для NET4 awesomeness. Но если это небезопасно из-за стоимости Visual Studio 2010 или какой-то подобной причины, WCF должен по-прежнему использоваться на вашей текущей платформе. –

ответ

1

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

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

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

+0

Да, я думаю, что согласен - однако, когда данные были переданы, CPU не выдавал, поэтому я могу только предположить, что сериализация была настолько бедна, что она не использовала все доступные ресурсы. Grr! –

Смежные вопросы