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

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Services Web Discussion :

Utiliser XML-RPC comme web services


Sujet :

Services Web

  1. #1
    Membre expérimenté
    Avatar de randriano
    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 219
    Points : 1 437
    Points
    1 437
    Par défaut Utiliser XML-RPC comme web services
    Bonjour,

    Bien que n'étant pas considéré comme une référence en matière de web services par rapport à REST et SOAP, j'ai choisi de l'utiliser car il a été facile de l'implémenter au niveau de mon serveur PHP.

    Le cas est donc que le serveur n'est pas de la technologie .NET mais PHP mais c'est le client qui est .NET, la plupart des CMS ou frameworks PHP offrent des librairies préfabriquées pour implémenter XML-RPC!
    De plus, j'ai trouvé un lien intéressant pour l'implémenter en C# et vb.net: http://www.xml-rpc.net

    Dommage, .NET regorge de fonctionnalités pour faire du web services SOAP (et REST) surtout sous Visual Studio, la technologie du serveur est mon facteur de blocage.
    randriano.dvp.com
    Développeur. Product Owner [Agile]. Sites web, mobile apps, système d'information (SI).

  2. #2
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Points : 8 080
    Points
    8 080
    Par défaut
    Euh? Y'a une question la dedans?

  3. #3
    Membre expérimenté
    Avatar de randriano
    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 219
    Points : 1 437
    Points
    1 437
    Par défaut
    Bonne question!

    En principe, je ne fais que narrer mais je me pose aussi la question de viabilité et "standardibilité" (mot qui n'existe pas) de mon système, est-ce que vous me conseillerez de migrer vers Soap plus tard?
    randriano.dvp.com
    Développeur. Product Owner [Agile]. Sites web, mobile apps, système d'information (SI).

  4. #4
    Membre habitué Avatar de danuz
    Homme Profil pro
    Expert .NET (WPF, Silverlight, Windows Phone) chez Soat
    Inscrit en
    Avril 2003
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Expert .NET (WPF, Silverlight, Windows Phone) chez Soat

    Informations forums :
    Inscription : Avril 2003
    Messages : 102
    Points : 153
    Points
    153
    Par défaut
    Ton intervention n'est pas très claire... Tu parles de PHP, .NET. Tu veux savoir quoi utiliser pour une technologie précise ? Comment mettre en place l'infrastructure ?

    En fait, pour pouvoir répondre à ce genre de question (après ce que j'ai compris de ton oratoire...), il y a plusieurs questions à se poser au préalable.

    Question Infrastructure ?
    C'est à dire, qu'est-ce que j'ai comme serveur (serveur PHP, IIS), quel langage, quelle base de données. Est-ce que mon infrastructure va changer, si oui, les langages. Pour quels clients ?

    Tu vas privilégier l'utilisation d'une technologie / création de services en fonction de ce que tu as, en fonction des clients qui consommeront tes services aussi.


    A propos du protocole XmlRpc, il a la chance d'être implémenté proposé dans plusieurs CMS en PHP, c'est vrai (WordPress, PHPBB, etc...).

    Pour d'autres CMS, des APIs sont implémentées (te retournant du json, du xml au choix). Ce qui facilite leur utilisation.

    Pour ma part, j'aime beaucoup quand des apis existent et renvoie par exemple du json (flux léger) ou du Xml. C'est plus simple pour récupérer les réponses et les transformer en des objets utilisables dans nos applications.

    XmlRpc recommande l'utilisation d'un proxy pour pouvoir effectuer des appels et récupérer les réponses.


    Le choix de la technologie, et des services à créer dépend de tes besoins, du temps, des ressources.

    Pose toi les bonnes questions quoiqu'il en soit !

    Bon courage .
    Ma réponse vous a aidé ? Pensez à voter pour elle. N'oubliez pas non plus de changer le statut de votre thread en Résolu.

    Mon blog
    Ma société: So@t

  5. #5
    Membre expérimenté
    Avatar de randriano
    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 219
    Points : 1 437
    Points
    1 437
    Par défaut
    Merci danuz pour cette analyse.

    Le cas est donc que l'on a déjà commencé à développer un serveur XML RPC (en PHP). Les clients sont des applications Windows sous .NET!

    J'ai créé ce fil car je me suis posé la question fondamentale: devrait-on utiliser un protocole applicatif existant (XML-RPC) ou développer un protocole adapté à nos besoins c'est à dire notre propre format XML? Vu qu'il y a déjà ce http://www.xml-rpc.net/ on a opté pour cet ancêtre du SOAP qu'est xml-rpc!
    randriano.dvp.com
    Développeur. Product Owner [Agile]. Sites web, mobile apps, système d'information (SI).

  6. #6
    Membre habitué Avatar de danuz
    Homme Profil pro
    Expert .NET (WPF, Silverlight, Windows Phone) chez Soat
    Inscrit en
    Avril 2003
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Expert .NET (WPF, Silverlight, Windows Phone) chez Soat

    Informations forums :
    Inscription : Avril 2003
    Messages : 102
    Points : 153
    Points
    153
    Par défaut
    Citation Envoyé par randriano Voir le message
    Merci danuz pour cette analyse.

    Le cas est donc que l'on a déjà commencé à développer un serveur XML RPC (en PHP). Les clients sont des applications Windows sous .NET!

    J'ai créé ce fil car je me suis posé la question fondamentale: devrait-on utiliser un protocole applicatif existant (XML-RPC) ou développer un protocole adapté à nos besoins c'est à dire notre propre format XML? Vu qu'il y a déjà ce http://www.xml-rpc.net/ on a opté pour cet ancêtre du SOAP qu'est xml-rpc!
    Etant donné que XMLRPC a de très bonnes spécifications, que vous avez déjà commencé à bosser dessus (implémentation du serveur), c'est le meilleur choix que d'implémenter votre propre format.
    En plus, XmlRpc.NET vous facilitera la vie pour vos clients.

    Tu attends d'autres réponses ou ça te va ? (^___^) ?
    Ma réponse vous a aidé ? Pensez à voter pour elle. N'oubliez pas non plus de changer le statut de votre thread en Résolu.

    Mon blog
    Ma société: So@t

  7. #7
    Membre expérimenté
    Avatar de randriano
    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 219
    Points : 1 437
    Points
    1 437
    Par défaut
    Euh, ça me va! Effectivement, les autres technologies à savoir SOAP et REST ne sont pas normalisées, ne disposant pas encore d'un site comme http://www.xmlrpc.com
    Le petit soucis c'est que souvent on dit toujours que XML-RPC est l'ancêtre de SOAP comme si c'était démodé.
    randriano.dvp.com
    Développeur. Product Owner [Agile]. Sites web, mobile apps, système d'information (SI).

  8. #8
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Points : 8 080
    Points
    8 080
    Par défaut
    Citation Envoyé par randriano Voir le message
    Euh, ça me va! Effectivement, les autres technologies à savoir SOAP et REST ne sont pas normalisées, ne disposant pas encore d'un site comme http://www.xmlrpc.com
    Le petit soucis c'est que souvent on dit toujours que XML-RPC est l'ancêtre de SOAP comme si c'était démodé.
    Plait-il? SOAP est spécifié:
    http://www.w3.org/standards/techs/soap#w3c_all

    Par contre, REST n'est pas une technologie, c'est un concept architectural.

  9. #9
    Membre expérimenté
    Avatar de randriano
    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 219
    Points : 1 437
    Points
    1 437
    Par défaut
    Oui c'est vrai, W3C a préféré SOAP parmi les protocoles existants. REST n'étant qu'une architecture

    Enfin, j'ai également lu le blog de So@t blog.soat.fr, voilà un autre lien intéressant que je n'ai pas trouvé par recherche, effectivement il faut mieux aller voir côté xml-rpc.net pour faciliter les choses
    randriano.dvp.com
    Développeur. Product Owner [Agile]. Sites web, mobile apps, système d'information (SI).

  10. #10
    Membre habitué Avatar de danuz
    Homme Profil pro
    Expert .NET (WPF, Silverlight, Windows Phone) chez Soat
    Inscrit en
    Avril 2003
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Expert .NET (WPF, Silverlight, Windows Phone) chez Soat

    Informations forums :
    Inscription : Avril 2003
    Messages : 102
    Points : 153
    Points
    153
    Par défaut
    Citation Envoyé par randriano Voir le message
    Oui c'est vrai, W3C a préféré SOAP parmi les protocoles existants. REST n'étant qu'une architecture

    Enfin, j'ai également lu le blog de So@t http://blog.soat.fr/2011/07/wp7-utiliser-une-api-xmlrpc-part1/, voilà un autre lien intéressant que je n'ai pas trouvé par recherche, effectivement il faut mieux aller voir côté xml-rpc.net pour faciliter les choses
    Haha, c'est mon article :-). La 2ième partie arrive avec XmlRpc.NET justement. je la publie lundi ou mardi. Reste à l'écoute :-).
    Ma réponse vous a aidé ? Pensez à voter pour elle. N'oubliez pas non plus de changer le statut de votre thread en Résolu.

    Mon blog
    Ma société: So@t

  11. #11
    Membre expérimenté
    Avatar de randriano
    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 219
    Points : 1 437
    Points
    1 437
    Par défaut
    Je relance encore le sujet car je ne veux pas créer un nouveau sujet pour la question suivante.

    Comment sécuriser l'utilisation du XML-RPC? En fait, je veux que seules les applications dotnet de notre réseau aient le droit d'accéder aux procédures distantes. Or XML-RPC a le risque que si quelqu'un connait les URL des procédures, il peut les utiliser à sa guise.

    Est-ce XML-RPC.NET supporte une connexion SSL c'est à dire l'adresse du serveur commence par https:// ?

    Merci d'avance
    randriano.dvp.com
    Développeur. Product Owner [Agile]. Sites web, mobile apps, système d'information (SI).

  12. #12
    Membre habitué Avatar de danuz
    Homme Profil pro
    Expert .NET (WPF, Silverlight, Windows Phone) chez Soat
    Inscrit en
    Avril 2003
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Expert .NET (WPF, Silverlight, Windows Phone) chez Soat

    Informations forums :
    Inscription : Avril 2003
    Messages : 102
    Points : 153
    Points
    153
    Par défaut
    Xml-Rpc.net supporte les Headers. (^__^)

    Cela veut dire que tu peux par exemple utiliser une authentification HTTP basique pour pouvoir sécuriser ton serveur. A voir !

    Concernant les URL en https, ouii !
    Ma réponse vous a aidé ? Pensez à voter pour elle. N'oubliez pas non plus de changer le statut de votre thread en Résolu.

    Mon blog
    Ma société: So@t

  13. #13
    Membre expérimenté
    Avatar de randriano
    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 219
    Points : 1 437
    Points
    1 437
    Par défaut
    C'est souvent la solution qui est proposée sur le net: l'authentification http basique! Le soucis c'est qu'il faut donc configurer une partie site web et une partie qui n'est accessible que par user:password@www.monsite.com

    Puisque le SSL est supporté c'est déjà bien

    danuz>J'ai un petit soucis si tu peux m'aider:
    J'ai créé un nouveau projet avec xml-rpc.net et j'ai bien ajouté le dll assembly mais l'erreur suivante persiste:
    The type or namespace name 'IXmlRpcProxy' could not be found (are you missing a using directive or an assembly reference
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    using System;
    using CookComputing.XmlRpc;
     
    [XmlRpcUrl("http://127.0.0.1/monsite/xmlrpc_server")]
    public interface IMyApi : IXmlRpcProxy
    {
        [XmlRpcMethod("IsUserValid")]
        int IsUserValid(string request);
    }
    randriano.dvp.com
    Développeur. Product Owner [Agile]. Sites web, mobile apps, système d'information (SI).

  14. #14
    Membre habitué Avatar de danuz
    Homme Profil pro
    Expert .NET (WPF, Silverlight, Windows Phone) chez Soat
    Inscrit en
    Avril 2003
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Expert .NET (WPF, Silverlight, Windows Phone) chez Soat

    Informations forums :
    Inscription : Avril 2003
    Messages : 102
    Points : 153
    Points
    153
    Par défaut
    Alors, déjà, tu ne peux pas pour la version mobile utiliser IXmlRpcProxy. Tu dois faire ton proxy hériter de XmlRpcClientProtocol (obligé pour la version Windows Phone et Silverlight aussi je crois).

    Ensuite, ne mets pas les attributs XmlRpc sur ton interface. ça ne sert à rien et ça ne fonctionnera pas. Il faudra les mettre que sur ton proxy.

    Et parce que des exemples visuels parlent mieux (en attendant que je finisse de rédiger mon article), voici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
     
    public interface IPostServiceProxy
        {
            IAsyncResult BeginGetThread(string topic_id, int start_num, int last_num, AsyncCallback callback);
     
            IAsyncResult BeginGetThread(string topic_id, int start_num, int last_num, bool return_html, AsyncCallback callback);
     
            XmlRpcStruct EndGetThread(IAsyncResult iasr);
        }
     
     
        [XmlRpcUrl("http://www.monurl.com")]
        public class PostServiceProxy : XmlRpcClientProtocol, IPostServiceProxy
        {
            [XmlRpcBegin("get_thread")]
            public IAsyncResult BeginGetThread(string topic_id, int start_num, int last_num, AsyncCallback callback)
            {
                object[] parameters = new object[] { topic_id, start_num, last_num };
                return this.BeginInvoke(MethodBase.GetCurrentMethod(), parameters, callback, null);
            }
     
            [XmlRpcBegin("get_thread")]
            public IAsyncResult BeginGetThread(string topic_id, int start_num, int last_num, bool return_html, AsyncCallback callback)
            {
                object[] parameters = new object[] { topic_id, start_num, last_num, return_html };
                return this.BeginInvoke(MethodBase.GetCurrentMethod(), parameters, callback, null);
            }
     
            [XmlRpcEnd]
            public XmlRpcStruct EndGetThread(IAsyncResult iasr)
            {
                var result = (XmlRpcStruct)this.EndInvoke(iasr);
                return result;
            }
        }
    ça te montrera quelle approche avoir.

    Concernant la méthode qui permet de finaliser l'appel de ta méthode asynchrone, le type de retour dépend de ce que te renvoie ta méthode XmlRpc. Dans mon cas ici, c'est un objet de type struct (Rpc). C'est pour ça que j'ai un XmlRpcStruct.

    ça devrait t'aider davantage.

    Bon courage!
    Ma réponse vous a aidé ? Pensez à voter pour elle. N'oubliez pas non plus de changer le statut de votre thread en Résolu.

    Mon blog
    Ma société: So@t

  15. #15
    Membre expérimenté
    Avatar de randriano
    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 219
    Points : 1 437
    Points
    1 437
    Par défaut
    Merci danuz pour ces réponses

    Je ne développe pas sur mobile mais sur un PC, le soucis c'est vraiment que l'assembly reference semble être mal ajouté alors c'est bien présent dans la liste des références du projet.

    J'ai pas bien compris c'est qu'il faut procéder d'une autre manière pour accéder à un serveur local?
    randriano.dvp.com
    Développeur. Product Owner [Agile]. Sites web, mobile apps, système d'information (SI).

  16. #16
    Membre habitué Avatar de danuz
    Homme Profil pro
    Expert .NET (WPF, Silverlight, Windows Phone) chez Soat
    Inscrit en
    Avril 2003
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Expert .NET (WPF, Silverlight, Windows Phone) chez Soat

    Informations forums :
    Inscription : Avril 2003
    Messages : 102
    Points : 153
    Points
    153
    Par défaut
    C'est ma faute, je réponds à plusieurs threads dans des forums différents (^__^).

    Sinon, si tu ne trouves pas cette interface, c'est que tu as la mauvaise version de la librairie. Tu dois absolument avoir la version 3.0.0.241

    Sinon, le code va un peu changer. Tu n'auras pas besoin de client proxy.

    Concernant ton interface, c'est comme tu avais déjà si bien commencé.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    [XmlRpcUrl("http://tonurllocale")]
        public interface IPostService : IXmlRpcProxy
        {
            [XmlRpcBegin("get_thread")]
            IAsyncResult BeginGetPosts(string id, int start, int last);
     
            [XmlRpcBegin("get_thread")]
            IAsyncResult BeginGetPosts(string id, int start, int last, bool shouldReturnHtml);
     
            [XmlRpcEnd]
            XmlRpcStruct EndGetPosts(IAsyncResult iasr);
        }
    et pour son utilisation

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
        var proxy = XmlRpcProxyGen.Create<IPostService>();
        var asyncResult = proxy.BeginGetPosts("4671", 0, 30);
        var result = proxy.EndGetPosts(asyncResult);
    Ma réponse vous a aidé ? Pensez à voter pour elle. N'oubliez pas non plus de changer le statut de votre thread en Résolu.

    Mon blog
    Ma société: So@t

Discussions similaires

  1. Où se trouve le problème en utilisant http get+xml comme web service?
    Par kisitomomotene dans le forum XML/XSL et SOAP
    Réponses: 1
    Dernier message: 17/01/2011, 19h44
  2. Utilisation de Jasperserver et Web Services
    Par mbinte dans le forum Jasperserver
    Réponses: 0
    Dernier message: 26/08/2008, 10h54
  3. Envoi d'un fichier XML vers un Web Service
    Par Agrumes dans le forum Linux
    Réponses: 2
    Dernier message: 06/02/2008, 15h09
  4. Est il possible de dployer tout un projet comme Web Service?
    Par KING_OF_GRACELAND dans le forum Services Web
    Réponses: 2
    Dernier message: 18/12/2007, 17h15
  5. Pouvez-vous me citer un exemple de site qui utilise XML-RPC ?
    Par mtaveau dans le forum Général Conception Web
    Réponses: 4
    Dernier message: 11/09/2006, 22h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo