буферы протокола с клиентом C ++ и бэкэндом C #? - PullRequest
2 голосов
/ 14 июня 2010

Как подключить серверную часть C # к клиентской части C ++ через HTTP или эквивалент веб-службы?

Ответы [ 2 ]

1 голос
/ 14 июня 2010

Здесь три части; сервер (звучит как C #), клиент (звучит как C ++) и транспорт. Взять их по отдельности и начать с самого важного:

  • транспорт: большое решение здесь - в какой форме вы хотите, чтобы данные были. Вы упоминаете буферы протокола, поэтому мы говорим о двоичном коде, но это может быть:

    • необработанный поток октетов (подумайте: загрузка изображения с веб-сервера)
    • веб-сервис SOAP, возвращающий поток или байт []
    • тот же веб-сервис SOAP, возвращающий MTOM

    Любой должен работать; Выбор зависит от доступных инструментов. Важная вещь: получить кусок двоичного кода по проводам.

    Вам также нужно подумать об определении данных на этом этапе; .proto файл может определять вашу схему, и большинство реализаций протокольных буферов содержат инструмент для генерации соответствующих классов.

  • сервер: в зависимости от выбора выше, это будет либо обработчик (IHttpHandler), либо класс веб-службы. В любом случае, их задача - запустить некоторую логику и вернуть поток байтов. Как вы получаете ваши данные зависит от вас, то в конечном итоге работа заключается в заполнить типы DTO (во многих случаях сгенерированные из .proto, но не строго обязательно) и запустить его через API сериализации, записав результат в поток
  • клиент: то же самое в обратном порядке; сгенерируйте ваши DTO из .proto и запустите его через API десериализации

Здесь перечислены различные реализации protobuf (C ++, C # и т. Д.) здесь .

0 голосов
/ 14 июня 2010

C ++ получает доступ к открытым частям серверной части через HTTP-запросы, в какой форме вы выбираете (веб-сервис и другие).

...