Toon posts:

[XML-RPC] Heeft iemand er ervaring mee?!

Pagina: 1
Acties:
  • 609 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Hallo,

ik wil graag op mijn hosted site een xml-socketserver gaan draaien voor een swf chat! Nou ben ik al flink aan het zoeken geweest en heb al een berg info verzameld!

Waar onder dus xmlrpc zie: http://www.xmlrpc.com

Maare ik kom er gewoon ff niet uit hoe dit zou moeten werken! Hoe zit het met clientside en serverside?
Dat snap ik niet helemaal...

Als iemand tips heeft of me verder wil helpen hoor ik het graag!

mzzl

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
XML-RPC is een gewoon een protocol voor het aanroepen van remote procedures. Je kunt het in principe zien als een eenvoudige vorm van web-services. Je kunt naar een web-service/procedure via het HTTP protocol een message sturen. Deze message is in een in XML-RPC formaat. Je krijgt ook antwoord terug in XML-RPC formaat.

Je communiceert dus volledig met behulp van kleine boodscappen met de XML syntax en volgens een standaard document-type. In de spec kan je zien hoe die message er ongeveer uit zijn: http://www.xmlrpc.com/spec

XML-RPC is vrij eenvoudig en biedt niet erg veel complexe data-typen, maar de eenvoud ervan is ook juist de grote kracht van XML-RPC ten opzichte van bijvoorbeeld SOAP :) .

Ik werk zelf meer met SOAP, simpelweg omdat XML-RPC te beperkt is voor hetgene waar ik mee bezig ben. Als je echter alleen eenvoudige data wilt uitwisselen is XML-RPC een uitstekende keuze!

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
De leus op de site spreekt trouwens voor zich:
"Does distributed computing have to be any harder than this? I don't think so."
XML-RPC is een stuk eenvoudiger dan SOAP, wat nogal een complexe aangelegenheid is.

Ik had het grote voordeel van XML-RPC trouwens nog niet genoemd: gebaseerd op bekende en eenvoudige standaarden die van alle platformen te gebruiken zijn: HTTP en XML.

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


Verwijderd

Topicstarter
Bedankt voor je reply,

Wat ik dus niet helemaal snap is severside en clientside gebeuren...

Kneem aan dat je toch serverside het 1 en ander moet opzetten? Of bied xml-rpc alleen maar een client?

Ik ben misschien een beetje nOOb op gebied van dit...

SOAP klinkt bekend! Ik wil een chat maken in flash met een xml-socketserver denk je dat ik wat aan xml-rpc heb?
Ze hebben ewel een flashclient met xml-parser

mzzl

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
loaded: Wat ik dus niet helemaal snap is severside en clientside gebeuren...

Kneem aan dat je toch serverside het 1 en ander moet opzetten? Of bied xml-rpc alleen maar een client?
XML-RPC is een protocol voor het versturen van een request (naar een server meestal) en het krijgen van een antwoord (van de server meestal). Je zult dus inderdaad server-side een systeem moeten hebben die de request verwerkt en een response opbouwt. Je kunt dit in principe allemaal doen door gewoon XML te parsen, maar je kunt beter proberen om een XML-RPC library te vinden voor de omgeving waarmee je werkt. Voor Java zijn dergelijke libraries er wel en die maken het leven een stuk makkelijker :) .
Ik wil een chat maken in flash met een xml-socketserver denk je dat ik wat aan xml-rpc heb?
Ik heb geen idee wat jij met een xml-socketserver bedoelt ;) . Je kunt XML-RPC in ieder geval op vrijwel alle mogelijke manieren en in vrijwel elk platform gebruiken.
Ze hebben ewel een flashclient met xml-parser
Die kan je dan goed gebruiken om antwoorden van de server in te lezen :) .

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


Verwijderd

Topicstarter
In ieder geval al een stuk meer duidelijkheid!
bedankt daarvoor!

Ik heb een chat gemaakt in flash/php op:
http://www.lodesite.nl/chat
kweet dat ie nog niet helemaal goed werkt!
Heb nog wel wat php ideeen, maar hoop het dus met xml stuff te gaan doen!

Deze werkt d.m.v. continu refreshen van de ingelezen php-waardes en is ook een beetje erg database onvriendelijk! Kheb gehoord dat je met een xml-socketserver zoaals men dat noemde berichten vanaf surfer kan pushen naar iedere of 1 specifieke online surfer...

Dat moet ik dus hebben voor de chat!
Ik heb daarover al het 1 en ander gelezen en een paar tutjes. Kheb van xml-rpc de php files en de flashclient.
Maare daarin vind ik nergens waar je een ip,port,database of iets dergelijks moet opgeven, vandaar...

Ohh kweet dat er veel mogelijkheden zijn met java, maare dat kan ik op mijn gehoste domein volgens mij niet draaien!
php is clientside, dus dat wordt het waarschijnlijk ook niet, maar zal iets van vb of perl worden, ben ik alleen nog niet zo in thuis!

Heb je enig idee hoe iets dergelijks op te zetten?

Verwijderd

Helaas heb ik geen idee. Maar wel ben ik erg nieuwsgierig ... ben die docs van xmlrpc nu even aan het lezen. Hoop dat anderen idd hier interessante info over hebben!

(oh trouwens loaded: als ik op jouw thingy inlog krijg ik telkens, met welke naam dan ook, alleen het bericht dat ik al ben ingelogd :? )

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
loaded: In ieder geval al een stuk meer duidelijkheid!
Mooi :) .
php is clientside, dus dat wordt het waarschijnlijk ook niet, maar zal iets van vb of perl worden, ben ik alleen nog niet zo in thuis!
PHP is server-side uiteraard... Je hebt nog twee problemen:

1. Je moet als client in staat zijn om berichten te ontvangen van de server. Als je dit niet kan, moet je steeds gaan pollen op de client en dat is dus erg lelijk. Je moet dus eigenlijk de client dus ook server laten spelen. De server moet in staat zijn om een HTTP message naar de client te sturen. Hiervoor moet je op de client dus een server-socket aanmaken die deze message kan verwerken.

2. XML-RPC server-side: je moet de XML-RPC berichten van de clients opvangen en eventueel nieuwe berichten sturen naar de andere bekende clients. Dat kan in principe ook allemaal in PHP als je geen Java hosting mogelijkheden hebt. XML-RPC is namelijk niets engs: het gebruikt gewoon het HTTP protocol voor transport. Je zult in je PHP code de berichten waarschijnlijk moeten parsen naar een DOM. Deze DOM moet je gaan gebruiken om te bepalen wat de client tegen jou probeert te zeggen.

Houdt in de gaten dat XML-RPC in principe gewoon het remote aanroepen van een metode is. Het is dus ook het mooiste als je dit server-side en client-side zo implementeert en het verwerken van een bericht dus scheidt van het uitvoeren van de echte aktie :) .

Verder: ik zou eerst eens wat experimenteren met een eenvoudige web-service die een XML-RPC bericht accepteerd en daarna een XML-RPC response oplevert. Je moet je denk ik niet gelijk gaan bezighhouden met alle complicerende factoren die bij een chat spelen :) .

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


  • tomato
  • Registratie: November 1999
  • Niet online
Wat moet ik hier nog op zeggen na mbravenboer? ;)

Toch wel iets misschien:

1) XML-RPC is heel mooi :+

2) Ik betwijfel of XML-RPC is wat je voor je flash-chatbox wilt gebruiken

3) Maar alles kan :+


Wat je in een chatbox eigenlijk wilt is een constante verbinding (met de server, of met de andere client(s)). Dit is echter niet waar XML-RPC voor bedoeld is, of beter gezegd, niet waar HTTP voor bedoeld is (XML-RPC maakt gebruik van HTTP).

In het HTTP protocol stuur je een REQUEST en krijg je een RESPONSE terug. Einde actie. En dan weer opnieuw.
Door deze aard van HTTP is XML-RPC een synchroon systeem: op een REQUEST volgt altijd precies een RESPONSE en de client moet wachten op die RESPONSE (wat lang of kort kan duren, misschien komt er zelfs nooit meer iets terug).
Je kunt van XML-RPC met enige moeite denk ik wel een asynchroon systeem bouwen, maar er komt dan enige complexiteit bij kijken die je gewoonlijk mooi mist met XML-RPC.

Verder is XML-RPC (wederom door het gebruik van HTTP) stateless. Dit betekent dat een REQUEST geen context kent en dus altijd op zichzelf staat. Veel webapplicaties lossen dit op door uiteenlopende vormen van SESSIONS te gebruiken. XML-RPC heeft hier uit zichzelf geen voorzieningen voor, maar wanneer je hier wel behoefte aan hebt (wat ik me voor kan stellen bij een chatapplicatie) lijkt me dit vrij gemakkelijk te implementeren.


Mij lijkt een RPC techniek dus gewoon niet precies wat je zoekt, maar het is wel mogelijk.

Zoals mbravenboer al zag is het toch wel vrij noodzakelijk dat de server en de clients beiden REQUESTS kunnen ontvangen. In een XML-RPC call moeten ze dus beiden voor server en voor client kunnen spelen.

Je had zelf al een Flash implementatie gevonden van een XML-RPC Client, maar ik betwijfel of het mogelijk is om in Flash een XML-RPC Server op te zetten (en al helemaal of er iemand een implementatie voor je heeft).

De chatserver moet op zich niet zo'n probleem zijn. Voor Java zijn naar ik aanneem XML-RPC Servers en Clients te vinden. Verder zijn er voor Perl en Python uitstekende implentaties. Als er voor zo'n Server Side taal geen Client implentatie te vinden is, zou die nog niet eens zo moeilijk zelf te maken zijn. Alles wat je nodig hebt is de mogelijkheid tot het verzenden van HTTP Requests en een DOM (eigenlijk nog niet eens nodig).
mbravenboer: Je kunt het in principe zien als een eenvoudige vorm van web-services. Je kunt naar een web-service/procedure via het HTTP protocol een message sturen. Deze message is in een in XML-RPC formaat. Je krijgt ook antwoord terug in XML-RPC formaat.

Je communiceert dus volledig met behulp van kleine boodscappen met de XML syntax en volgens een standaard document-type.
Eigenlijk hoef je het niet eens zo te bekijken. Voor de meeste talen zijn er al implementaties voor een XML-RPC Client en Server, dus hoef je je helemal niet druk te maken om het XML-RPC formaat (wel leuk als je er iets van weet natuurlijk ;)).
XML-RPC is vrij eenvoudig en biedt niet erg veel complexe data-typen, maar de eenvoud ervan is ook juist de grote kracht van XML-RPC ten opzichte van bijvoorbeeld SOAP :) .
Goed gezegd :)
Je kunt dit in principe allemaal doen door gewoon XML te parsen, maar je kunt beter proberen om een XML-RPC library te vinden voor de omgeving waarmee je werkt. Voor Java zijn dergelijke libraries er wel en die maken het leven een stuk makkelijker :) .
Yep en niet alleen voor Java. In Python zit tegenwoordig zelfs al standaard een XML-RPC library dacht ik en er zijn er vele te vinden voor erg veel omgevingen.
loaded: Deze werkt d.m.v. continu refreshen van de ingelezen php-waardes en is ook een beetje erg database onvriendelijk! Kheb gehoord dat je met een xml-socketserver zoaals men dat noemde berichten vanaf surfer kan pushen naar iedere of 1 specifieke online surfer...
Dat is inderdaad niet echt een mooie manier voor een chatapplicatie. Je moet dus de mogelijkheid hebben om ook als server zelfstandig data te kunnen versturen naar alle clients. Dat kan met XML-RPC als je een Server implementatie vindt voor Flash.
Maar zoals ik al zei, dan nog blijven het onafhankelijke, asynchrone en stateless method-calls. Het liefst heb je voor een chatapplicatie toch een voortdurende verbinding (door misschien zelfs gelijkwaardige partijen, dus geen server-client rollen).
Ohh kweet dat er veel mogelijkheden zijn met java, maare dat kan ik op mijn gehoste domein volgens mij niet draaien!
Dat maakt niet uit, het kan (net zo) goed met iedere andere Server Side taal :)
php is clientside, dus dat wordt het waarschijnlijk ook niet, maar zal iets van vb of perl worden, ben ik alleen nog niet zo in thuis!
PHP is Server Side :)
VB kan het allebei zijn (Server Side in ASP)
Perl is Server Side

(hoewel eigenlijk al deze drie talen geen server- of clientdefinitie kennen natuurlijk ;))
mbravenboer: De server moet in staat zijn om een HTTP message naar de client te sturen. Hiervoor moet je op de client dus een server-socket aanmaken die deze message kan verwerken.
Als dat dus mogelijk is met Flash en dat weet ik niet zo uit mijn hoofd.
XML-RPC is namelijk niets engs: het gebruikt gewoon het HTTP protocol voor transport. Je zult in je PHP code de berichten waarschijnlijk moeten parsen naar een DOM. Deze DOM moet je gaan gebruiken om te bepalen wat de client tegen jou probeert te zeggen.
ALs ik jou was zou ik toch meer naar de interfaces van de beschikbare libraries kijken dan wat die libraries ongemerkt precies voor jou uitvoeren. Want er zijn gewoon genoeg libraries, wat zij precies moeten doen is dus eigenlijk niet interessant :)

De meeste XML-RPC implementaties vertalen de native datatypen van de omgeving voor jou naar XML-RPC messages en andersom. Bijvoorbeeld wanneer je in Perl een array meegeeft aan je Method Call (de XML-RPC actie op een HTTP REQUEST, <methodCall>) wordt er voor jou dit van gemaakt:
code:
1
2
3
4
5
6
7
8
9
10
11
<param>
  <value>
    <array>
    <data>
      <value><string>Dit is een string</string></value>
      <value><boolean>1</boolean></value>
      <value><int>2342</int></value>
    </data>
    </array>
  </value>
</param>

En wanneer je ditzelfde in een MethodResponse (<methodResponse>) terug krijgt, maakt je Perl XML-RPC libarty er mooi een Perl array van. Ook van het HTTP gebruik merk je niets, de libraries zijn dus erg gemakkelijk in het gebruik.
Houdt in de gaten dat XML-RPC in principe gewoon het remote aanroepen van een metode is. Het is dus ook het mooiste als je dit server-side en client-side zo implementeert en het verwerken van een bericht dus scheidt van het uitvoeren van de echte aktie :) .
Inderdaad en hieraan denk ik eigenlijk niet gelijk bij chatapplicatie...

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
tomato: Wat moet ik hier nog op zeggen na mbravenboer? ;)
Aan de lengte van je post te zien nog genoeg ;) .
Wat je in een chatbox eigenlijk wilt is een constante verbinding (met de server, of met de andere client(s)). Dit is echter niet waar XML-RPC voor bedoeld is, of beter gezegd, niet waar HTTP voor bedoeld is (XML-RPC maakt gebruik van HTTP).
Mee eens... een connectie-loze opzet werkt voor een chatbox niet zo goed. Niemand houd je echter tegen om XML-RPC-like berichten over een connectie die in stand wordt gehouden te versturen...
ALs ik jou was zou ik toch meer naar de interfaces van de beschikbare libraries kijken dan wat die libraries ongemerkt precies voor jou uitvoeren. Want er zijn gewoon genoeg libraries, wat zij precies moeten doen is dus eigenlijk niet interessant :)
Inderdaad. Bestaat er echter al een XML-RPC implementatie voor PHP? In dat geval moet je je toch echt met het formaat van de berichten gaan bezighouden als je aan PHP vast zit.

Het is daarbij uiteraard wel mooi om zoals ik eerder zei een scheiding aan te brengen tussen het RPC mechanisme en de implementatie van de methoden die worden aangeroepen. In principe ben je dan echter gewoon een XML-RPC implementatie aan het maken :+ .

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


  • tomato
  • Registratie: November 1999
  • Niet online
mbravenboer: Aan de lengte van je post te zien nog genoeg ;) .
* Zucht ;(
Wilde eigenlijk vanmiddag gaan werken ;)
Inderdaad. Bestaat er echter al een XML-RPC implementatie voor PHP? In dat geval moet je je toch echt met het formaat van de berichten gaan bezighouden als je aan PHP vast zit.
Yep, client en server, ik geloof dat er zelfs wel meerdere zijn.
Het is daarbij uiteraard wel mooi om zoals ik eerder zei een scheiding aan te brengen tussen het RPC mechanisme en de implementatie van de methoden die worden aangeroepen.
Uiteraard, waarom zou je er een monolithisch systeem van maken? :+
In principe ben je dan echter gewoon een XML-RPC implementatie aan het maken :+ .
Precies. Componenten weet je nog? Niets mis mee om je eigen XML-RPC library te bouwen :)

<off-topic topic="componenten">
Zie ook Joshua Bloch, maar die had je vast al gelezen :)
Arien hoeven we hier vast ook niet op te wijzen denk ik
</off-topic>

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
tomato: Wilde eigenlijk vanmiddag gaan werken ;)
Hier nog zo een ;) .
Yep, client en server, ik geloof dat er zelfs wel meerdere zijn.
Wauw, dat had ik niet gedacht ;) .
Uiteraard, waarom zou je er een monolithisch systeem van maken? :+
Hehe ;) .
maar die had je vast al gelezen :)
Al voordat het op slashdot stond ;) .
Arien hoeven we hier vast ook niet op te wijzen denk ik
Slashdot moet voldoende zijn idd ;) .

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


  • tomato
  • Registratie: November 1999
  • Niet online
mbravenboer vroeg zich af wat voor XML-RPC implementaties er eigenlijk bestonden :)

Hier een lijstje (en dat zijn natuurlijk alleen de implementaties die vermeld zijn op de userland site):

http://www.xmlrpc.com/directory/1568/implementations :P

Zelfs voor Rebol is er een implementatie, nou yummie yummie :9~ :+

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
tomato: mbravenboer vroeg zich af wat voor XML-RPC implementaties er eigenlijk bestonden :)
Wauw, das een flinke lijst :9~ .

Eenvoud is wat dat betreft uitermate effectief ;) .

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


Verwijderd

Topicstarter
Wow,

Jullie zijn aardig bezig geweest en weten er kennelijk aardig wat vanaf! Kweet dat php severside is! Zo bedoelde ik het ook niet!

Php wordt pas uitgevoerd als het door browser wordt gehaald. Met VB en perl kan je ook zonder browser laten draaien!

Kzal de gehele topic zo nog eens doorlezen, Zeeer nuttige info!

Kheb een tut gevonden over chat maken in PERL
http://hotwired.lycos.com/webmonkey/code/97/18/index2a.html

En ik zie inderdaad onder de 'implementations' dat er nog het 1 en ander uit te zoeken valt!

Tot slot wil ik zeggen dat ik in php wel de mogelijkheid heb om natuurlijk een php script geforceerd open te houden!

Ik heb helaas ff een andere opdracht, die moeten ook gebeuren, maare daarna ga ik eens ff heel goed kijken!

Bedankt voor alle replies en als jullie nog meer tips hebben hoor ik ze uiteraard graag!

  • Genoil
  • Registratie: Maart 2000
  • Laatst online: 12-11-2023
Ik ben momenteel ook een beetje aan het uitvogelen of XML-RPC, of SOAP, iets is voor hetgeen ik wil. De wens om zoiets te gaan gebruiken, komt voort uit het feit dat ik alle communicatie die verloopt tussen onze services en clients in XML wil hebben, itt tot de onoverzichtelijke brei aan GETs en af en toe een form POST, laat staan het gekloot met DHTML renderen met PHP...
Zodoende kwam ik uit bij XML-RPC en SOAP, maar kan iemand me misschien een voorbeeld geven van een situatie waarin XML-RPC niet meer voldoet en SOAP wel?
Pagina: 1