Можно ли использовать WCF с / из нативных (C ++) приложений? - PullRequest
3 голосов
/ 08 декабря 2010

Что говорит вопрос. Как вы взаимодействуете с "миром" WCF из нативного приложения, для которого нет .NET?

РЕДАКТИРОВАТЬ: Извините, я должен был быть более конкретным, так как кажется, что WCF охватывает такой широкий спектр. Я думал о случае, когда у вас есть несколько приложений, использующих связь WCF / TCP в качестве механизма связи / IPC, и теперь вам нужно интегрировать нативное (C ++) приложение, которое не имеет .NET.

Ответы [ 5 ]

5 голосов
/ 08 декабря 2010

WCF не зависит от протокола - ну почти.Но вы должны учитывать это в том, как вы собираетесь общаться с WCF:

Пока вы можете отправлять сообщения так, как может использовать другая сторона, вы должны быть в порядке.

1)Связывание с именованным каналом: Правильно и трудно использовать вне .NET

2) Связывание TCP: Правильно и сложно использовать вне .NET

3) Привязка basicHttp: Это одноиз самых простых для реализации вне .NET

4) привязка wsHttp: пока у вас есть нативная библиотека, которая может создавать и принимать сообщения ws *, у вас все хорошо, но немного сложно.REST API: Это действительно самый простой , и я рекомендую этот , если у вас есть контроль над тем, какие услуги вам предоставляются .

5 голосов
/ 08 декабря 2010

Да, возможно , когда неуправляемое приложение C ++ может взаимодействовать с другими приложениями с помощью WCF. В моей конкретной ситуации я изменил устаревший исполняемый файл MFC для связи со службой Windows с помощью WCF.

Основная идея заключается в написании клиентского кода WCF в сборке .NET с использованием C #, поскольку это проще сделать таким образом. Затем используйте dll C ++ для преодоления разрыва между неуправляемым кодом C ++ и сборкой .NET.

У меня есть несколько пошаговых инструкций, как это сделать здесь .

2 голосов
/ 24 апреля 2014

Службы WCF можно использовать из собственного кода (без привязки к управляемому коду), используя API веб-служб Windows в ОС Windows 7 и Windows 2008 R2 или более поздней версии. WWSAPI - это реализация SOAP с собственным кодом, которая поддерживает семейство протоколов WS- * и .NET- * и минимальные затраты памяти.

WWSAPI включает в себя удобный WsUtil инструмент для генерации кода заглушки C для интерфейса из документа описания сервиса. Вы можете создать документ описания службы WSDL с помощью инструмента метаданных модели обслуживания SvcUtil, задокументированного здесь .

Существует также полезная статья MSDN blog , демонстрирующая, как вызывать службу WCF из собственного кода с помощью WWSAPI.

Если вы кодируете в C ++ 11 и ваша служба WCF предоставляет интерфейсы REST, то существует более современный альтернативный API (также от Microsoft) для использования служб REST, который называется Casablanca, документированный здесь MSDN и размещен в кодовом комплексе здесь .

1 голос
/ 30 сентября 2011

Проблема "Мир WCF", который не использует стандартный протокол SOAP. NetTcpBinding и NetNamedPipeBinding нужен какой-то неуправляемый управляемый мост, как описано. Так что ответ не явно "да". Это зависит от привязки, предоставляемой службой WFC.

0 голосов
/ 08 декабря 2010

Понятия не имею, о каком "мире WCF" ты говоришь.WCF можно использовать для реализации веб-служб SOAP с использованием старых форматов SOAP 1.1 или современного WS-Security.Итак, ваш вопрос звучит так: могу ли я вызвать веб-сервис SOAP из C ++, и ответ, очевидно, «да».

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