Ответ 1
Короткий ответ - "да"...
Сама спецификация буферов протокола не предоставляет стек RPC, но некоторые были добавлены за пределы спецификации.
Во-первых, protobuf-net имеет перехваты для WCF, что позволяет отмечать операции по вашему контракту на обслуживание как ProtoBehavior
. Затем он заменяет обычный DataContractSerializer
для использования сериализации protobuf-net. Однако есть некоторые оговорки:
- ваши данные-члены должны иметь явный порядок (например,
[ProtoMember(Order = 1)]
), так как он использует эти числа в качестве идентификаторов полей (буферы протокола используют числовые поля) - он лучше всего работает с совместным использованием сборки/класса (контракта на обслуживание и т.д.), поскольку это обычное поведение не отображается на "mex"
При использовании с основным переносом HTTP это также совместимо с MTOM (если включено) для максимальной пропускной способности. Выполнение нетривиальных сообщений в значительной степени пропорционально их размеру; вы можете получить представление о размерах protobuf-net здесь.
В качестве альтернативы я также работаю над созданным на заказ пакетом RPC. текущая сборка имеет рабочий стек поверх http, но я также планирую включить его на raw TCP/IP, когда я получаю шанс. У меня еще не было возможности написать его, но я могу предоставить примеры по запросу. Обратите внимание, что использовать его наиболее удобно, вам также понадобится dll 3.5 "расширения.
Любые вопросы, добавьте комментарий или напишите мне (см. мой профиль).