SharedObject outline 입니다.  기술 관련 문서는 docx 파일을 참고하시면 됩니다.

FireFox 의 globalStorage 과 유사하게 구현했으며 차후 유연한 연동 및 extansion 을 위해서 비슷하게 구현합니다. [docx 파일 내용은 그림 아래 추가했습니다. 그리고 javascript 라이브러리는 추후 공개합니다. ]

Shared-Object 를 잘 활용하면 정말 파워풀(?)한 웹 기반 Application을 만들 수 있겠습니다.
Dojo Toolkit 에서도 localStorage 를 위해 Shared Object를 활용하고 있습니다. (Dojo.Storage)

사용자 삽입 이미지












Shared Object 란 무엇인가?

Shared Object Macromedia flash MX 의 새롭고 강력한 기능입니다. 

Shared Object 를 사용하는 방법은 많이 있고 이 문서는 여러분들에게 기초적인 개념들을 얻게 해줄 것입니다.

Shared Object의 다양한 사용 법은 유저의 점수, 좋아하는 색깔 혹은 마지막 방문했던 곳을 기억하는 것을 포함합니다. 아래의 예제는 사용자에 의해 입력된 이름이 저장되고 여러 번 방문했었던 사이트는 Shared Object의 기능을 사용하게 됩니다.

 

Shared Object 는 클라이언트에 저장된 데이터를 사용합니다. 이것은 데이터가 웹 브라우저를 통하여 생성되어진 쿠키와 유사한 방식으로 저장되어집니다.

 

생성된 그 데이터는 Shared Object에 의해 생성된 같은 도메인에서만 오직 읽을 수 있습니다.

 

이것은 한가지 방법입니다. Macromedia Flash Player 는 유저의 컴퓨터에 데이터를 쓸 수 있습니다.  그들이 정보를 제공하지 않는다면 Shared Object 는 사용자의 이메일 주소 혹은 다른 개인적인 정보를 기억할 수 없습니다.

보안을 위해서 http://download.macromedia.com/pub/flash/whitepapers/security.pdf 이 자료를 더 참조해야 합니다.

 

1.     Using Shared Objects
A. Shared Object
getLocal 메서드를 이용하여 Shared Object를 생성해라.  무비의 myLocalSO 변수를 설정하고 아래의 ActionScript “flashcookie”의 이름을 갖는 Shared Object를 할당한다.

//create the local Shared Object

myLocal_so = sharedobject.getLocal("flashcookie");

만약 “flashcookie” 라는 이름을 갖는 Shared Object가 미리 존재하지 않는다면 Macromedia Flash Player 는 그 이름을 갖는 Shared Object 를 생성할 것입니다.
B. localPath
라 불리는 선택적인 파라미터는 Shared Object 생성을 위해서 또한 설정할 수 있습니다.  localPath 파라미터는 Shared Object 가 사용자 컴퓨터에 저장될 장소를 지정할 수 있습니다.  이 경로는 SWF의 위치와 매치되거나 URL을 함께 포함되어 집니다.
 
그러므로 Movie http://www.mysite.com/movie/movies.swf 라는 localPath 파라미터를 설정했다면 사용자 컴퓨터에 http://www.mysite.com/movie/movies.swf, /, /movies 혹은 /movies/movies.swf 경로에 Shared Object 를 생성한다.

코드는 아래와 같이
myLocal_so = sharedobject.getLocal("flashcookie","/movies/mymovie.swf");

하나의 사이트에서 한 개 혹은 그 이상의 Shared Object를 사용할 때 유용합니다.
예를 들어 localPath 를 루트 레벨로 하여 생성된 Shared Object는 사이트 내의 모든 movie 에서 접근이 가능하게 됩니다. (localPath “/”로 설정한 경우) 그리고 다른 정보들은 각각의 movie 에서 저장한 Shared Object 에서만 접근만 허용합니다. localPath movie 에 지정하게 됩니다. (localPath /movies/mymovie.swf 로 설정한 경우)

2.  Shared Object의 값 설정
정보들은 Shared Object의 데이터 프로퍼티에 할당된 속성에 의해서 저장 되어집니다. 아래의 Movie의 텍스트 입력창에 입력된 사용자 이름은 Shared Object의 데이터 프로퍼티에 할당한 속성과 동일합니다. 아래와 같이 하면 됩니다.

/set the variable “name” equal to the text property
//of the textfield “username”
myLocal_so.data.name = username.text;

//increase the variable counter by one for each visit
myLocal_so.data.counter++;

데이터는 Movie Macromedia Flash Player에서 제거되어질 때 Shared Object에 써집니다. 데이터를 쓰기 위해서 바로 flush 메서드를 아래처럼 사용하면 됩니다.

myLocal_so.flush();

3.     Shared Object 의 값 반환
사용자가 페이지로 되돌아 왔을 때 Shared Object는 읽고 그 값을 표시한다.

userName.text = myLocal_so.data.name;
numVisits.text = “You have been here “ + myLocal_so.data.counter +”times.”


왜냐하면 myLocal_so = Shared Object.getLocal(“flashcookie”); 와 같이 Shared Object “flashcookie”는 이미 사용자 컴퓨터에 생성되어져 있기 때문에 사용자 이름과 방문횟수를 Shared Object에서 데이터를 얻을 수 있는 것입니다.


사용자 삽입 이미지

a.site.com 에서 생성된 데이터(Shared Object)를
b.site.com 에서 사용할 수 있는 방법이나 트릭을 아시는 분든 좀 알려주세요.


관련 정보
wikipedia : http://en.wikipedia.org/wiki/Local_Shared_Object




Posted by Rhio.kim

댓글을 달아 주세요

  1. BlogIcon azki 2008.01.14 20:05  댓글주소  수정/삭제  댓글쓰기

    a.site.com 에서 생성된 데이터(Shared Object)를
    b.site.com 에서 사용할 수 있는 방법이나 트릭 =ㅁ=;;

    크로스도메인 문제아닌가요?
    1차도메인이 같다고 해도 결국 타 도메인으로 취급당해서 어쩔 수 없을듯?
    크로스 도메인 문제는 다들 많이들 연구하고 계시니 찾아보시면 많은 자료가 함께하실듯??

  2. BlogIcon 옷장수 2008.01.15 08:52 신고  댓글주소  수정/삭제  댓글쓰기

    sitemap.xml 사용하면 flash에서는 크로스 도메인으로 동작하게 하는게 가능할 겁니다. (javascript는 해당사항 없구요... ^^;;; )

    • BlogIcon Rhio.kim 2008.01.15 09:22 신고  댓글주소  수정/삭제

      아시겠지만 SharedObject의 로직은 a.site.com 에서 데이터가 생성되면 클라이언트 PC 에 "쿠키방식"으로 *.sol 파일이 지정된 폴더에 생깁니다.

      그런데 b.site.com 에서 접속했을 때 클라이언트 PC에 생겨있는 *.sol 파일을 엑세스 해야되는 문제입니다.

      document.domain 을 써줘서 2차 도메인이 서로 틀릴 경우 쿠키 공유가 되는 것과 같은 방식인데 그 내부 로직은 틀립니다. (원글 참조)

      어떻게 보면 crossdomain.xml 로 처리가 가능할것도 하지만 그런 문제가 아니라고 합니다.

      sitemap.xml 에 대한 자료는 찾아서 한번 볼께요.. ^-^
      답변 감사드려요..