티스토리 뷰

Web/Flex

BlazeDS 란?

Su-Dong, Han 2011. 11. 18. 09:34

원문 : http://sewony.tistory.com/entry/BlazeDS에-대한-간략한-설명

BlazeDS란?

BlazeDS는 Adobe에서 만든 LCDS(Life Cycle Data Service)와 유사한 개념의 Open Source
프로젝트입니다.

참고로, LCDS와 BlazeDS의 기능상의 차이는 다음 그림에 잘 나와 있습니다.
전체 사각형은 LCDS의 기능 집합이여, 아래에 컬러(하늘색)로 표시된 부분만 BlazeDS의 기능입니다.

사용자 삽입 이미지


가장 중요한 기능은 Flex에서 Remote Object란 개념으로 서버상의 Java method를 바로 Call할 수
있다는 것입니다.
BlazeDS 없이는 Remote Object (이하 RO라 표현)를 사용할 수 없으며, 따라서 기존에는
HTTPService 혹은 SOAP을 이용한 WebService방식으로 서버상의 기능을 호출하게 됩니다.
가장 기본적인 방식인 HTTPService의 경우 servlet을 호출하여 결과값을 xml이나 text형식으로
받아서 사용합니다.

가장 기본적인 사용방법은 다음과 같습니다.
 <mx:HTTPService id="srvHTTP" method="POST" useProxy="false" url="simple" showBusyCursor="true" fault="Alert.show(event.fault.faultString, 'Error');"/>
위의 예에서 url 부분에 servlet의 경로가 들어가게 되고 POST방식으로 호출한다는 의미입니다.

하지만 RO를 사용하게 되면,
서버상의 remoting-config.xml 파일에 destination에 해당하는 부분을 정의한 후
 java method를 바로 호출하고 결과값을 primitive type혹은 javabean 형태로 받을 수 있습니다.

    [remoting-config.xml 파일]

    <destination id="simpleLoadService">
        <properties>
            <source>flexintegration.sample.SimpleLoadService</source>
        </properties>
    </destination>   


다음은 전체 mxml파일입니다.

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" backgroundColor="#FFFFFF">
 
 <mx:Script>
 <![CDATA[
  import mx.controls.Alert;
 ]]>
 </mx:Script>
 
 <mx:RemoteObject id="srvRO" destination="simpleLoadService" showBusyCursor="true" fault="Alert.show(event.fault.faultString, 'Error');" />
 
 <mx:DataGrid dataProvider="{srvRO.getAll.lastResult}" width="100%" height="100%"/>
<mx:Button label="Get Data" click="srvRO.getAll()"/>
 
</mx:Application>


"Get Data"란 버튼을 클릭하면 simpleLoadService를 호출하고 데이터를 가지고 오게 됩니다.


다음은 실제 simpleLoadService로 선언한
flexintegration.sample.SimpleLoadService.java 파일의 내용입니다.

package flexintegration.sample;

import java.util.List;
import com.mydomain.data.SimpleIbatis;

public class SimpleLoadService {

    public List getAll()
    {
     List beans;
    
     try
     {
      beans = SimpleIbatis.selectAllSimpleBean();
     }
     catch(Exception e)
     {
         return null;
     }
     return beans;
    }

}


Database에서 값을 가져온 후 결과 데이터를 List로 만들어서 Flex쪽으로 리턴합니다.


이와 같이 RO를 이용하게 되면 서버쪽의 Java method를 바로 호출할 수 있어서 개발 속도를 향상 시킬수
있으며, xml이나 text파일이 아닌 serialize된 object를 전달받게 되므로 대용량 데이터의 경우 데이터
전송 속도의 향상도 기대할 수 있습니다.

'Web > Flex' 카테고리의 다른 글

BlazeDS 와 스프링(Spring) 연동하기  (0) 2011.11.18
BlazeDS와 LCDS의 기능 차이  (0) 2011.11.18
BlazeDS 설치하기  (0) 2011.11.18
댓글