2010-06-14 2 views
2

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

+0

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

+0

Я делаю проект MFC/C++ с back-end C#. Нужен какой-то способ поговорить между C# и C++ по HTTP – buttercup

+0

OK; почему не только SOAP ...? Я прошу убедиться, что мы не ведем вас по неправильному пути. Конечно, protobuf * может * помочь в этой настройке, особенно если вы ограничены пропускной способностью или процессором, но для многих сценариев SOAP может быть проще. –

ответ

1

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

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

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

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

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

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

Различные реализации Protobuf (C++, C# и т.д.) перечислены here.

+0

Я видел их всех. Вы принимаете paypal, чтобы написать пример с открытым исходным кодом, который демонстрирует использование C++ и C# вместе в веб-сервисе? – buttercup

+0

@buttercup - Я действительно недостаточно хорош на C++, чтобы помочь с этим. Я могу показать вам получение данных protobuf на проводе с C#, * sure *. Тогда это должен быть просто деконструкция из C++. Существует (IIRC) большое количество документации на C++, или, может быть, публикация в конкретной группе может помочь: http://groups.google.com/group/protobuf –

+0

@buttercup - на основе вашего пункта «оплаты» об избежании SOAP, Я бы также предположил, что исходный поток октетов - это способ пойти в этом случае. –

0

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

+0

У вас есть пример или более полный пример? Я не мог найти его. – buttercup

+0

У вас есть пример back-end C# или, по крайней мере, как это должно быть. – buttercup

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