またまた前回の続き「碧(midori)のサーバ側のコードをScalaで!」で
作成したプロジェクトを色々な言語・通信方式でRPC呼び出してみました。
とりあえず適当に4つくらい実装しました。
【PythonでXML-RPC】
import xmlrpclib
server = xmlrpclib.ServerProxy("http://localhost:8080/midoriTutorial/rpc/helloService.xmlrpc")
result = server.hello('test')
print result
【RubyでXML-RPC】
require 'xmlrpc/client'
server = XMLRPC::Client.new2('http://localhost:8080/midoriTutorial/rpc/helloService.xmlrpc')
result = server.call("hello", "test")
p result
【Javascript(Prototype.js)でJSON-RPC 一部抜粋】
var ajax = new Ajax.Updater(
{success: 'result'},
'http://localhost:8080/midoriTutorial/rpc/helloService.json',
{
method: 'POST',
contentType: 'application/json',
postBody: Object.toJSON({
method: 'hello',
params: ['test'],
id: (new Date()).getTime()
}),
onFailure: reportError
}
);
【FlexでAMF】
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
<mx:Script>
<![CDATA[
import mx.controls.Alert;
import mx.events.FlexEvent;
private var nameString:String = "テスト";
]]>
</mx:Script>
<mx:RemoteObject id="helloService" destination="helloService"
result="Alert.show(event.result as String), 'Success'"
fault="Alert.show(event.fault.toString()), 'Error'"
endpoint="http://localhost:8080/midoriTutorial/rpc/messagebroker.amf">
<mx:method name="hello">
<mx:arguments>
<symbol>{nameString}</symbol>
</mx:arguments>
</mx:method>
</mx:RemoteObject>
<mx:Button label="Call" click="helloService.hello.send()"/>
</mx:Application>
この中では個人的に「PythonでXML-RPC」が一番好きです!
こんな風に各種言語から多様な方式で通信出来ると
Thriftなどの多言語対応RPCフレームワークを使う機会がないなぁ~。
作成したプロジェクトを色々な言語・通信方式でRPC呼び出してみました。
とりあえず適当に4つくらい実装しました。
【PythonでXML-RPC】
import xmlrpclib
server = xmlrpclib.ServerProxy("http://localhost:8080/midoriTutorial/rpc/helloService.xmlrpc")
result = server.hello('test')
print result
【RubyでXML-RPC】
require 'xmlrpc/client'
server = XMLRPC::Client.new2('http://localhost:8080/midoriTutorial/rpc/helloService.xmlrpc')
result = server.call("hello", "test")
p result
【Javascript(Prototype.js)でJSON-RPC 一部抜粋】
var ajax = new Ajax.Updater(
{success: 'result'},
'http://localhost:8080/midoriTutorial/rpc/helloService.json',
{
method: 'POST',
contentType: 'application/json',
postBody: Object.toJSON({
method: 'hello',
params: ['test'],
id: (new Date()).getTime()
}),
onFailure: reportError
}
);
【FlexでAMF】
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
<mx:Script>
<![CDATA[
import mx.controls.Alert;
import mx.events.FlexEvent;
private var nameString:String = "テスト";
]]>
</mx:Script>
<mx:RemoteObject id="helloService" destination="helloService"
result="Alert.show(event.result as String), 'Success'"
fault="Alert.show(event.fault.toString()), 'Error'"
endpoint="http://localhost:8080/midoriTutorial/rpc/messagebroker.amf">
<mx:method name="hello">
<mx:arguments>
<symbol>{nameString}</symbol>
</mx:arguments>
</mx:method>
</mx:RemoteObject>
<mx:Button label="Call" click="helloService.hello.send()"/>
</mx:Application>
この中では個人的に「PythonでXML-RPC」が一番好きです!
こんな風に各種言語から多様な方式で通信出来ると
Thriftなどの多言語対応RPCフレームワークを使う機会がないなぁ~。