2. XML-RPC¶õ ¹«¾ùÀΰ¡?

XML-RPC´Â HTTP¸¦ ÅëÇÑ °£´ÜÇϰí À̽ļº ³ôÀº ¿ø°Ý ÇÁ·Î½ÃÁ® È£Ãâ ¹æ¹ýÀÌ´Ù. XML-RPC´Â Perl, Java, Python, C, C++, PHP ¿Í ±× ¿Ü ´Ù¸¥ ¸¹Àº ¾ð¾î·Î »ç¿ëÇÒ ¼ö ÀÖÀ¸¸ç Unix, Windows, ±×¸®°í Macintosh¿¡¼­ ½ÇÇàÇÒ ¼ö ÀÖ´Ù.

´ÙÀ½Àº Perl·Î ¸¸µç °£´ÜÇÑ XML-RPC Ŭ¶óÀÌ¾ðÆ® ÇÁ·Î±×·¥ÀÌ´Ù. (Ken MacLeodÀÇ Frontier::Client ¸ðµâ »ç¿ë)

use Frontier::Client;
$server = Frontier::Client->new(url => 'http://betty.userland.com/RPC2');
$name = $server->call('examples.getStateName', 41);
print "$name\n";

ÀÌ ÇÁ·Î±×·¥À» ½ÇÇàÇϸé, ¿ø°Ý ¼­¹ö¿¡ ¿¬°áÇÏ¿© ¹Ì±¹ÀÇ ÁÖ¸í(state name)À» ¾ò¾î Ãâ·ÂÇÑ´Ù. (ÀÌ ¿¹Á¦¿¡¼­ 41¹ø ÁÖ´Â South Dakota ÀÏ °ÍÀÌ´Ù.)

´ÙÀ½Àº µ¿ÀÏÇÑ Python ÇÁ·Î±×·¥ÀÌ´Ù. (Fredrik LundhÀÇ xmlrpclib »ç¿ë)

python> import xmlrpclib
python> server = xmlrpclib.Server("http://betty.userland.com/RPC2")
python> server.examples.getStateName(41)
'South Dakota'

ÀÌÁ¦ºÎÅÍ ´Ù¾çÇÑ ÇÁ·Î±×·¡¹Ö ¾ð¾î·Î ¾î¶»°Ô XML-RPC Ŭ¶óÀÌ¾ðÆ®¿Í ¼­¹ö¸¦ ¸¸µå´ÂÁö¿¡ ´ëÇÏ¿© »ìÆìº¼ °ÍÀÌ´Ù.

2.1. ¾î¶»°Ô µ¿ÀÛÇϴ°¡

XML-RPC´Â Dave WinerÀÇ °ø½Ä ¸í¼¼¼­¿¡ »ó¼¼È÷ Á¤ÀǵǾî ÀÖ´Ù. ±Ã±ÝÇÑ »çÇ×ÀÌ ÀÖ´Ù¸é Á÷Á¢ °¡¼­ º¸¶ó. °£´ÜÇϰí Àб⠽±°Ô µÇ¾î ÀÖ´Ù.

(¼­¹ö¿Í Ŭ¶óÀÌ¾ðÆ® °£ÀÇ) Åë½Å »ó¿¡¼­, XML-RPC °ªÀº XML ÄÚµåÈ­µÈ´Ù.:

<methodCall>
  <methodName>sample.sumAndDifference</methodName>
  <params>
    <param><value><int>5</int></value></param>
    <param><value><int>3</int></value></param>
  </params>
</methodCall>

À̰ÍÀº ÀåÈ²ÇØ º¸ÀÌÁö¸¸ ½±°Ô ¿ä¾àµÈ´Ù. °Ô´Ù°¡ »ý°¢º¸´Ù ºü¸£´Ù. Rick BlairÀÇ ÃøÁ¤¿¡ µû¸£¸é, Hannes WallnoferÀÇ Java ȯ°æ¿¡¼­ ÇÑ ¹øÀÇ XML-RPC È£Ãâ ¿Õº¹¿¡ 0.003Ãʰ¡ °É·È´Ù.

2.2. Áö¿øµÇ´Â µ¥ÀÌŸÇü

XML-RPC´Â ´ÙÀ½°ú °°Àº µ¥ÀÌŸÇüÀ» Áö¿øÇÑ´Ù:

int

ºÎÈ£ ÀÖ´Â 32ºñÆ® Á¤¼öÇü

string

NULL ¹ÙÀÌÆ®¸¦ Æ÷ÇÔÇÒ ¼ö ÀÖ´Â ¾Æ½ºÅ° ¹®ÀÚ¿­ (XMLÀÇ Æ¯¼º¿¡ ÀÇÇØ ¸î¸îÀÇ XML-RPC ȯ°æ¿¡¼­´Â À¯´ÏÄڵ带 Áö¿øÇÔ)

boolean

Âü ¶Ç´Â °ÅÁþ

double

¹èÁ¤µµ ½Ç¼öÇü (ȯ°æ¿¡ µû¶ó Á¦ÇÑ)

dateTime.iso8601

³¯Â¥¿Í ½Ã°¢. XML-RPC´Â ŸÀÓÁ¸ÀÇ »ç¿ëÀ» ±ÝÇϱ⠶§¹®¿¡ °ÅÀÇ ¾µ¸ð ¾øÀ½

base64

ÀÓÀÇÀÇ ±æÀ̸¦ °¡Áö´Â Àú¼öÁØ ÀÌÁø µ¥ÀÌŸ. Åë½Å »ó¿¡¼­´Â Base64·Î ÀÎÄÚµùµÇ¸ç »ó´çÈ÷ À¯¿ëÇÑ µ¥ÀÌŸÇü (¾î¶² ȯ°æ¿¡¼­´Â 0 ¹ÙÀÌÆ®ÀÇ µ¥ÀÌŸ´Â ¼ö½ÅÇÏÁö ¸øÇÏ´Â °æ¿ìµµ ÀÖÀ½)

array

1Â÷¿ø ¹è¿­. ¹è¿­°ªÀº ¾î¶°ÇÑ Çüµµ °¡´ÉÇÔ

struct

key-valueÀÇ ½ÖÀ¸·Î ÀÌ·ç¾îÁø »çÀüÇü. key´Â stringÀ̾î¾ß Çϸç value´Â ¾î¶°ÇÑ Çüµµ °¡´ÉÇÔ

2.3. XML-RPCÀÇ ¿ª»ç

XML-RPC´Â ±× ÀÌÀüÀÇ µÎ ÇÁ·ÎÅäÄݷκÎÅÍ ¿µÇâÀ» ¹Þ¾Ò´Ù. ù°´Â Dave Winer¿¡ ÀÇÇØ µðÀÚÀÎµÇ°í ¿¹Àü¿¡ DaveNet¿¡ ¹ßÇ¥µÈ À͸í RPC ÇÁ·ÎÅäÄÝÀÌ´Ù. (ÀÌ ¶§¹®¿¡ Á¾Á¾ XML-RPC ¼­¹ö´Â /RPC2¿¡ ¼³Ä¡µÈ´Ù.) ¶ÇÇϳª, ´õ¿í ÁÖ¿äÇϰԴ SOAP ÇÁ·ÎÅäÄÝÀÇ Ãʾȿ¡¼­ ±× ¿µÇâÀ» ¹Þ¾Ò´Ù.

XML-RPCÀÇ ¿ª»ç¿¡ °üÇÑ ´õ ÀÚ¼¼ÇÑ ¹®¼­·Î´Â Dave Winer°¡ ¾´ ±ÛÀÌ ÀÖ´Ù. ÀÌ ¹®¼­´Â XML-RPC¿Í SOAPÀÇ °ü°è¿¡ ´ëÇØ¼­µµ ¼³¸íÇϰí ÀÖ´Ù.