eclipse platform 개발할때,

RCP는 3.x로 할지 e4로 할지, RAP는 1.x로 할지 2.x로 할지 고민중에 RAP의 이름이 변경된 이유가 써있길래 겸사겸사 번역?? 스럽게 적어둠.   [원문]보기

 

RAP의 경우 1.x버전의 코드를 2.x로 convert하는 것도 일이 되겠구나란 생각이 든다.

 

  • ajax platform에서 protocol형태로 바뀐 간략한 이유 

1. 자바코드가 server에서 돌고 있는데, javascript 를 qooxdoo(자바스크립트 UI 프래임워크)에 의해 widgets으로 rendering(서버가 qooxdoo에 맞는 자바스크립트 코드를 클라이언트에게 보내는것)하도록 하는 부분이 과부하가 컸다.

 

2. 클라이언트는 특정 자바스크립트 프래임워크에 취약하다.

 

이 두가지의 상황을 더 좋게 하기위해 protocol 개념을 사용하게 되었다.

 


 

 

Eclipse RAP 1.x 까진 Rich ajax platform이란 명칭이였지만

2.x에서부턴 명칭은 같으나 Remote Application Platform라는 새로운 이름이 부여되었다.

 

새로운 RAP는 "Half Object plus Protocol(HOPP)" 패턴으로 구현되었다.

 

 

 

 

RAP에서 위젯의 반은 server에서, 반은 client에서 작동되게 된다.

그 둘은 protocol에 의해 연결된다.

 

이와같은 디자인의 가장 큰 장점은 어플리케이션이 client/server communication을 신경쓸 필요가 없다는 것이다. 이 둘의 communication은 플랫폼이 알아서 한다.

 

이전의 RAP는 반의 objects만 가지고 있었으나 protocol은 없었다. 대신 javascript commands와 http parameters에 의해서 통신을 하였다.

 

RAP 1.5부터는 전체적인 플랫폼들이 open JSON protocol로 migration 되었다.

 

client의 구조와 server는 JSON messageds로 바뀌었다.

이 메시지는 header 부분과 operations list로 구성된다.

 

{
head: { … },
operations: [ … ]
}

 

 

오퍼레이션은 크게 여섯가지 타입이 있다.

create – to create a remote object,

set – to set one or more properties on the remote object, and

destroy – to well, you guessed it. Besides set there is also call to call a method on a remote object.

listen and notify to exchange events

 

Every remote object is identified by an id and every operation addresses exactly one target object.

모든 remote object는 id로 식별되고, 모든 operation은 address로 하나의 target object로써 식별된다.  (맞는지 모르겠다. 위 글이 원문임.)

 

 

예시) message that creates a Button with a Selection listener

{
  "head": {
    "requestCounter": 1
  },
  "operations": [
    [ "create", "w4", "rwt.widgets.Button", {
        "parent": "w2",
        "style": [ "PUSH" ],
        "bounds": [ 5, 68, 131, 32 ],
        "text": "I am a button" } ],
    [ "listen", "w4", { "Selection": true } ]
  ]
}

 

위의 json(프로토콜)을 보면 create operation이 이미 버튼의 특성을 init하는 부분을 포함하고 있다는 것을 볼수 있다.  그리고 selection listener가 붙는 listen operation을 확인할 수 있다.  

 

버튼이 클릭될 시, 클라이언트가 서버에 보내는 message

{
  "head": {
    "requestCounter": 1
  },
  "operations": [
    [ "notify", "w4", "Selection", {
        "shiftKey": false,
        "ctrlKey": false,
        "altKey": false
      } ],
    [ "set", "w1", {
        "cursorLocation": [ 121, 104 ],
        "focusControl": "w4"
      } ]
  ]
}

 

 

위의 것은 대략적인 작동을 위한 글이며, 자세한 protocol을 알고 싶다면

eclipse wiki 에서 확인.

 

 

이 글에서 중요한 점은, RAP가 half objects라도 protocol에 UI의 세부사항이 없다는 것이다.

protocol은 더이상 HTTP에 depends하지 않다. 비록 RAP가 여전히 HTTP에 얽매여 있지만, 앞으로의 버전은 다른 추가적인 protocols에 의해 작동될것이다.

 

(ajax와 qooxdoo에 depends하게 동작하지 않겠다는 소리 같음. 중요한것은 독자적인 프로토콜로 동작할 것이란 말인듯하다. 그것이 표준인지 표준을 만들겠다는 것인지까진 모르겠지만)

 

(암튼 이게 RAP 가 새로운 이름으로 변경된 이유라고 한다. 또 모든것이 같은 프로그래밍 모델이 되기 위한 길이라고 한다. 어플리케이션과 웹과 스마트폰의 프로그래밍 일치화. 뭐 이런것??)

 

 

-------------------------------------------------

 

RAP protocol: On the way to RAP 2.0 -

http://eclipsesource.com/blogs/2010/04/28/rap-2-0-protocol/

 

Remote - The New "R" in RAP

http://eclipsesource.com/blogs/2013/02/01/rap-2-0-countdown-15/

 

RAP protocol: JSON messages

http://eclipsesource.com/blogs/2010/05/10/rap-protocol-json-messages/

posted by cozyboy
: