IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Est-il possible de développer des services Web en C++ ?

Toutes les semaines un peu de code pour aller plus loin avec Windows 7

Retrouvez l'intégralité des questions/réponses sur le développement sous Windows 7 dans l'article suivant.

Commentez cet article : 41 commentaires Donner une note à l´article (5)

Article lu   fois.

Les deux auteurs

Profil Pro

Liens sociaux

Viadeo Twitter Facebook Share on Google+   

I. Est-il possible de développer des services Web en C++ ?

Une nouvelle API est disponible avec Windows, WWSAPI (Windows Web Service API) qui permet aux développeurs natifs (C/C++) d'implémenter :

  • des clients ou des services Web sans adhérence avec la plate-forme .NET ;
  • interopérer avec les standards des services Web, WCF, Web Services ASP.NET et même d'autres services qui tournent sur des systèmes d'exploitation autres que Windows.

Pour créer un client à un service Web, dans un premier temps, il faut obtenir ses métadonnées à l'aide de l'outil svcutil.exe.

 
Sélectionnez
svcutil /t:metadata <point d'entrée du service web>

Des fichiers wsdl et wsd contenant les métadonnées du service sont créés.

Ensuite il faut créer le proxy client à l'aide de l'outil wsutil.exe

 
Sélectionnez
wsutil.exe *.wsdl *.xsd

Sont alors créés, des fichiers d'entête (.H) contenant la structure des messages à envoyer et du code source (.C) contenant les appels de méthodes du service. Ces deux derniers fichiers seront à inclure dans votre projet.

Par exemple, pour initialiser un proxy web en C++ avec WWSAPI.

 
Sélectionnez
WS_ERROR* _wsError;
WS_HEAP* _wsHeap;
WS_SERVICE_PROXY* _wsServiceProxy;

HRESULT hr;        
hr=WsCreateError (NULL,0,&_wsError);
if (FAILED(hr)) return hr;        
hr=WsCreateHeap (SIZE_T_MAX,0,NULL,0,&_wsHeap,_wsError);
if (FAILED(hr))
{
    LibererRessourcesServiceWeb();
    return hr;
}            
WS_HTTP_BINDING_TEMPLATE templateValue={};

hr=LiveSearchPortBinding_CreateServiceProxy (   
    &templateValue,
    NULL,0,
    &_wsServiceProxy, 
    _wsError);         

if (FAILED(hr))
{
    LibererRessourcesServiceWeb();
    return hr;
}

WS_ENDPOINT_ADDRESS address={};    
WS_STRING Url=WS_STRING_VALUE(L"http://api.search.live.net:80/soap.asmx");
address.url=Url;
    
hr=WsOpenServiceProxy (_wsServiceProxy ,&address,NULL,_wsError);

void LibererRessourcesServiceWeb ()
{
    if (_wsError!=NULL)
        WsFreeError (_wsError);
    if (_wsHeap!=NULL)
        WsFreeHeap (_wsHeap);    
    if (_wsServiceProxy !=NULL)
    {        
        WsFreeServiceProxy (_wsServiceProxy);
    }
}

Pour plus d'infos :

Vous avez aimé ce tutoriel ? Alors partagez-le en cliquant sur les boutons suivants : Viadeo Twitter Facebook Share on Google+   

Copyright © 2011 Microsoft MSDN France. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts. Droits de diffusion permanents accordés à Developpez LLC.