Rpc

Openzet.org

목차

RPC 클래스

소개

RPC 클래스란?

RPC 클래스는 사용자가 많이 사용하는 통신을 좀더 쉽게 하기 위해서 구현된 결과물이다. AMF통신방식을 사용하는 openAMFAMFPHP를 사용하는 AMFCaller 을 사용해서 쉽고 빠른데이터 통신을 할수 있다.

RemoteObejctCaller

소개

BlazeDS나 LCDS를 사용해서 통신하는 RemoteObject객체를 이용해서 더욱빠르고 간편하게 이용할수 있는 유틸클래스 이다.

속성

사용법

mxml태그보다는 AS3.0코딩으로서 사용합니다.

애플리케이션 예제

기존의 RemoteObject 에서는(MXML이 아닌 AS3.0코딩)

var param:Object = {};
param.id = "reikop";
var remoteObject:RemoteObject = new RemoteObject();
remoteObject.destination = "test";
remoteObject.getOperation("getTest").arguments = param
remoteObject.getOperation("getTest").addEventListener(ResultEvent.RESULT,resultHandler);
remoteObject.getOperation("getTest").send();
 
function resultHandler(e:ResultEvent):void
{
Alert.show(e.result as String);
}

이런식으로 긴 문장을 써야됨은 물론, 매번 호출시마다 리소스 관리를 해주어야 한다는 단점이 있다.

하지만 RemoteObjectCaller를 쓴다면 어렵지않게 두마리 토끼를 잡을수 있다.

var param:Object = {};
param.id = "reikop";
 
var ro:RemoteObjectCaller = RemoteObjectCaller.getInstance();
ro.addEventListener("complete",resultHandler);
ro.call("test.getTest",param);
 
function resultHandler(e:ResultEvent):void
{
Alert.show(e.data as String);
}

위에서 보듯이 코딩량이 많이 줄어들었음을 볼수 있다. 특히

ro.call("test.getTest",param);

에서 "test.getTest"라는것은 Destination 값에 메소드를 직접 호출함으로써 빠르게 접근할수 있다.


HTTPLoader

소개

웹에서 XML이나 TXT같은 파일을 가지고 오면서 인코딩을 달리주려할때 사용할수 있다.

속성

사용법

애플리케이션 예제

var hl:HTTPLoader = HTTPLoader.getInstance();
hl.addEventListener("complete",resultHandler);
hl.load(new URLRequest("http://testXMLAnithing.xml","EUC-KR"));
 
function resultHandler(e:RPCEvent):void
{
var xml:XMLList = new XML(e.data).children();
Alert.show(xml.toXMLString());
}

주목해야 할점은 사용자가 직접 인코딩을 지정할수 있다. EUC-KR로 이루어진 한국어XML을 로드시에 간혹 로드가 제대로 안되는 문제가 있었는데 그 부분을 보완 수정했다.

AMFCaller

소개

AMFCaller에서는 오픈소스 라이브러리 openAMF, AMFPHP등에서 데이터를 편하게 불러올수 있게 하는 유틸이다.

속성

사용법

애플리케이션 예제

var ac:AMFCaller = AMFCaller.getInstance();
ac.URL = "http://YourAMFGatewayAdress";
ac.addEventListener(RPCEvent.COMPLETE,completeEvent);
ac.call("test.TestClass.getTest");
function completeEvent(e:RPCEvent):void
{
Alert.show(e.data);
}

call을 할때에 패키지이름.클래스이름.메소드이름 으로 접근후 필요하다면 값을 보낼수가 있다.

var param:Object = {};
param.id = "reikop";
ac.call("test.TestClass.getTest",param);
실버라이트