'Bondi'에 해당되는 글 5건
- 2010.08.27 HTML5 소개자료. 181
- 2010.08.12 PendingOperation 4
- 2010.08.03 BONDI Security & policy 3
- 2010.08.03 policy examples 1
- 2010.08.02 BONDI API design patterns 1
HTML52010. 8. 27. 11:36
기타/BONDI2010. 8. 12. 16:33
BONDI interface API에서 PendingOperation은 비동기 호출에 있어서 중요한 요소이다.
이는 비동기 호출을 동기적으로 할 수 있는 방안을 제공하기도 한다. 즉 비동기 호출이지만 동기적으로 처리하고 싶을 때 사용할 수 있다.
아래와 같이 두개의 함수가 준비되어 있다.
PendingOperation.
interface PendingOperation { boolean cancel(); void wait(); };
동작을 취소할 수 있는 방안을 제공하기 위해 고안된 비동기적으로 리턴하는 인터페이스이다.
cancel 함수
비동기적으로 백그라운드로 동작중인 동작의 취소를 호출한다. 이 함수는 항상 바로 리턴한다. false 리턴은 pending operation이 이미 끝났거나 기술적인 한계로 인해 cancel이 성공하지 못했을 때 한다. 결과적으로 동작은 완료 여부는 연계된 callback에 의해 결정난다. true 리턴은 취소가 성공했을 때 한다. 취소된 pending operation의 callback은 호출되지 않는다. wait중인 pending operation에 대해 cancel을 호출하면 false를 리턴한다. 즉 cancel은 성공하지 않는다.
wait 함수
비동기적인 동작이 끝날때 까지 대기한다. BONDI 비동기 메소드를 동기메소드인양 사용코자 할 때 사용가능하다. 동작이 끝날때 까지 thread는 대기 한다. 관련된 callback이 모두 처리된 후 리턴한다.
아래의 예에서 "Feature loading accomplished"보다 "SUCCESS"나 "ERROR"가 먼저 뜨게 된다.
Code example
var loadingsuccessful = 0; function successCB() { alert("SUCCESS"); loadingsuccessful = 1; } function errorCB() { alert("ERROR"); loadingsuccessful = 0; } function loadFeatureSynchronously() { var asyncop = bondi.requestFeature(successCB, errorCB, "http://bondi.omtp.org/api/messaging"); asyncop.wait(); // waiting for messaging API to be loaded alert("Feature loading accomplished"); return loadingsuccessful; // if 1, the messaging API was loaded synchronously and successfully } // The bondi.requestFeature() method is asynchronous by design. // bondi.requestFeature() start dummy asynchronous operation. // The call to loadFeatureSynchronously() results in SUCCESS or ERROR prompt prior to Feature loading accomplished prompt.
기타/BONDI2010. 8. 3. 17:39
BONDI는 하드웨어 자원에 접근할 수 있는 방안을 제공하는 기술이기 때문에 아무런 보안 제약사항이 없이 지원될 경우 사용자 개인정보가 유출되는 등 심각한 문제가 발생할 수 있다.
따라서 Security framework와 policy를 지원한다.
아래 그 특징을 나열하였다.
1. 어플리케이션 단위의 접근권한정책을 제어할 수 있다.
2. XML문법으로 기술되며 XACML spec(OASIS)에 정의되어 있는 보안모델을 따른다.
3. Widget과 Web application은 기본적으로 BONDI API에 접근되지 않는다.
4. 개개의 Widget과 Web application별로 사용하고자 하는 API에 대한 policy file로 관리된다.
이 는 명시적으로는 사용자에게 아래와 같은 통지 메세지를 띄우는 등의 형태로 구현될 수 있다.
"이 애플리케이션은 인증되었으며(digital signature), geolocation APIs에 접근가능합니다"라는 메세지를 표시하여 사용자에게 통지
제한적인 기본 API지원
일반적으로 아주 제한적인 API들은 사용이 가능하다.
1. file system의 경우 application에 할당된 local hard disk에 접근하는것까지 허용
2. Network access는 오직 하나만의 web site만을 접근가능하도록 한다.
XACML에 비하여 BONDI의 security는 아주 단순하다.
- namespace를 하나만 사용한다, XACML은 여러개의 XML namespace를 사용한다.
- policy markup문법은 더 단순하며 policy를 정의하는데 주안점을 둔다.
실세계에서 적용하기 위해 아직 완전하지 않는 두가지가 있다.
1. 누가 다양한 환경에서의 policy file을 작성할 것인가.
mobile cell network 운영자 또는 서비스사, 단말사, 브라우져제공자, 사용자등... 누가 할것인가???
2. 어떤 UX를 제공할것인가.
각각 API에 대한 접근권한을 허용하는 것을 어디에서 할것인가..
기타/BONDI2010. 8. 3. 13:40
permit policy
<!-- has target for http://www.omtp.org/GigGuide -->
<policy-set combine="first-matching-target">
<policy combine="first-applicable" description="catch">
<rule effect="permit">
<condition>
<resource-match attr="device-cap" match="webvm.bind"/>
</condition>
</rule>
<rule effect="permit"></rule>
</policy>
</policy-set>
deny policy
<!-- has target for http://www.omtp.org/GigGuide -->
<policy-set combine="first-matching-target">
<policy combine="first-applicable" description="catch">
<rule effect="permit">
<condition>
<resource-match attr="device-cap" match="webvm.bind"/>
</condition>
</rule>
<rule effect="deny"></rule>
</policy>
</policy-set>
prompt policy
<!-- has target for http://www.omtp.org/GigGuide -->
<policy-set combine="first-matching-target">
<policy combine="first-applicable" description="catch">
<rule effect="permit">
<condition>
<resource-match attr="device-cap" match="webvm.bind"/>
</condition>
</rule>
<rule effect="prompt-blanket"></rule>
</policy>
</policy-set>
기타/BONDI2010. 8. 2. 11:01