なにをいまさらSqueakでXML-RPCサーバかと思われますが(実際多数の実装実績がある)、まぁスキルアップってことで。
まずXML-RPCサーバをインストールします。今までのおさらいの意味を含めてYAXO(XML-Parser)からのインストール方法を下記に示します。
インストールはこれでOKのはずです。
次に下記に示すテスト用のクラスを作成します。これはRPCのAPIを実装するクラスとなるもので、文字列を引数にしてそれを評価した結果を返す、test.evaluateというAPIを用意します。
XMLRPCmyTest.st
詳細は次回で説明します。
HTTPサーバを起動します。
Spy-XML-RPCで先ほどのAPIを実行します.次の内容をprint itします。
どうですか?意外と簡単でしたね。次回は上記の内容を少し詳しく説明します。
まずXML-RPCサーバをインストールします。今までのおさらいの意味を含めてYAXO(XML-Parser)からのインストール方法を下記に示します。
- YAXOをSqueakMapよりインストール
- Spy-XML-RPCを試すを参考にSpy-XML-RPCをインストール
- Comanche/httpserverをインストールしてみるを参考に'Comanche/httpserver'をインストール
- Squeak SWikiよりXMLRPC-Server-mfrit.mczをダウンロードしてファイルリストよりインストール(SqueakMapではインストールに失敗する)
インストールはこれでOKのはずです。
次に下記に示すテスト用のクラスを作成します。これはRPCのAPIを実装するクラスとなるもので、文字列を引数にしてそれを評価した結果を返す、test.evaluateというAPIを用意します。
XMLRPCmyTest.st
詳細は次回で説明します。
HTTPサーバを起動します。
| ma xmlrpc | xmlrpc := XMLRPCHttpModule new. ma := ModuleAssembly core. ma serverRoot: FileDirectory default fullName. ma alias: '/xmlrpc' to: [ma addPlug: [:request | xmlrpc process: request]]. ma documentRoot: FileDirectory default fullName. ma directoryIndex: 'index.html index.htm'. ma serveFiles. (HttpService startOn: 8080 named: 'httpd') plug: ma rootModule
Spy-XML-RPCで先ほどのAPIを実行します.次の内容をprint itします。
| url proxy | url := Url absoluteFromText: 'http://localhost:8080/xmlrpc/'. proxy := XMLRPCProxy withUrl: url. proxy invokeMethod: 'test.evaluate' withArgs: #('2 + 3')
どうですか?意外と簡単でしたね。次回は上記の内容を少し詳しく説明します。