Оптимизированный способ выполнения RPC в .Net

Я подумываю перенести части приложения .Net на другие компьютеры. Очевидный способ сделать это - просто использовать WCF с двоичным протоколом tcp, например, как описатель в « Самый простой способ получить быстрый RPC с .NET? ».

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

Я думаю, что лучший способ - создать собственный двоичный протокол, в котором команды API идентифицируются как int16 и порядковый номер, за которым следуют обязательные параметры. Жесткое подключение классов отправки и получения устранит любые ненужные накладные расходы.

Но это ОЧЕНЬ много работы, поскольку мы говорим о нескольких сотнях команд API.

Есть ли какие-нибудь мысли о том, как лучше всего реализовать это?

Изменить: По сути, на одном компьютере будет работать симулятор физики, а другие будут взаимодействовать с ним, используя API из нескольких сотен команд.

Я думаю, что лучший способ - создать собственный двоичный протокол, в котором команды API идентифицируются с помощью int16 и порядковый номер, за которым следуют обязательные параметры. Жесткое подключение классов отправки и получения устранит любые ненужные накладные расходы.

Но это ОЧЕНЬ много работы, поскольку мы говорим о нескольких сотнях команд API.

Есть ли какие-нибудь мысли о том, как лучше всего реализовать это?

Изменить: По сути, на одном компьютере будет запущен симулятор физики, а другие будут взаимодействовать с ним, используя API из нескольких сотен команд.

Я думаю, что лучший способ - создать собственный двоичный протокол, в котором команды API идентифицируются как int16 и порядковый номер, за которым следуют обязательные параметры. Жесткое подключение классов отправки и получения устранит любые ненужные накладные расходы.

Но это ОЧЕНЬ много работы, поскольку мы говорим о нескольких сотнях команд API.

Есть ли какие-нибудь мысли о том, как лучше всего реализовать это?

Изменить: Чтобы уточнить: сериализация AFAIK в .Net не оптимизирована. Есть относительно высокие потери при сериализации и десериализации объектов, например, при внутреннем использовании Reflection. Это то, чего я хочу избежать, и, следовательно, мои мысли о методах прямого сопоставления (аппаратного подключения).

После некоторого поиска я нашел одно приложение, которое смутно припомнил: http: //www.protocol- builder.com/[1220 visible

6
задан Community 23 May 2017 в 11:47
поделиться