Использование protobuf в сервисах WCF

Используйте массив std::wstring вместо массива переменной длины C99. Текущий стандарт гарантирует непрерывный буфер для std::basic_string. Например,

std::wstring wc( cSize, L'#' );
mbstowcs( &wc[0], c, cSize );

C ++ не поддерживает массивы переменной длины C99, поэтому, если вы скомпилировали свой код как чистый C ++, он даже не компилируется.

Сменив эту функцию

Не забудьте установить соответствующий язык в main.

Например, setlocale( LC_ALL, "" ).

Cheers & amp; HTH.,

16
задан Steve Chapman 25 April 2009 в 22:10
поделиться

3 ответа

Краткий ответ - «да» ...

Сама спецификация буферов протокола не обеспечивает стек RPC, но некоторые были добавлены за пределы спецификации.

Во-первых, protobuf-net имеет хуки для WCF, позволяющие пометить операции в контракте на обслуживание как ProtoBehavior . Затем это заменяет обычный DataContractSerializer на использование сериализации protobuf-net. Однако есть некоторые предостережения:

  • ваши члены-данные должны иметь явный порядок (например, [ProtoMember (Order = 1)] ), поскольку он использует эти числа в качестве идентификаторов полей (буферы протокола используют числовые значения). поля)
  • лучше всего работает с совместным использованием сборок / классов (контракта на обслуживание и т. д.), поскольку это пользовательское поведение не отображается в «mex»

При использовании с базовым транспортом http, это также совместимо с MTOM (если включено) для максимальной производительности. Производительность нетривиальных сообщений во многом пропорциональна их размеру; Вы можете получить представление о размерах протобуф-сети здесь .

Кроме того, я также работаю над стеком RPC на заказ. Текущая сборка имеет рабочий стек по протоколу http, но я также планирую включить его в сыром TCP / IP, когда у меня будет такая возможность. У меня еще не было возможности написать это, но я могу предоставить примеры по запросу. Обратите внимание, что для наиболее удобного использования вам также понадобится библиотека расширений 3.5.

Любые вопросы, добавьте комментарий или напишите мне (см. Мой профиль).

s размеры здесь .

В качестве альтернативы, я также работаю над стеком RPC на заказ. Текущая сборка имеет рабочий стек по протоколу http, но я также планирую включить его в сыром TCP / IP, когда у меня будет такая возможность. У меня еще не было возможности написать это, но я могу предоставить примеры по запросу. Обратите внимание, что для наиболее удобного использования вам также понадобится библиотека расширений 3.5.

Любые вопросы, добавьте комментарий или напишите мне (см. Мой профиль).

s размеры здесь .

В качестве альтернативы, я также работаю над стеком RPC на заказ. Текущая сборка имеет рабочий стек по протоколу http, но я также планирую включить его в сыром TCP / IP, когда у меня будет такая возможность. У меня еще не было возможности написать это, но я могу предоставить примеры по запросу. Обратите внимание, что для наиболее удобного использования вам также понадобится библиотека расширений 3.5.

Любые вопросы, добавьте комментарий или напишите мне (см. Мой профиль).

28
ответ дан 30 November 2019 в 12:36
поделиться

Вы также можете взглянуть на использование привязки на основе TCP, если нет необходимости предоставлять сервис WCF за пределами внутренней сети.

2
ответ дан 30 November 2019 в 12:36
поделиться

См. protobuf-net .

protobuf-net является реализацией .NET, позволяющей вам сериализуйте ваши .NET объекты эффективно и легко. Это совместимо с большей частью семейства .NET, включая .NET 2.0 / 3.0 / 3.5, .NET CF 2.0 / 3.5, Mono 2.x, Silverlight 2 и т. Д.

0
ответ дан 30 November 2019 в 12:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: