[Python-de] Einfaches RPC zwischen Python und C++

Gerson Kurz Gerson.Kurz at t-online.de
Sun Mar 2 19:46:18 EST 2003


Georg Mischler schrub:

> Mir scheint, ich hoere da ein paar Vorurteile heraus... ;)

Ich habe keine Vorurteile, sondern ausgepraegte und vielleicht veraltete
aber zumindest dereinst begruendet gewesene Feindbilder ohne Verfallsdatum,
und, beispielsweise, C++ Templates gehoeren ganz oben mit dazu. Gleich neben
Garbage Collection, Exception Handling und OS/2, du weisst.

Gruende, warum ich XML-RPC nicht mag kann man beispielsweise hier

http://www.counterpane.com/crypto-gram-0006.html

nachlesen, siehe den Abschnitt ueber SOAP. (Was, fuer mich als technischen
Laien, nix anderes ist wie eine reduplizierung der XML-RPC-Geschichte mit
einem noch irrsinnigeren API. "Simple", ha ha ha )

> XMLRPC ist absolut leichtgewichtig, und erfuellt auch deine
> anderen Voraussetzungen spielend.

Naja, "absolut leichtgewichtig": HelloClient.exe belegt 3 Megabyte RAM
(Working Set Size auf Windows, wenn ich richtig gemessen habe).

Im Readme.html liest man:

"(XMLRPC is) Fast: All IO is non-blocking, so a slow client or network will
not slow down the server."

Aha. Hier der einleitende Satz aus
http://www.unixguide.net/network/socketfaq/2.9.shtml:  "Using non-blocking
I/O means that you have to poll sockets to see if there is data to be read
from them. Polling should usually be avoided since it uses more CPU time
than other techniques." Aber, sie benutzen natürlich letztlich select()
(siehe XmlRpcClient::execute()). Ist heute ein Programm schon "schnell",
wenn es select() kennt, oder was?

Dazu auch ein Quote aus dem XML-RPC-HOWTO:

"It's also faster than you might expect—according to measurements by Rick
Blair, a round-trip XML-RPC call takes 3 milliseconds using Hannes
Wallnöfer's Java implementation."

Das sind die Statistiken, die ich liebe. Keine Angaben zur Maschine, oder
zum Netzwerk; keine Angaben zum Aufruf (Komplexität: void Ping(void) oder
übergabe einer tief verschachtelten Struktur?), keine Vergleichswerte, aber
hey: 3 Millisekunden klingen erstmal spitze!

Meinem Ruf (TM) gerecht werde ich natuerlich nur mit XML-Bashing:

http://xmlsucks.org/but_you_have_to_use_it_anyway/does-xml-suck.pdf

Abgesehen davon, dass man STL Patches braucht, die ich bisher nicht
gebraucht habe, aus dem einfachen Grund, dass STL ein Sammelsurium extrem
schlimmer Templates sind, und zu Templates siehe den einleitenden Absatz.

> Die ueblichen Argumente gegen
> den mit XML grundsaetzlich verbundenen Overhead (Parsing und
> Aufblaehung der Daten etc.) ist fuer die meisten praktischen
> Anwendungsfaelle weitgehend irrelevant.

Siehe oben. Es handelt sich um eine "Kaestchen" (Embedded PC) Loesung, die
Zeug bereitstellen kann. Mit 8, *vielleicht* 16 mb RAM. Schon der Einsatz
von Python ist zum jetzigen Zeitpunkt ungewiss, evtl. nur auf Clientseite
(d.h. auf dem PC).

> Das heisst natuerlich
> nicht, dass sie fuer deinen speziellen Fall nicht trotzdem
> relevant sein koennten, aber es duerfte sich trotzdem lohnen,
> es einfach mal auszuprobieren.

Ausprobiert habe ich es (das von Martin gepostete), und (obige Vorurteile
unbelassen), es scheint auf Anhieb zu funktionieren. Da ich eurem
technischen Sachverstand soweit vertraue, dass ihr mir keinen voelligen
Kaese empfehlt, werde ich es mal morgen naeher unter Linux antesten, unter
"Kaestchengerechteren Bedingungen". Schaun mer mal...

Ciao,
Gerson

ps. Passend zum Thema: news:87isveoj9f.fsf at msgid.grivolla.de Was haben wir
gelacht!






More information about the Python-de mailing list