[Develope]/Network

차세대 무선 인터넷 표준 WAP 2.0

하늘을닮은호수M 2007. 4. 24. 15:16
반응형

많은 이들의 관심을 모았던 무선 인터넷 프로토콜인 WAP 1.x는 초기에 많은 기대와 관심을 불러 모았지만 일본을 제외한 거의 대부분의 국가에서 실패하고 말았다. 표준화 기구인 WAP 포럼은 과거의 실패를 교훈 삼아 새로운 무선 인터넷 규격인 WAP 2.0을 내놓고 기구의 명칭을 OMA로 바꾸면서 큰 변화를 시도하고 있다. 총 3회의 연재를 통해 WAP 2.0의 특징 및 장점를 살펴보고 WAP 2.0 컨텐츠를 제작하는 방법에 대해 알아보도록 하자.

산업 혁명 이후 가장 빠른 속도로 발달한 것이 있다면 바로 통신 관련 기술이라 해도 과언이 아닐 정도로 인간은 통신 수단을 끊임없이 발전시켜 왔다. 휴대전화 역시 주로 음성통화와 짧은 메시지 교환을 위해 사용되었지만 최근에는 뉴스, 교통 상황 및 위치 정보를 확인하거나 내장된 카메라로 사진과 동영상을 찍어 서로 교환하는 일도 늘고 있다. 이 같은 패러다임을 주도하고 있는 기술인 WAP(Wire less Application Protocol) 2.0은 OMA(Open Mobile Alliance, 구 WAP 포럼)와 공개 모바일 아키텍처 이니셔티브(open mobile architecture initiative)가 일본의 WAP 관련 규격을 대거 수용하여 내놓은 새로운 무선 인터넷 표준이다. 먼저 WAP 1.x의 실패 원인을 자세히 살펴보도록 한다.

WAP 1.x는 왜 유럽에서 실패했나?
현재 일본에서는 휴대전화를 이용해서 자신의 사진이나 동영상을 자막과 함께 타인에게 보내는 영상 메일 서비스가 등장해서 큰 인기를 끌고 있다. 그리고 국내에서는 SK텔레콤의 준(June)이나 KTF의 핌(Fimm) 등 휴대전화를 이용한 동영상 서비스가 시작되어 본격적인 모바일 멀티미디어 시대가 도래했음을 알리고 있다. 그러나 불과 3~4년 전만해도 인터넷 전문가들이 ‘WAP은 죽었다!’고 공언할 정도로 WAP 서비스는 일본을 제외한 거의 모든 국가에서 침체를 겪어야 했으며 이 현상은 유럽에서 특히 심하게 나타났다.

긴 접속 시간과 다운로드
2000년 가을 영국에서 WAP 서비스에 대한 현장 연구 결과가 실시되었다. 이 테스트는 20명의 사용자에게 WAP 기능이 내장된 전화기를 준 후 느낀 점을 기록하는 방식으로 진행됐는데, 그 결과를 보면 테스트에 참여한 사용자 중 70%가 WAP 서비스를 더 이상 사용하지 않기로 했다고 한다. 이는 사용성(usability) 전문가인 제이콥 닐슨(Jakob Nielsen)의 웹 사이트인 AlertBox(http://www.useit. com/alertbox)를 통해 밝힌 자료이다. 사용자들은 세계 각지의 뉴스 머리기사 읽기, 지역 날씨 확인하기, TV 프로그램 스케쥴 보기 등을 작업하기 위해 2~3분의 시간을 소비해야 했다. 물론 테스트가 종료되기 직전에는 이 시간이 약간 줄어들긴 했지만 그 차이는 평균 1분도 되지 않았다(<표 1>).

제이콥 닐슨이 인터넷 전문가들에게 이와 같은 작업을 하기 위해 평균적으로 얼마만큼의 시간이 걸려야 불편함을 느끼지 못할 것인지를 물었는데, 그들은 30초를 마지노선이라 보았다. 사실 사용자들은 PC를 이용해서 웹 서핑을 할 경우에도 특정 웹 사이트가 단 몇 초간 지연될 경우에도 답답함을 느낀다. 결국 제한적인 정보의 양과 지연되는 시간, 휴대전화 단말기의 작은 화면 등을 고려할 때 차라리 신문을 사는 편이 낫다는 결론이 나온 것이다.

준비되지 않은 WAP 서비스 수익 모델
신기술이 도입되는 시기에는 실제 그 기술과 관련된 업무를 추진하는 담당자들이 커다란 혼선을 겪게 마련이다. WAP 역시 많은 이동통신회사와 휴대전화 단말기 제조회사에 커다란 숙제를 안겨주었다. 과거 WAP 관련 업무를 진행했던 노키아의 한 직원은 WAP 마케팅이 효과적으로 이루어지지 못했다고 지적했으며 그 결과 WAP 포럼이 이동통신회사, CP, 유저들에게 WAP이라는 개념을 제대로 전달해서 이해시킬 수 있는 기회를 필연적으로 상실했다고 털어놓았다. 또 많은 이들은 무선 인터넷이 당시 강한 모멘텀을 등에 업은 유선 인터넷과 매우 다르다는 사실을 인지하지 못했고, 그 결과 무선 인터넷 사업 주체들이 가장 중요한 요소라 할 수 있는 이동성(mobility)을 간과하기에 이르렀다. 더욱 심각한 문제는 수익을 보장할 수 있는 실제적인 수익 모델이 존재하지 않았기 때문에 WAP 관련 사업에 뛰어든 이들이 동상이몽을 가지고 있었다는 점이다. 물론 그들의 꿈은 실현될 수 없었다.

일본의 대표적인 이동통신회사인 NTT 도코모는 유럽 업체들과 달리 WAP 서비스 도입 초기부터 휴대전화 단말기, 설비(인프라스트럭처) 및 서비스 등 WAP 서비스를 구성하는 3대 요소들의 상호 작용이 어떻게 이루어지는지를 확실히 이해하고 있었다. 그 결과 도코모는 휴대전화의 하드웨어 사양, 이동통신 설비뿐만 아니라 CP에 대한 엄격한 도코모 포털 입점 요건과 소매점을 통한 휴대전화 판매 방식 등을 제어함으로써 전체적인 가치 사슬(시장 수요를 충족시키기 위한 일련의 동업 회사들)을 통합할 수 있었다.

도코모의 전략에 있어 가장 중요한 것은 자신들이 3대 요소들을 직접 제어함으로써 새로운 시장을 창출했다는 점이다. 반면 유럽은 여러 국가로 구성된 연합의 형태를 가지고 있기 때문에 일본과 달리 시장이 다원화되어 있어 가치 사슬에 대한 전체적인 관리가 쉽지 않았다. 따라서 유럽의 이동통신회사들은 WAP 서비스를 통해 실제 이익을 내기 위해 꽤 많은 노력과 시간을 투자해야 했다.

무선 인터넷 전용으로 개발된 네트워크와 컨텐츠의 부재
1997년 6월 에릭슨, 모토로라, 노키아, UP(Unwired Planet) 등 4개 회사는 WAP이라는 새로운 무선 인터넷 표준을 제정했다. UP가 제시한 휴대전화 단말기용 미니 브라우저에 대한 아이디어를 공룡 기업들이 받아들인 것이었다. 그리고 1996년 말 부터 1997년 초에 걸쳐 이들은 인터넷 서비스가 무선 영역으로 확대되는 것이 시간문제라는 사실을 깨달았다. 그러나 당시에는 브라우저와 SMS 등 극히 일부의 무선 인터넷 관련 애플리케이션만이 개발되고 있었다.

당시 에릭슨의 경우 WAP 포럼에서 논의될 수 있을만한 수준의 협력 프로젝트가 시험 연구 단계에 머물러 있는 것은 아니었지만 최고위 개발자나 책임자가 직접 WAP 관련 업무에 손을 대지는 않았다. 당시 무선 인터넷 관련 업무를 담당하던 에릭슨의 Joakim Nelson은 당시를 다음과 같이 회상한다. “우리는 열정적으로 무선 인터넷 기술만을 발전시키려 노력했습니다. 그렇지만 그것이 실제로 꽤 대단한 기술이 될 것이라는 사실을 깨달은 사람은 없었지요.” 결국 WAP 포럼의 일원들은 좁은 시야를 확보한 채 표준 제정 및 기술 개발에 전념했고 사용자에게 중요한 사용성이라는 측면을 간과할 수밖에 없었다. 유럽의 이동통신회사들은 일반 인터넷을 통해 볼 수 있는 웹사이트와는 다른, 무선 인터넷에 특화된 컨텐츠와 서비스를 제공하지 못했던 것이다.

2002년 1/4분기를 기준으로 전 세계에는 총 6억 대 이상의 GSM 휴대전화 단말기가 사용되고 있었지만 이와 같은 이유들 때문에 실제로 이를 이용해서 무선 인터넷 서비스를 사용하는 가입자의 수는 매우 적은 편이었다. 이는 일본에서 2001년 초기에 이미 60% 이상의 가입자들이 무선 인터넷을 사용하고 있었다는 사실과 극명하게 대조된다(참고로 2001년 여름 이후 일본에서 출시되는 모든 휴대전화는 인터넷 기능을 갖추게 되었다).

<1> 테스트 결과
 테스트 초기테스트 종료 직전
세계 각지의 뉴스 머리기사 읽기1.31.1
지역 날씨 확인하기2.71.9
TV 프로그램 스케쥴 보기2.61.6분

WAP 2.0, 1.x와 무엇이 다른가?
지금까지 살펴본 것과 같이 WAP은 한때 쓰라린 실패를 맛봐야 했지만 2002년에 들어서면서 중대한 전환기를 맞게 되었다. 시간이 흐름에 따라 WAP은 무선 인터넷의 사실상 표준(de facto standard)으로 받아들여지게 되었으며 점차 WAP에 대한 거부감이 사라지고 있는 것이 사실이다. 아울러 관련 업체들이 보다 현실적인 시각을 가지고 제품과 서비스를 내놓으면서 ARPU(가입자 1인당 이익) 중 무선 데이터 통신이 차지하는 비중은 2002년 10% 수준에서 2007년 20% 이상으로 증대될 것으로 예상되고 있다. 이와 같이 큰 변화를 가지고 온 WAP 2.0은 어떠한 특징을 가지고 있을까? 여기서는 WAP 2.0의 장점과 1.x와의 차이점을 살펴보도록 하자.

무선 애플리케이션 환경
무선 애플리케이션 환경(Wireless Application Environment, 이하 WAE)은 WAP 브라우저를 내장한 휴대전화 단말과 WAP/웹 애플리케이션이 데이터를 교환하는 방식을 규정한다. WAP 2.0은 마크업 언어(markup language), 즉 XHTML MP(XHTML Mobile Profile ) 및 WAP 1.x에서 사용되던 WML을 통해 WAP 브라우저에 데이터 교환을 위한 기반을 제공한다. 이런 마크업 언어는 각자의 특성을 살려서 휴대전화에 데이터를 적절한 형태로 표시할 수 있게 해 주며 클라이언트용 스크립트 언어인 WML 스크립트는 부가적인 데이터 표현 및 제어 기능을 제공한다. 그리고 WAE는 WML과 WML 스크립트를 처리함에 있어 전송 및 클라이언트 구현의 효율 개선을 위해 게이트웨이가 휴대전화에 데이터를 전송하기 전에 WML 1.x를 토큰화(tokenisation)하고 WML 스크립트를 컴파일하는 기능을 지원한다. 참고로 WAE는 상술된 마크업 언어 외에도 WBMP 이미지와 vCard, vCalendar 등의 컨텐츠 타입을 지원한다.

WAP 2.0 규격에 포함된 WAE는 XHTML MP, 다른 몇몇 관련 기술, 그리고 다음 요소들을 정의함으로써 애플리케이션 중심의 접근 방식을 제공하고 있다.

◆ XHTML MP : WAE에서 사용되는 기본 마크업 언어인 XHTML MP는 W3C에 의해 제정된 XHTML의 기본 기능을 확장한 것이다. XHTML MP의 코어는 확장 가능하도록 디자인되었으며 WAE는 기능 개선을 위한 추가적인 마크업 관련 기능을 정의함으로써 이 확장성을 활용한다. XHTML MP를 사용하면 XHTML의 모듈화를 통해 필요한 기능을 추가하는 일이 용이하다. 또한 코어 XHTML Basic 언어로 작성된 문서를 XHTML MP 브라우저로 읽는 일도 가능하다.

◆ 스타일 시트 : WAE는 컨텐츠 표시 방식을 스타일 시트(style sheet)에 대한 지원을 통해 개선했다. 이 스타일 시트는 W3C가 제정한 CSS의 모바일 관련 기능에 기반을 두고 있으며 대부분의 인터넷 브라우저가 지원하는 인라인 및 외부 스타일 시트를 모두 지원한다.

◆ WML 1.x와의 하위 호환성 보장 : WML 1.x 애플리케이션에 대한 하위 호환성이 완벽하게 보장된다. 이는 WML 1.x 및 XHTML MP를 모두 지원하거나 WML 1.x 컨텐츠를 WML 2.0 컨텐츠로 변환하는 사전 작업에 의해 가능하다. WML 2.0은 하위 호환성의 보장을 위해 WML 1.x의 특정 기능을 추가해서 XHTML MP을 확장한 것이다. WAP 2.0은 XSLT(eXtensible Stylesheet Language Transformation)을 통해 변환 모델(transformation model)을 제공하며 이를 이용하면 WML 1.x로 작성된 문서를 WML 2.0 코드로 변환할 수 있게 된다. 참고로 OMA는 WML 2.0에 포함된 특수 확장 기능은 WML 1.x 문서를 변환할 경우에만 사용하도록 권장하고 있다.

이와 같은 특징을 이용하면 휴대전화는 XHTML 베이직으로 작성된 타 인터넷 클라이언트용 컨텐츠와 WML 확장 기능을 사용하는 컨텐츠 모두를 아무런 문제없이 표시할 수 있게 된다. 이와 같이 하위 호환성이 보장되면 WAP 1.x 컨텐츠에 대한 추가적인 비용을 지불할 필요가 사라진다.



<그림 1> WAP의 가치 사슬





<그림 2> WAP 프로그래밍 모델




WAP 프로그래밍 모델
웹 프로그래밍 모델과 평행선상에 있는 WAP 프로그래밍 모델은 풀 모델(클라이언트가 서버에게 컨텐츠를 요청)을 사용한다. 그러나 WAP은 WTA(Wireless Telephony Application)와 푸시 모델(별도의 요청이 없어도 서버가 클라이언트에게 컨텐츠를 전송)을 통해 텔레포니(telephony) 기능을 추가함으로써 웹 아키텍처를 확장한다.

과거의 WAP에서는 서버와 클라이언트 사이의 프로토콜 연동 작업을 처리하기 위해 WAP 프록시(혹은 WAP 게이트웨이)가 필요했다. WAP 프록시는 인터넷 통신 프로토콜에 기반을 둔 WAP 프로토콜을 사용해서 클라이언트와 통신했으며 서버와는 표준 인터넷 프로토콜을 사용해 데이터를 주고받았다. 그러나 WAP 2.0에서는 이러한 WAP 프록시가 필요하지 않은데, 그 이유는 서버와 클라이언트 사이의 데이터 통신이 HTTP/1.1을 통해 이루어질 수 있기 때문이다. 그러나 WAP 2.0에서 WAP 프록시를 사용하면 위치 기반 서비스, 프라이버시, 접속 여부 표시 서비스 등의 부가적인 모바일 서비스를 제공할 수 있다. 또한 푸시 기능을 제공하기 위해서는 반드시 WAP 프록시를 사용해야 한다.

WAP 프로토콜 스택
WAP 2.0의 가장 중요한 특징 중 하나는 휴대전화 단말기가 IP 접속 기능을 가지고 있을 경우 인터넷 프로토콜(IP)이 지원된다는 점이다. 물론 과거 WAP 1.x가 사용되던 시절에 IP를 지원하지 않는 네트워크 및 저 대역폭 IP 베어러(bearer)와 함께 사용되던 ‘WAP 스택’ 역시 지원이 된다. WAP 2.0이 지원하는 이 두 가지 스택은 애플리케이션 환경에 서로 유사한 서비스를 제공한다.

레거시 프로토콜 레이어(Legacy Protocol Layer)
WAP 2.0은 ‘WAP 1.x 스택’을 지원하며 이 프로토콜들은 상대적으로 레이턴시가 긴 저대역 베어러 네트워크에 최적화되어 있다.

◆WSP(Wireless Session Protocol) : WSP는 HTTP/1.1의 기능 외에도 장시간 유지되는 세션 및 세션 중지/계속과 같은 새로운 기능을 포함하고 있다. WSP는 다음에 설명할 두 가지 세션 서비스에 대한 일관된 인터페이스와 함께 WAP의 상위 레벨 애플리케이션 레이어를 제공한다. 그 첫 번째는 트랜잭션 레이어 프로토콜의 상위에서 동작하는 접속 모드 서비스이며 두 번째는 보안이 유지된(혹은 유지되지 않은) 데이터그램 트랜스포트 레이어의 상위에서 동작하는 비 접속 서비스이다.

◆WTP(Wireless Transaction Protocol) : WTP는 트랜잭션 기반의 경량(light weight) 프로토콜이며 모바일 스테이션이나 키오스크와 같은 씬 클라이언트(thin client)에 적합하다. 무선 데이터그램 네트워크에서 효과적으로 동작하는 WTP는 다음과 같은 장점을 가지고 있다.

①데이터그램 서비스보다 안정적이다. WTP는 데이터그램 서비스가 사용될 경우 요구되는 재전송 및 ACK(acknowledgement) 신호를 상위 레이어가 사용하지 않아도 되게끔 해 준다.

② 접속 기반 서비스에 비해 효율성이 좋다. WTP는 접속 개시 및 종료 단계에 필요한 추가 접속을 필요로 하지 않는다.

③ 브라우징 등 트랜잭션에 기반한 서비스에 맞게 디자인되어 있기 때문에 메시지 기반 프로토콜보다 효과적이다.

◆WTLS(Wireless Transport Layer Security) : WTLS는 SSL(Secure Sockets Layer)이라고 불리던 TLS(Transport Layer Secuirty) 프로토콜에 기반을 둔 보안 프로토콜이며 두 개의 애플리케이션 간에 프라이버시, 데이터 무결성, 인증 기능과 더불어 보안 접속 관리를 위한 인터페이스를 제공한다. TLS 1.0과 유사한 WTLS는 그 외에도 데이터그램, 최적화된 핸드셰이킹, 동적 키 갱신 등을 지원하며 저대역 통신 채널에 최적화되어 있다.

◆WDP(Wireless Datagram Protocol) : WDP는 상위 레이어 프로토콜에 대한 통상적인 데이터그램 서비스이며 사용 가능한 베어러 서비스 상에서 눈에 띄지 않게(transparently) 동작한다. WDP의 동작 과정에서 일관성이 유지되는 이유는 베어러의 특정 기능에 대한 어댑테이션이 존재하기 때문이다. 이를 통해 무선 네트워크의 서비스로부터 독립되어 동작할 수 있는 상위 레이어에 대한 인터페이스가 제공된다.

<그림 4>는 예전에 사용되던 레거시 스택이 각종 WAP 기기와 WAP 게이트웨이 사이에서 어떻게 동작하는지를 보여준다. 여기서 WAP 게이트웨이는 WSP가 제공하는 서비스를 HTTP 프로토콜과 상호 연결함으로써 유선 인터넷에 존재하는 데이터에 접근할 수 있게 해 준다.



<그림 4> WAP 1X 게이트웨이 예제
IP를 지원하는 네트워크용 프로토콜 레이어
이미 살펴본 것과 같이 OMA는 WAP 2.0 규격을 통해 WAP 환경에 IP를 도입했다. 이는 무선 기기에 IP에 대한 직접 지원 기능을 제공하는 2.5G/3G 등 고속 무선 네트워크의 등장에 힘입어 이루어진 것이다.

◆WP-HTTP(Wireless Profile HTTP) : WP-HTTP는 무선 환경에 최적화된 HTTP이며 HTTP/1.1과 상호 연동이 가능하다. WAP 기기와 WAP 프록시/WAP 서버간의 데이터 통신 모델은 HTTP 요구/응답 트랜잭션이라 할 수 있다. 이 프로토콜은 응답 메시지 바디 압축 및 보안 터널 등을 지원한다.

◆TLS(Transport Layer Secutiry) : 무선판 TLS 프로토콜로 보안이 보장된 트랜잭션의 상호 연동을 가능하게 한다. 이 프로토콜은 암호 스위트(cipher suites), 인증서 형식, 서명 알고리즘, 세션 재개(resume) 등의 기능을 포함하며 트랜스포트 수준에서 종단간 보안을 지원하기 위해 TLS 터널링에 대한 방법을 정의한다.

◆WP-TCP(Wireless Profiled TCP) : WP-TCP는 접속 기반 서비스를 제공한다. 이 프로토콜은 무선 환경에 최적화되어 있으며 인터넷에서 사용되는 일반 TCP와 상호 연동이 가능하다. 이 프로토콜은 TCP의 성능 향상을 위해 IETF PILC 그룹이 제안한 장거리/저대역 네트워크에서의 몇 가지 최적화 메커니즘을 포함하고 있다.

<그림 5>는 WAP 2.0 환경에서 WAP 기기와 웹 서버가 지금까지 설명한 프로토콜을 이용해서 데이터를 주고받는 방법을 보여준다. 이 예에서는 WAP 프록시가 안전한 종단간 HTTP 트랜잭션을 지원하는 TLS 터널을 마련해 주고 있다. 참고로 4개의 TCP 블럭 중 우측 2개는 무선 규격 TCP를 나타낸다.



<그림 5> WAP 20에서 일반 TCP 및 무선 규격 TCP, HTTP를 이용해서 WAP HTTP 프록시를 구현한 예



WAP 2.0은 앞서 살펴본 레거시 프로토콜과 IP를 모두 지원하고 이 스택들은 서로 독립적으로 동작한다. 이는 종단간 트랜잭션이 수행됨에 있어서 이들 프로토콜을 섞거나 서로 짝을 지어 사용하는 일이 없다는 의미이다. 따라서 WAP 1.x 스택과 WAP 2.0 스택의 상위에 WAE가, 그 위에 WAP 기기가 존재한다고 말할 수 있다. 그리고 레거시 프로토콜 및 IP를 모두 지원하는 휴대전화 단말기를 사용할 경우 특정 지역에서 지원되는 네트워크 망의 종류에 따라 스택간의 전환도 가능하다.

WAP 2.0에서 새로 추가된 기능
WAP 2.0 규격에는 상기된 내용 외에도 WAP 푸시 등 새로이 추가된 기능에 대한 정의가 대거 포함되어 있다. 여기서는 이런 신규 기능에 대해 살펴보자.

WAP 푸시
WAP 푸시는 서버 애플리케이션이 푸시 프록시를 통해 컨텐츠를 휴대전화 단말기에 전송하거나 ‘푸시(요청이 없어도 일방적으로 데이터를 전송하는 것)’할 수 있게 해 주며 WAP 2.0에서 그 기능이 강화되었다. 푸시 기능은 메시징, 주식 가격, 교통 상황 정보 등의 데이터를 실시간으로 전송해야 하는 애플리케이션이 주로 사용한다. 만일 푸시 기능이 없다면 애플리케이션이 새로운 정보나 상태의 확인을 위해 서버에 폴링(polling)을 해야 하는데 이렇게 되면 무선 네트워크의 리소스를 필요 이상으로 사용하게 되므로 효율이 떨어진다. WAP 푸시는 푸시 프록시를 통해 푸시 메시지의 생성과 소멸, 저장 및 전달 기능 등을 지원하며 데이터 전달을 수행하는 베어러를 선택할 수 있게 해 준다.

UA 프로파일
이 서비스는 클라이언트가 지원하는 기능과 유저가 설정한 옵션 등을 애플리케이션 서버에 알리는 기능을 한다. WAP 2.0에서 개선된 UA 프로파일(User Agent Profile)은 W3C의 CC/PP(Composite Capabilities/Preference Profiles)에 기반을 두어 제정되었으며 요청에 의해 클라이언트 및 사용자 관련 정보를 서버에 전송함으로써 클라이언트/서버 트랜잭션 모델을 지원한다. 이런 정보를 통해 서버는 요청에 대한 응답을 수행하기 전에 컨텐츠를 적절히 수정할 수 있다. 또한 UA 프로파일 서비스 모델을 이용하면 프록시를 통해 이러한 맞춤 서비스를 제공함으로써 부가 서비스를 제공할 수 있게 된다. 개인의 프라이버시를 보호하기 위해 유저가 전송될 정보를 직접 제어하는 일도 가능하다.
WTA(Wireless Telephony Application)
이 서비스는 데이터 기능을 제공하는 전통적인 애플리케이션 환경 내에서 개선된 텔레포니 애플리케이션이 동작하기 위한 툴을 제공한다. 이를 통해 전화 걸기/받기, 통화 돌리기(redirecting), 지연시키기 등 전화 관련 서비스를 다른 데이터 서비스와 아무런 문제없이 조합해서 사용하는 일이 가능하다. 따라서 WAP WTA 기능을 갖춘 휴대전화 단말기는 인터넷 및 음성 서비스가 통합된 플랫폼이라 할 수 있다.

EFI(External Functionality Interface)
EFI는 사전에 정의된 WAE 기능 밖에서 동작하는 임베디드 애플리케이션을 가진 구성 요소와 WAE 사이의 인터페이스 규격이다. 이는 브라우저나 기타 애플리케이션의 기능을 확장하는 플러그인 모듈과 유사하다. EFI 프레임워크는 스마트 카드, GPS 장치, 디지털 카메라 등 외부 기기를 제어하기 위해 필요한 인터페이스를 정의하기 위해 사용될 수도 있다.

영구 저장 인터페이스(Persistent Storage Interface)
휴대전화 단말기 혹은 네트워크와 연결된 메모리 장치에 존재하는 데이터를 읽거나 쓰고 관리하는 인터페이스를 포함한 표준 저장 서비스를 규정한다.

데이터 동기화(Data Syncronization)
데이터 동기화란 서로 다른 OS를 가진 각종 휴대전화 간에 데이터를 교환하는 작업을 말한다. OMA는 데이터 동기화 솔루션으로 SyncML 언어를 채택했으며 WSP 및 HTTP/1.1 프토토콜 모두 SyncML 메시지를 지원한다. SyncML에 대한 정보는 http://www. syncml.org에 수록되어 있다.

MMS(Multimedia Messaging Service)
이 서비스는 다양한 부가 기능을 갖춘 메시징 솔루션을 구현하기 위한 토대를 제공하며 서로 다른 형식으로 제작된 컨텐츠가 전달될 수 있도록 해 준다. 서비스 모델에 따라 MMS는 SMS와 같은 빠른 배달 방식, 이메일과 유사한 저장 후 전달 방식, 혹은 이 두 가지 방식을 모두 지원한다. 푸시, UA 프로파일 등과 함께 사용될 경우 MMS는 전송된 컨텐츠를 수신 기기에서 효과적으로 사용되는 형태로 변환하는 메시지 알림 기능을 제공하는 메시징 솔루션을 제작할 수 있게 해 준다.

프로비저닝(Provisioning)
프로비저닝은 무선 네트워크 상에서 동작하기 위해 필요한 정보를 WAP 클라이언트에게 제공하는 일반적인 방법을 규정한 것이다. 이를 통해 이동통신회사는 각종 툴을 이용해서 휴대전화 단말을 관리할 수 있게 된다. 만일 휴대전화 단말과 이동통신회사가 SIM 카드(Su bscriber Identity Module : GSM 방식의 휴대전화 단말기에서 사용되는 손톱만한 크기의 스마트 카드)와 프로비저닝을 지원한다면 이 카드를 새로 구입한 단말기에 삽입함으로써 기존의 전화번호 및 사용자 정보 등을 그대로 사용할 수 있게 된다.

픽토그램(Pictogram)
픽토그램은 WAP 2.0 브라우저에서 사용되는 작은 이미지 혹은 아이콘에 대한 규격이다. OMA는 MSN 메신저 등에서 흔히 찾아볼 수 있는 소형 아이콘의 규격을 정의함으로써 그림 파일이 차지하는 메모리 용량을 상대적으로 줄이고 문자가 아닌 그림을 통해 국가간 언어 장벽을 극복할 수 있는 계기를 마련했다.



SIM 카드의 모습
손톱보다 조금 더 크다.




네이트 초기 페이지의 모습
각 메뉴 옆에 위치한 아이콘은 모두 픽토그램으로 처리된 것이다.



WAP 2.0의 장점
CPU나 LCD 등 하드웨어 사양이 개선되면서 휴대전화의 기능과 성능은 과거와 비교하기 힘들 정도로 빠르게 발전하고 있다. 불과 1~2년 전만 해도 컬러 LCD와 16 화음 등이 중요한 이슈였지만 이제 사진 및 동영상을 촬영해서 MMS를 통해 전송하는 등 휴대전화 단말기의 멀티미디어 기능이 크게 확대되고 있다. 이제까지 살펴본 것과 같이 OMA는 WAP 1.x의 실패를 교훈 삼아 기능과 확장성 등을 크게 개선한 WAP 2.0을 내놓았으며 이 새로운 규격은 최근 속속들이 등장하고 있는 멀티미디어 휴대전화에 부합되는 특징을 보여준다. 그렇다면 사용자, 이동통신회사, 휴대전화 단말기 제조 회사 측면에서 본 WAP 2.0의 장점에는 어떤 것이 있을까?

WAP 2.0은 XHTML 베이직을 지원하므로 개발자들이 웹 및 WAP 클라이언트용 애플리케이션을 개발할 수 있게 되었다. 따라서 웹/WAP 클라이언트에서 사용 가능한 공통된 언어 구성 요소와 개발 툴을 통해 개발비를 절감할 수 있다. 또한 이동통신 회사 역시 최소한의 비용만으로 일반 웹 서버를 통해 서비스를 제공할 수 있으므로 위험 요인을 줄이는 일이 가능하다. 또한 과거 폐쇄적인 무선망을 대상으로 하던 WAP 규격은 시간이 흐름에 따라 점점 유선 인터넷의 구성 요소들을 흡수하고 있다. XHTML 베이직, TCP/IP, HTTP/1.1, TLS 등이 그런 규격 및 프로토콜이다.

그리고 WAP 2.0은 확장성 및 네트워크의 업그레이드까지 고려해서 제정된 규격이라 할 수 있다. WAP은 프레임워크를 형성하는 네트워크 기술로부터 최대한 독립적으로 설계되었으며 이런 이유 때문에 3G 표준과도 호환된다. 실제로 무선 네트워크의 대역폭은 매년 크게 증가하고 있지만 이 대역폭에 대한 비용은 0이 되지 않는다. 그 원인은 터미널 등 이동통신 설비의 전력 소모량 증가, 장비의 가격 인상, RF(Radio Frequency)의 사용량 증가, 그에 따른 네트워크 부하 증가 등이 원인이라 할 수 있다. 그러나 아이러니컬한 사실은 휴대전화 단말기의 제한된 동작 환경(한 손 조작, 작은 화면, 저전력 소비 등)은 3G 네트워크 시대에 이르러서도 크게 바뀌지 않았다는 것이다. 그러므로 지금도 무선 기기와 네트워크 리소스를 무선 환경에 적합하도록 최적화시킬 필요성은 존재하며 이를 위해 WAP 2.0 규격이 등장한 것이다.

그렇다면 사용자, 즉 가입자들에게는 WAP 2.0이 어떤 장점을 가져다 줄 수 있을까? 가장 큰 장점은 픽토그램 및 MMS를 통해 더욱 시각적인 멀티미디어 서비스를 경험할 수 있게 되었다는 점이다. 6만5000색 이상을 지원하는 컬라 LCD가 휴대전화 단말기에 탑재되면서 CP들은 기존의 텍스트 기반 정보에서 탈피해 귀여운 아이콘이 추가된 컨텐츠 외에도 그림 친구(배경 화면)나 사진집 등의 부가 서비스를 제공하게 되었다. 그리고 일본에서는 NTT 도코모나 J-Phone 등의 이동통신회사가 사진/동영상 메일 전송 서비스를 제공하고 있는데 동영상에 자막을 넣어 전송하는 일도 가능하다. 과거에는 텍스트 위주의 단편적인 정보를 얻기 위해 휴대폰의 인터넷 기능을 이용했다면 최근 들어 가족이나 친구들의 사진을 찍어서 서로 교환하고 자막을 넣은 동영상 메일을 애인에게 전송하는 등 휴대폰의 활용 방식 자체가 크게 확장되고 있다. 이처럼 WAP 2.0은 우리의 생활 방식까지도 변화시키고 있다.

WAP 2.0을 통해 무선 인터넷의 방향을 가늠하자
지금까지 새롭게 등장한 무선 인터넷 규격인 WAP 2.0의 특징과 장점을 살펴보았다. WAP 관련 기술에 있어 중추적인 역할을 해 온 OMA가 WAP 2.0을 발표한 지 1년 이상이 지났지만 그와 관련된 세부 규격은 지금도 끊임없이 수정/발전되고 있다. 2.5G를 거쳐 3G 그리고 4G로 이어지는 무선 네트워크의 발전 속도는 점차 가속화되고 있으며 관련 업계 역시 과거의 실패를 반복하지 않기 위해 각별한 노력을 하고 있다. 저물어 가는 WAP 1.x와 이제 막 빛을 보기 시작한 WAP 2.0의 특징과 장단점을 파악한다면 무선 인터넷의 발전 방향을 어느 정도 가늠할 수 있을 것이다.
우리나라의 이동통신 가입자 수는 이미 3천만 명을 넘어섰다. 이동통신 인구가 점차 증가하면서 무선 인터넷 사용자도 해마다 증가하고 있다. 게다가 대한민국은 자타가 공인하는 무선 인터넷 강국이 아니던가. 이미 무선 인터넷은 생활의 일부로 자리잡아 가고 있으며 서비스되고 있는 컨텐츠의 종류는 기하급수적으로 증가하고 있다. 초고속 인터넷이 빠르게 보급된 것처럼 앞으로 무선 인터넷도 이와 비슷한 속도로 보급될 것임이 자명한 일이다.

앞으로 2회에 걸쳐 WAP이라는 환경을 어떻게 구성하고 제작할 수 있는지 알아보도록 하자. WAP 프로그램을 작성하기 위해서는 반드시 WAP 환경에 대한 기본적인 이해가 필요하다. WML(Wireless Markup Language)은 HDML과 XML을 기반으로 만들어진 무선 인터넷 마크업 언어이다. 그리고 무선 네트워크, 예를 들어 휴대폰이나 GPS 등과 같은 이동통신 환경에서 사용할 애플리케이션을 개발할 때 전송 표준으로 사용하기 위해 개발된 프로토콜이다.



<그림 1> WAP 구동 환경



<그림 1>을 보면 WAP 환경에 대한 개략적 구성을 알 수 있다. 웹 환경과 크게 다르지 않음을 알 수 있다. 특히 중간에 있는 프록시라는 것은 WAP 게이트웨이라고 부르기도 하는데 무선 네트워크와 인터넷 서버 간의 정보 흐름 제어와 프록시 및 DNS 기능 수행, 가입자 및 과금 관리 기능을 한다는 것이 차이점이다.

서비스 환경
기본적으로 웹 서버와 클라이언트만 있으면 기초적인 동작은 가능하다. 웹 서버는 IIS(윈도우), 아파치(유닉스, 리눅스 등), 필요에 따라 톰캣, 웹로직 등과 같이 사용할 수 있다. 클라이언트 툴로는 이동통신 단말기가 필요하다. 일반적으로 셀룰러, PCS로 분류되는 휴대전화를 말한다. 추가적으로 더 나은 서비스를 위해 데이터베이스를 사용할 수 있는데 거의 모든 DB와 연동이 가능하다. 또한 ASP, JSP, PHP와 같은 서버 사이드 언어도 사용할 수 있다. 한 가지 주의할 점은 국내 이동통신사마다 조금씩 다른 환경을 제공한다는 점이다. <표 1>을 보면 국내 이동통신사들의 사용하는 WAP 언어에 대해 알 수 있다.

서버 설정
웹 서비스를 하기 위해서는 웹 서버에 어떠한 포맷의 페이지를 사용할 것인지만 정하면(혹은 기본 설정만으로도) 페이지를 서비스할 수 있다. WAP 서비스를 위해서는 MIME(Multipurpose Internet Mail Extension) 설정을 반드시 해줘야 한다. 여기서는 WML 2.0 환경이므로 이에 맞는 MIME을 설정해주면 된다. 기본적으로 MIME 설정에는 WML과 WML 스크립트에 대한 설정이 반드시 필요하다. 그리고 이동통신사마다 사용하는 이미지나 사운드 포맷이 다르므로 이에 맞게 설정을 해줘야 한다. 이번 연재에서는 SK텔레콤을 기준으로 설정된 MIME 설정을 사용하기로 한다. 참고로 이 설정은 XHTML, WMl 2.0을 사용하게 될 LG텔레콤 서비스에서도 유효하다.



<화면 1> IIS에서 MIME 설정 추가하기 1, MIME 설정 콘솔 열기




<화면 2> IIS에서 MIME 설정 추가하기 2, MIME 설정 추가하기




<화면 3> IIS에서 MIME 설정 추가하기 3, 이렇게 추가한다.



설정됐으면 확인해보자!
서버 설정이 완료됐으면 올바르게 설정됐는지 확인해봐야 한다. 확인할 수 있는 방법은 한 가지 뿐이다. 직접 페이지를 제작하여 눈으로 확인하는 방법밖에 없다. 이를 위해서는 WAP 페이지를 제작해야 한다. 먼저 WML 페이지의 구조를 살펴보도록 하자(<리스트 1>).

<리스트 1> WML 2.0 페이지 구조



"http://www.wapforum.org/DTD/wml20.dtd">





Card to Card 이동하기












Card2로 이동하기














Card2로 이동하였다!!








DTD 선언 (문서 선언) : XML Prolog, 문서정의를 위하여 XML의 DTD를 사용한다. WML 2.0이므로 이에 맞는 DTD 선언을 사용한다.
Deck : 서로 연관된 여러 장의 Card가 한 개의 파일을 구성할 때, 이 Card의 집합을 Deck이라고 한다.
Card : 화면에 출력되는 단위를 말한다. 여러 개의 Card로 구성된 WML 페이지는 여러 개의 HTML 페이지의 묶음으로 볼 수 있다.
Element : HTML에서와 같이 화면을 구성하거나 기능을 수행하는 단위 요소를 말한다.

간단한 페이지를 만들어 보자. 웹 프로그래밍을 처음 하는 사람이 제일 먼저 사용하게 되는 개발 툴은 메모장이 아닐까 싶다. 필자도 처음에는 메모장에서 모든 페이지를 제작하여 저장하고 웹 브라우저에서 확인하는 방법으로 작업을 했다. 가장 간단하면서도 사용하는 데에 필수적인 기능을 가지고 있는 매우 유용한 툴이 아닐 수 없다. 하지만 사용할 수 있는 용량의 제한이 있고 기능의 편리성에는 한계가 있기 때문에 최근에는 웹 개발 도구를 사용하는 추세다. WAP 분야에서도 다양한 개발 도구가 선보이고 있지만 처음 페이지를 제작해 보는 입장이라면 툴보다는 메모장이나 텍스트 에디터가 더 유용할 것이라 판단되므로 이번 연재에서는 메모장이나 텍스트 에디터를 사용하여 페이지를 제작해보도록 하겠다.

먼저 텍스트 에디터(혹은 메모장)를 실행하여 빈 페이지를 띄우고 <리스트 2>를 입력한다. 한 가지 주의할 점은 WML은 대소문자를 구별한다는 점이다. 선언되어 있는 DTD를 보면 알겠지만 XML이므로 Element는 소문자로 작성해줘야 하며 시작태그와 종료태그에 주의해야 한다. 만약 시작태그와 종료태그의 대소문자 차이가 있거나 시작 혹은 종료태그를 누락한 경우 DTD 오류가 발생하여 페이징이 정상적으로 되지 않는다. 그럼 샘플 페이지를 만들어 보도록 하자. 물론 저장할 때에는 ‘파일명.wml’로 해야 한다.

<리스트 2> 간단한 WML 소스



"http://www.wapforum.org/DTD/wml20.dtd">





간단한 WML 2.0 페이지







간단한 WML 2.0 페이지


- 월간 마이크로소프트웨어 -





확인을 어떻게 하지?
이제 웹 서버도 설정이 되었고 페이지도 만들어 보았다. 그럼 제작된 페이지들을 한번 확인해 보도록 하자. 우리나라의 각 이동통신사마다 컨텐츠 개발업체에 개발의 편의를 위해 에뮬레이터를 제공하고 있다. 이 에뮬레이터는 실제 판매되고 있는 단말기와 동일한 UI를 제공하여 제작한 컨텐츠를 쉽고 정확하게 확인할 수 있도록 설계되어 있으나 이동통신사 CP(Content Provider)로 등록되어 있어야 한다. 하지만 세상에 공짜가 없는 세상이 있는가? 무료로 구할 수 있는 에뮬레이터로도 WML의 세계를 맛보는 데엔 충분하다. 하지만 이 역시 WMl 1.X와 XHTML MP(Mobile Profile)을 지원하는 에뮬레이터는 있으나 WML 2.0을 완벽하게 지원하는 에뮬레이터는 아직 나와 있지 않다.

많이 사용되고 있는 제품으로 WinWAP이나 오픈웨이브의 에뮬레이터가 있다. WinWAP은 WAP 브라우저 에뮬레이터와 포켓 PC용 에뮬레이터까지 다양한 제품이 있지만 WAP 2.0을 지원하지 않는 단점이 있고, 오픈웨이브의 에뮬레이터는 WML 1.X, XHTML MP를 지원하는 꽤 쓸만한 제품이지만 UI 디자인이 우리 실정에 맞지 않고 WML 2.0을 완벽하게 지원하지 않는다. 하지만 지속적으로 업그레이드되고 있으므로 곧 지원할 것이라 생각한다. 이번 연재에서는 SK텔레콤과 LG텔레콤에서 사용되고 있는 브라우저의 에뮬레이터(임바이더 에뮬레이터)로 테스트 결과를 확인해 보기로 하겠다. 물론 SK텔레콤의 휴대전화가 있다면 결과를 확인할 수 있다.

◆WAP 2.0 지원단말기
모토로라 V740, 모토로라 MS-100, 모토로라 MS-150, 산요 A011, 삼성 E-150, 팬텍&큐리텔 PS-E200, LG-SD200, SK텔레텍 IM-5000, SK텔레텍 IM-6200



<화면 4> <리스트 2>의 결과



작성한 페이지의 URL을 입력하여 페이지를 확인해 보도록 하자. <화면 4>는 휴대전화를 통해 얻은 결과와 동일할 것이다. 한 가지 주의할 점은 어떤 브라우저를 대상으로 페이지를 디자인하고 제작하느냐에 따라 출력 결과는 크게 달라진다는 것이다. 브라우저마다 표현방식의 차이가 있기 때문이다. 그러므로 컨텐츠를 출력할 단말기 혹은 에뮬레이터를 결정하고 페이지를 제작해야 한다. 매우 제한된 영역에서 디자인된 페이지를 보여줘야 할 경우 브라우저의 특징을 무시한 채 제작된 페이지를 화면에 출력한다면 의도와는 다른 페이지 디자인이 출력되거나 사용에 문제가 발생할 수 있기 때문이다. 여기서는 실제 국내에서 사용되고 있는 환경에 초점을 맞췄으므로 NGB 에뮬레이터의 UI를 기준으로 삼기로 하겠다.

다양한 페이지를 제작해보자
페이지와 Card 간 이동

링크를 사용하여 페이지에서 페이지로 이동하는 것은 HTML에서 기본적으로 지원되는 내용이다. WML은 페이지간의 이동뿐만 아니라 Card라는 요소가 있으며 Card에서 Card 간의 이동도 가능한데 WML 2.0은 이 두 가지 모두 가능하다. 그리고 WML 2.0에서는 태그와 태그를 모두 사용할 수 있다. 단, 내부에 태그와 를 같이 사용하는 것은 권장하지 않는다. WML 2.0 문서를 보면 두 태그는 같은 기능을 하기 때문에 같이 사용한다거나 다른 하나가 하위속성으로 들어갈 수 없다. 한 가지 주의할 사항은, HTML의 Body 태그가 WML의 Card 태그와 동일하다고 생각하여 Body에서 Body로 이동할 수 있다고 생각해서는 안 된다. <리스트 3>을 보자.

<리스트 3> Card에서 Card로 이동하기



"http://www.wapforum.org/DTD/wml20.dtd">





Card to Card 이동하기












Card2로 이동하기














Card2로 이동하였다!!







card는 한 개의 화면을 구성하는, 즉 화면에 보이는 기본 단위이므로 태그 안에 몇 개의 card가 있더라도 한 번에 한 개의 card만 화면에 보여준다. 따라서 사용자 입장에서는 card에서 card로 이동을 하는 것과 페이지에서 페이지로 이동하는 것의 차이를 느낄 수 없다. 하지만 구현상으로는 차이가 분명히 있다. 무선 단말기가 페이지를 내려 받을 때는 DTD부터 페이지의 마지막까지 모두 한꺼번에 내려받은 다음에 파싱 과정을 거쳐 화면에 출력하게 된다. card로 구성된 페이지는 모든 card를 한꺼번에 내려받아 파싱한 뒤 첫 card를 화면에 보여주는 것이기 때문에 나중에 card 간의 이동시에 페이지에서 페이지로 이동하는 것보다 속도 상으로 더 빠르다.

하지만 처음에 페이지가 뜨기까지 시간이 더 걸린다는 단점이 있다. 페이지간의 이동이라면 페이지 명을 지정해주면 되지만 card의 이동 시스템에서는 card의 id를 명시해줘야 한다. ID는 Card나 Body 등의 요소들을 고유한 존재로 인식시켜주는 중요한 속성이다. 또 다른 페이지의 card로의 이동도 가능하다. 이처럼 card에서 card로의 이동은 매우 유용한 기능이라 할 수 있겠다. 다음으로 페이지 간의 이동 샘플을 보기로 하자(<리스트 4, 5>).

<리스트 4> 페이지에서 페이지로 이동하기, first.wml



"http://www.wapforum.org/DTD/wml20.dtd">





Page to Page












Second 페이지로 이동







<리스트 5> 페이지에서 페이지로 이동하기, second.wml



"http://www.wapforum.org/DTD/wml20.dtd">





Page to Page












First 페이지로 이동







웹에서도 흔히 봤던 페이지 간의 이동이다. 태그에서의 테스트를 원한다면 Element를 로 변경해 주면된다.



<화면 5> Card 이동 전과 후





<화면 6> 페이지 이동 전과 후




이처럼 WML 2.0은 WAP 1.X의 card 시스템과 HTML, XHTML의 body 시스템을 모두 사용할 수가 있다는 장점이 있다. 어찌 보면 WML과 XHTML의 중간적인 위치에 있는 애매모호한 입장이라고 할 수도 있다. WML 1.X를 사용하든가 XHTML을 사용하여 페이지를 만든다면 혼란스럽지 않게 작업을 할 수 있을 것이라 생각하는 독자도 있을 것이다. 하지만 오히려 두 언어의 장점을 가지고 있기 때문에 다양한 방법으로 페이지를 구성할 수 있다는 점이 장점이라고 생각한다. WML의 장점과 XHTML(HTML)의 장점을 모두 가지고 있기 때문에 서로의 단점을 보완할 수 있다. 그리고 WML에서 XHTML로 바뀌어가고 있는 상황이기 때문에 이 언어의 활용성은 대단히 크다.
이미지와 테이블 사용

<리스트 6> 테이블 소스



"http://www.wapforum.org/DTD/wml20.dtd">





Table 1

















<화면 7> 테이블



WAP이 웹과 다른 점 중에 하나는 이미지의 처리와 사용이다. WAP 환경은 자원이 매우 제한적이다. 그래서 해상도와 사이즈에 제약이 발생한다. 휴대전화마다 처리할 수 있는 이미지 크기나 포맷에 차이가 있으므로 이 부분에 유념하여 이미지를 제작하고 사용해야 한다. 그리고 상하 스크롤은 지원되지만 좌우 스크롤은 지원되지 않는다. 때문에 화면 우측으로 넘어가는 부분은 화면에 보여줄 수 있는 방법이 없다. 예를 들어 화면 사이즈가 120×160 픽셀인데 이미지 사이즈가 140×50 픽셀이라면 우측 일부분을 볼 수 없게 된다.

<리스트 7> 이미지 소스



"http://www.wapforum.org/DTD/wml20.dtd">





Use Image







첫번째 이미지









<화면 8> 이미지



<리스트 7>에서 사용된 이미지 크기는 121×140의 24비트 컬러이다. 만약 이미지를 처리하지 못했거나 해당하는 이미지가 존재하지 않아 화면에 이미지가 정상적으로 출력되지 못했을 경우에는 alt 속성에 작성한 멘트가 화면에 보이게 된다. 웹에서는 작은 사각형에 X 표시만 뜨지만 WAP에서는 단지 alt 속성의 멘트가 텍스트 한 줄을 차지하여 보이게 된다. 한 가지 주의할 점은 WAP에서는 이미지 리사이즈(image resize)를 지원하지 않으므로 이미지를 처음 제작할 때부터 크기에 신경써야 한다. 또 단말기마다 처리할 수 있는 색상수가 한정되어 있으므로 색상수도 신경써야 한다.

WCSS와 WML 스크립트 사용
그러면 WML 2.0은 어떠한 것들과 함께 사용할 수 있을까? 이해를 쉽게 하기 위해 웹 환경과 비교하여 설명하겠다. 다른 페이지로 링크를 통해 이동하는 상호작용 정도 밖에 지원되지 않는 HTML보다 다양한 상호작용을 위해 자바 스크립트나 VB 스크립트를 사용하듯 WML에서는 WML 스크립트라는 것을 사용한다. WML 스크립트는 독립된 언어라기보다는 WML과 함께 사용되어야만 하는 WML을 지원해 주는 스크립트 언어라고 할 수 있다. 쉽게 생각하여 WAP에서의 자바 스크립트, VB 스크립트라고 생각하면 될 것이다. WML은 1.X부터 WML 스크립트라는 것을 지원하고 있다. XHTML은 HTML과 같이 VB 스크립트, 자바 스크립트를 지원하지만 모바일에서는(MP 규격) OMA 규격으로 DD(Download Descriptor)가 있다. WML 2.0은 모두 지원하지만 여기서는 WML 스크립트를 사용한 예제를 제작해 보자. 그리고 페이지에 다양한 장식(decora tion)을 할 수 있는 CSS(Cascading Style Sheet)와 같은 기능을 하는 WCSS(Wireless CSS)가 있다. 이 두 가지를 추가로 사용하여 페이지를 제작해 보겠다.

웹 페이지에서 CSS가 적용되지 않은 페이지는 이제 찾아보기 힘들다. 그만큼 보편화되어 있다는 말인데 이는 분명 사용한 만큼의 효과가 있기 때문일 것이다. 그렇다면 무선 인터넷에서도 이에 필적하는 효과를 볼 수 있을까? 필자의 견해로는 조금 부족하다. 아직까지는 무선 인터넷에서 지원되기에는 환경적으로 어려운 부분이 많기 때문이다. 가장 큰 문제점은 글자 크기(font size)와 모양이다. 대부분의 상용화된 WAP 브라우저들은 내장 폰트를 사용하는데 이 폰트는 크기나 폰트 모양의 변경이 불가능하며 글자의 크기가 고정되어 있다. 즉, 글자를 더 크게, 더 작게 만드는 것은 불가능하다(물론 개발자들의 노력으로 약간의 폰트 크기 변경은 가능하게 되었다. 하지만 이 강좌에서는 그 부분은 더 이상 거론하지 않기로 하겠다).

WML 1.X에서는 이 WCSS가 지원되지 않아 단순 텍스트만으로 화면을 구성하여 차별화된 페이지를 제작하는 것에 한계가 있었으나 WML 2.0부터는 WCSS를 지원하게 되어 개성 있는 페이지를 만드는 데에 훨씬 더 많은 조건을 갖추게 되었다. 앞의 예제에서는 테이블의 모양이 어떠한지 알 수 없지만 <리스트 8>의 WCSS를 적용한 테이블은 셸의 모양이나 크기, 색상, 테두리선 등의 모양을 눈으로 확인할 수 있다. WCSS는 웹과 같이 을 사용하며, 별도의 페이지로 제작하여 사용할 수도 있다. WCSS는 CSS2의 스펙을 준수하며 몇 가지 추가된 기능을 가지고 있다. 실제 문서를 찾아보면 CSS를 참고하라는 말이 자주 등장할 것이다. 이번에는 WCSS를 적용한 테이블 소스를 제작하여 꾸미지 않은 페이지와 얼마나 차이가 있는지 눈으로 확인해 보도록 하자.

<리스트 8> WCSS 소스



"http://www.wapforum.org/DTD/wml20.dtd">












































test1
NGB
2










<화면 9> WCSS 적용 화면



WML 스크립트를 사용하여 브라우저의 변수를 읽고 태스크를 수행하는 것이 WML 스크립트가 하는 일의 전부라고는 하지만 그 이용범위와 기능은 WML이 가지지 못한 것들이기 때문에 매우 강력하게 느껴지며 또 유용하게 사용할 수 있다. WML 스크립트는 WML 2.0의 태스크로 호출한다. 웹에서 HTML과 자바 스크립트, VB 스크립트와 같이 한쪽에서 호출하여 동작하는 방식이지만 차이점이라면 WML 페이지 파일과 WML 스크립트 파일이 물리적으로 다른 페이지 파일에 존재해야 한다는 점이다.

WAP 포럼에 있는 WML 스크립트에 대한 스펙 문서를 보면 다양한 기능을 가지고 있다는 것을 알 수 있을 것이다. 여기서는 간단하게 사용하는 방법만 다루어보겠다. <리스트 9>와 같이 샘플 페이지를 한 번 만들어 보자. 페이지는 2개로 구성된다. 값을 입력하고 WML 스크립트를 호출하고 리턴된 값을 팝업으로 보여주는 페이지와 WML 스크립트로만 구성되어 실제 화면에는 보이지 않으나 단말기에서 처리되어 WML 페이지로 결과 값을 리턴해주는 WML 스크립트 페이지이다.

<리스트 9> 값 입력 WML 소스, wmlscript1.wml



"http://www.wapforum.org/DTD/wml20.dtd">






























입력


















<화면 10> WML 스크립트 값 입력 화면




<화면 11> WML 스크립트 값 출력 화면



<리스트 10> 값 입력 WML 스크립트 소스, wmlscript1.wmls
extern function alert()
{
var Result = WMLBrowser.getVar("sample"); // wmlscript1.wml 페이지의 sample 변수의 값을 가져온다
var a = Dialogs.alert("입력한 내용은 " + Result + "입니다.");
}
WML 스크립트를 호출하는 소스를 보면 웹처럼 함수 이름을 부르지만 차이점은 ‘파일이름명#함수명’으로 사용한다는 점이다. 웹에서는 페이지 소스 내부에 스크립트 소스를 포함하여 사용하거나 include 방식을 사용하여 참조해오기 때문에 함수 이름만 사용해도 문제가 없었지만 WML에서는 별도의 페이지이며 어떠한 참조도 선언된 것이 없으므로 이와 같이 사용해야 한다. WML 스크립트 페이지의 함수에서는 자신을 호출한 WML 페이지로 값을 전달할 때, 또는 프로그램 수행이 WML 스크립트에서 브라우저로 되돌아갈 때 ‘WMLBrowser.’와 함께 WML 브라우저 라이브러리인 getVar(), go()를 사용한다는 점을 주의깊게 볼 필요가 있다.

이번에는 WML 페이지에 값을 입력하여 확인 버튼을 누르면 WML 스크립트를 통해 다른 Card로 변수 값을 전달하는 샘플 페이지를 만들어보자. 첫 번째 Card의 Input Box에서 입력받은 값을 WML 스크립트를 호출하여 이 값을 스크립트로 보낸다. 스크립트는 다른 Card(페이지도 가능하다)로 이동하여 변수 값을 이동한 Card(페이지)의 변수에 전달하여 이동한 페이지에서 출력하는 것이다. 변수를 출력할 때는 ‘$(변수명)’의 형태로 사용한다. 이 부분은 실제 화면에는 출력되지 않으며 값이 있을 경우에만 그 값을 화면에 보여준다. ASP에서의 ‘<%=변수명%>’과 동일하다고 볼 수 있다. 말로 풀어쓰면 복잡하게 느껴지지만 소스를 보면 매우 간단하다는 것을 알 수 있다(<리스트 11>).

<리스트 11> 변수 값 전달 WML 페이지 소스



"http://www.wapforum.org/DTD/wml20.dtd">





getVar Sample




























입력



















<

반응형