Каков наилучший способ для приложения C # общаться приложения Unix C ++ - PullRequest
5 голосов
/ 12 сентября 2009

способы, которыми я могу думать

  1. Веб-сервис или мыло
  2. Разъем
  3. Таблица базы данных
  4. общий файл

Какой-нибудь краткий пример, который вы знаете о веб-сервисе?

Ответы [ 5 ]

4 голосов
/ 12 сентября 2009

Веб-службы или мыло было бы довольно легко, однако, если приложение C ++ не является веб-сервером естественным образом (или приложением C #), может быть проще просто использовать непосредственное программирование сокетов.

Сокеты довольно просты в использовании как на C #, так и на C ++. Они дают вам полный контроль над типом передаваемой даты, что может стоить немного больше работы в обработке.

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

3 голосов
/ 12 сентября 2009

Поскольку вы уже знаете о подходе к веб-сервисам и сокетам, я упомяну некоторые другие варианты. Если вам нравится простота, посмотрите XML-RPC . Так было в SOAP до того, как крупные комитеты по стандартизации и корпоративные интересы начали контролировать спецификацию. Вы можете найти реализации XML-RPC практически для всех основных языков программирования. Hessian - это интересный двоичный протокол, который имеет много поклонников и поддерживает практически все основные языки. Протокол буфера популярен в Google. Официальная версия от Google не поддерживает C #. Тем не менее, два самых выдающихся пользователя SO предоставляют порты protobuf для пространства .Net.

Я, вероятно, буду осмеян за это, но также взгляну на CORBA. Это не в моде в наши дни, но имеет много существенных технических достоинств, особенно если один конец общения - C ++. ИМХО, это WS- * с поддержкой OO и угловых скобок не требуется. Для взаимодействия, я думаю, что это все еще должно иметь место за столом. Когда я занимался разработкой на C ++, я обнаружил, что OmniOrb достаточно эффективен и действенен. Взгляните на этот SO Вопрос для некоторых указателей относительно использования CORBA в .Net.

1 голос
/ 12 сентября 2009

Вы хотите, чтобы он взаимодействовал друг с другом (например, через tcp (как указывали многие другие)) или вы хотите иметь возможность переводить объекты из C # в C ++? Если это так, проверьте Apache Thrift (http://incubator.apache.org/thrift/).

1 голос
/ 12 сентября 2009

вы можете использовать gsoap , чтобы программа на C / C ++ использовала веб-сервис.

Вы также можете вызвать программу cgi, написанную на C ++.

Я написал сервер на C, который обменивался данными с клиентом C #, и с помощью endianess может возникнуть боль, веб-сервисы намного проще.

1 голос
/ 12 сентября 2009

розетки самые простые; и я бы всегда пошел на это первым. Если база данных является опцией, это тоже тривиально, но это действительно зависит. Если это события в очереди, это имело бы смысл, но если это запрос / ответ, вероятно, это не так здорово.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...