AS 개발자를 위한 서바이벌 논리 : URL 편
플래시 어플리케이션 개발을 하다보면 매우 높은 빈도로 URL 에 대한 구현 요구를 받게 된다.
"님하 URL 접근을 통해서 메인 카테고리 A 의 서브 카테고리 B 의 35번째 컨텐츠를 바로 띄울수 있게 해주삼"
같은 퍼머넌트 링크 (permanent link) 에 대한 접근 구현 이라던가,
"메인 카테고리 A 나 메인 카테고리 B 에서 메인 카테고리 C 의 서브 카테고리 D 의 리스트 페이지로 바로 이동하게 해주삼"
이란 플래시 어플리케이션 내부적으로 URL Map 을 구현 해야하는 일을 요구 받게 된다.
이 때, "하하하... 플래시는 그거 안되는데." 하면서 해맑게 웃으면 보통 1차적으로 "좆밥" 이라고 마음속으로 지칭하는 표정이 나타나고, 이어 "니가 그것이 안된다고 하지만, 내가 생각하기엔 할 수 있지 않을까 싶은 기분이 들기도 해" 라는 주제의 긴 논쟁이 시작되곤 한다. 그렇게 혓바닥 싸움이 시작되면

해맑게 "전 플래셔에요 ^^" 라고 자신을 소개할 정도로 언어 저항력이 약한 플래시 개발자들로서는 언어 공격력 증댐 +45 에픽템을 낀듯 혓바닥으로 천지창조를 하는 클라이언트들에게 속수무책 당하게 된다.
자. 우선 우리는 URL 에 대한 정의를 알아야 한다. URL 은 우선 URI (uniform resource identifier) 라는 인터넷 상의 특정한 자원들을 표시하기 위한 방법에 포함되는 개념이다. 영어로는 uniform resource locator 라고 하는데 아주 쉽게 이야기해서 인터넷 상의 어떤 자원 (html document, jpeg image, mp3...) 들의 위치를 표시하기 위한 방법이다.
여기서 도출될 수 있는 결론은 Flash 에 대한 자원 경로(위치)는 어디까지나 .swf 로 표현되는 swf 파일 까지라는 것이다. 우리가 가상의 URL 을 구현하기 위해 사용하는 SWFAddress 의 경우가 있지만 그것 역시 # 으로 표현되는 anchor bookmark 를 변칙적으로 활용한 "상태" 를 가상의 위치로 사용하는 것일 뿐이지, 결코 "순수한 위치" 를 구현해 주는 것은 아니다.
여기까지 대화가 성립되면 이제 "그 가상 URL 이라도 구현해라" 라는 요구가 나오게 되는데 여기서 부터가 매우 중요하다.
보통 URL 이 적용된다는 것은 "고정된 위치" 를 필요로 하게 된다. 하지만, 대부분의 플래시 어플리케이션들은 컨텐츠와 컨텐츠가 모션으로 이어지거나 혹은 비동기 통신을 통해서 어떠한 위치 이동없이 바로 컨텐츠를 로드해서 보여주곤 하기 때문에 정확한 위치 규칙을 만들어내기가 매우 어렵다. 물론... 하자면 못할 것은 없지만 왠만큼 플래시 어플리케이션의 특장점이라고 할 수 있는 동적미디어를 구현한 이상은 그 반작용으로 인해서 위치를 특정한 규칙에 의해 정의하기가 어렵게 되고, 말 그대로 하려면 컨텐츠 하나, 하나 마다 위치에 대한 수동 접근이 필요하게 된다. (물론 돈 많이 받고, 시간 널널 하다면 해도 되겠지...)
플래시를 웹 어플리케이션 이라고 부르는데 여러가지 이견이 있을수는 있겠지만, 개인적으로는 플래시는 웹에 속하지 않는다고 본다. 그 이유는 web 즉 거미줄이란 표현이 생겨난 이유는 "URL 로 규정된 하이퍼텍스트 컨텐츠들을 하이퍼링크로 서로 엮어놓음으로서 그 연결 모양새가 마치 거미줄처럼 보인다" 는 이유에서인데, 플래시는 기본적으로 하이퍼링크를 통해 다른 문서에 접근하는 것은 가능하지만, 하이퍼링크를 통해서 Flash 내부에 접근하는 것이 불가능한 거미줄에 얽혀있지 않은 구조를 가지고 있기 때문이다. 플래시는 web 에 호환성이 있긴 하지만, web 에 속해있지는 않다. 우리가 swf 를 엊어놓는 HTML Document 는 어디까지나 플래시에 접근할 수 있는 입구가 될뿐이지, 절대 플래시 내부의 컨텐츠들의 위치를 나타내지는 않는다.
그런 이유에서 플래시는 RIA (Rich Internet Application) 이라고 부르지 Rich Web Application 이라고 부르지 않는다.
그런 이유들에서 기본적인 상황에서 플래시 내부 컨텐츠들에 대한 URL Map 구현이나 하이퍼링크를 통한 플래시 내부에서의 상호 이동은 결코 쉬운일이 아닐수밖에 없다.
2009년02월04일 14:26
엄밀히 말하면 크로스해치(#)기호 이후에 나오는 부분도 URL의 일부죠. 다만 보통 크로스해치 앞까지가 독립된 파일이고 그 뒤로는 파일의 특정 위치를 나타내는 거구요.
2009년02월04일 15:26
아… 니가 말하는건