2011. 9. 27. 21:35ㆍ카테고리 없음
- XML 파서는 크게 DOM, SAX 두가지로 구분된다. DOM은 트리 형식으로 문서를 읽어서 전체 구조를 파악한 후 정보를 구하는 방식이고, SAX는 순차적으로 문서를 읽으면서 정보를 차례대로 읽는 방식이다. DOM은 메모리를 많이 사용하지만 성능이 좋고, SAX는 느리지만 메모리를 거의 사용하지 않는다.
1. DOM 파서의 구조 및 특징 (트리기반) DocumentBuilderFactorytompa 모바일 프로그래밍 능력 시험 안드로이드 marcof
- DOM은 문서의 모든 내용을 메모리에 트리 형태로 펼친 후 읽기 때문에 속도가 대단히 빠르며 임의의 노드를 여러 번 읽을 수 있다는 이점이 있다. 그러나 전체 문서를 다 읽어서 트리를 완성한 후에야 읽기가 가능하므로 처음 시작이 느리다는 단점이 있고 문서가 커지면 메모리를 지나치게 많이 소모한다는 것도 문제다.
- DOM을 선택하는 경우 : 문서의 일부를 두 번 이상 읽어야 할 때, 문서를 수정해야 할 때, 문서의 구조적인 처리가 필요할 때
- DOM 방식은 XML문서의 구조를 그대로 적용할 수 있으며 임의의 엘리먼트나 속성에 바로 접근할 수 있고 값의 수정이 가능하다.
- DOM 구조를 여러번 이용하는 경우에는 효과적이지만 한번만 읽어 처리하거나 할 땐 비효과적이다.tompa 모바일 프로그래밍 능력 시험 안드로이드 marcof
- DOM은 IDL로 정의되어 있다.tompa 모바일 프로그래밍 능력 시험 안드로이드 marcof
2. SAX 파서의 구조 및 특징 (이벤트 기반) SAXParserFactory
- SAX는 문서를 순서대로 읽으면서 이벤트를 발생 시키는 식이라 메모리를 거의 사용하지 않으며 기동 속도가 빠르다. 딱 한번만 읽는다면 DOM보다 훨씬 더 빠르며 원하는 노드만 골라 읽을 수 있고 중간에 파싱을 그만 둘 수도 있다. SAX는 읽기만 하는데 비해 DOM은 노드를 삽입할 수도 있다는 차이점이 있으나, 모바일 환경에서는 주로 XML문서를 읽기만 하므로 큰 의미는 없다.
- DOM과 SAX의 주요 차이점은 문서에 접근하는 방식의 차이이다.tompa 모바일 프로그래밍 능력 시험 안드로이드 marcof
- XML 문서를 순차적으로 일괄 처리하는 경우, 상대적으로 XML 문서 구조가 간단하고, 그 구조 자체가 주요 관심사가 아닌 경우
- 문서의 일부분에 대한 임의 접근이 불가능하다. 이벤트 및 작업 상태를 직접 보관해야 한다. SAX는 단순하게 어떤 요소를 읽었는지 등의 정보를 줄 뿐, 이 요소가 어떤 요소의 일부인가 등의 문맥 정보를 자동으로 유지해 주지 않는다.
- 읽기만 가능하고 수정 불가능tompa 모바일 프로그래밍 능력 시험 안드로이드 marcof
3. JSON 파서 p.1111
- XML보다 좀더 간략화된 정보 전달 방법들이 고안 되었는데 그 중 하나가 바로 JSON이다. JSON은 웹에서 정보를 주고 받는 경량화된 방법이다. 이름이 의미하듯이 자바 스크립트에서 주로 사용되는 방법이지만 대부분의 언어에서 활용할 수 있다.
- JSON은 무엇보다 프로그래밍 언어의 변수를 전달하는데 효율적이다.
1. 데이터 파일은 단순한 유니코드 텍스트 파일이므로 사람이 읽을 수도 있고 직접 편집도 가능하다. 그러나 형식이 너무 함축적이어서 XML보다 가독성은 떨어진다.tompa 모바일 프로그래밍 능력 시험 안드로이드 marcof
2. 단순한 텍스트 파일이므로 네트워크로 전송하기 편리하며 텍스트를 읽고 쓸 수 있는 모든 언어나 플랫폼에서 사용가능하다.
3. 헤더,네임스페이스 따위의 형식적인 정보나 구두점이 거의 없고 정보 자체만을 가지므로 XML보다는 일반적으로 길이가 짧다.
4. 대부분의 언어에 JSON 파서가 라이브러리 형태로 제공되므로 직접 문자열을 파싱할 필요가 없다. 안드로이드도 JSON 파서를 기본 제공한다.
5. RFC 4627로 포맷이 규격화되어 있어 나름대로 표준이 정립되어 있다.tompa 모바일 프로그래밍 능력 시험 안드로이드 marcof
- JSONArray 클래스는 JSON 파일에서 배열을 읽어들인다. 생성자로 JSON 문자열을 전달하면 문자열을 파싱하여 내부 메모리에 배열 형태로 저장할 것이다.
- 배열 : [값1,값2...] 객체 : {이름:값, 이름:값...}tompa 모바일 프로그래밍 능력 시험 안드로이드 marcof
4. KSOAP 파서tompa 모바일 프로그래밍 능력 시험 안드로이드 marcof
- kXML PULL Parser를 향상시킨 파서이다.
(DOM과 SAX의 장점을 합친 파서, 작고 고정된 환경을 위해 디자인된 파서이다. SAX와 같이 이벤트 기반의 파서이지만, SAX와 달리 문서에 대한 모든 파싱을 하지 않고도 특정 부분까지의 파싱 내용을 활용할 수 있다. SAX의 단점과 SAX보다 약간 느리다.)
5. SOAP Action 의 이해tompa 모바일 프로그래밍 능력 시험 안드로이드 marcof
- SOAP Action은 정확한 수신자를 지정하는데 사용한다.
- HTTP 헤더에서 운반된다.tompa 모바일 프로그래밍 능력 시험 안드로이드 marcof
- SOAP 요청의 의도를 정의한다.tompa 모바일 프로그래밍 능력 시험 안드로이드 marcof
- HTTP 클라이언트는 SOAP HTTP 요청이 발생할 때 이 헤더필드를 사용한다.
- 전체 XML을 처리할 필요 없이 방화벽이 빨리 SOAP 메시지를 다룰 수 있도록 하였다.
6. DBF 파서의 구조 및 특징tompa 모바일 프로그래밍 능력 시험 안드로이드 marcof
7. 웹 서비스 아키텍처 모델에 대한 이해tompa 모바일 프로그래밍 능력 시험 안드로이드 marcof
- 웹서비스 아키텍처는 아래 그림과 같이 서비스 소비자, 서비스 제공자, 서비스 등록기 등의 세가지 역할로 구성된다.
서비스 제공자는 웹서비스를 생성하는 개체이다. 이는 자신이 갖고 있는 비즈니스 기능들을 다른 기업이나 사용자가 이용할 수 있도록 서비스 등록기에 등록(publish)한다. 예를 들어 온라인 책 주문 시스템을 웹서비스로 공개하는 온라인 서점을 들 수 있다. 서비스 제공자는 제공하는 웹서비스를 소비자로 하여금 이용할 수 있게 하기 위해서 자신의 웹서비스를 표준 형식의 서비스 명세서를 제공할 수 있으며, 사용자가 쉽게 웹서비스를 찾을 수 있도록 자신의 웹 서비스를 공용 등록기에 등록할 수 있다. 서비스 소비자는 서비스 제공자가 제공하는 서비스를 사용하는 기관이나 사용자를 말한다. 서비스 소비자는 자신이 원하는 서비스를 검색(find)하기 위해 서비스 등록기를 이용할 수 있으며, 서비스 제공자로부터 직접 또는 등록기를 통해 얻은 서비스 명세서를 이용하여 서비스를 쉽게 호출(bind)할 수 있다. 서비스 등록기는 서비스 제공자가 자신의 웹 서비스들을 등록하고, 서비스 소비자가 웹서비스 정보를 검색할 수 있도록 관련 기능을 제공하는 등록 저장소이다. 일반적으로 이곳에는 서비스 제공자의 비즈니스 정보, 서비스 분류체계 그리고 이들이 제공하는 웹 서비스의 기술적인 정보등이 등록된다. UDDI에는 Business(비즈니스 정보), Service(해당 비즈니스가 제공하는 웹 서비스 정보, 서비스를 분류하는 분류코드도 포함), Technical Specification( 웹 서비스에 대한 기술적인 세부사항, WSDL에 대한 정보도 포함된다.)
8. 3가지 기본 기술요소 (WSDL, SOAP, UDDI)tompa 모바일 프로그래밍 능력 시험 안드로이드 marcof
8-1. SOAP (Simple Object Access Protocol)tompa 모바일 프로그래밍 능력 시험 안드로이드 marcof
- 분산 환경에서 구조적인 정보를 교환하기 위한 XML 기반의 프로토콜이다. 원칙적으로 SOAP는 트랜스포트 독립적이며, 따라서 HTTP,SMTP,FTP 등과 같은 다양한 프로토콜과 조합해서 사용될 수 있다. 그러나 현재로서 가장 일반적인 SOAP 메시지 교환방식은 HTTP를 통한 것이다.
- 특징 : 커뮤니케이션 프로토콜이다. 애플리케이션 사이의 커뮤니케이션을 목적으로 한다. 메시지 전송 형식이다. 인터넷을 통한 커뮤니케이션을 위해 설계되었다. 언어 독립적이다. XML을 기반으로 한다. 단순하며 확장 가능하다. 방화벽을 피할 수 있게 한다. W3C 표준이다.
- SOAP 메시지 요소 : Envelope(xml 다큐먼트를 soap 메시지로 식별하게 하는 필수 요소), Header, Body, Fault
- <soap:요소> 형식으로 사용tompa 모바일 프로그래밍 능력 시험 안드로이드 marcof
8-2. WSDL (Web Services Description Language)tompa 모바일 프로그래밍 능력 시험 안드로이드 marcof
- 웹 서비스와 접근 방법을 표현, 기술하는 XML 기반의 언어이다.
- 특징 : XML로 작성된다. 웹 서비스를 기술하는데 사용된다. 웹 서비스의 위치와 웹 서비스가 제공하는 오퍼레이션을 명시 한다. 아직 W3C 표준은 아니다.
8-3. UDDI (Universal Description, Discovery and Integration)
- 비즈니스가 웹 서비스를 등록하고 검색할 수 있는 플랫폼 독립적인 디렉토리 서비스 프레임 워크다.tompa 모바일 프로그래밍 능력 시험 안드로이드 marcof
- 특징 : 웹 서비스에 대한 정보를 저장하고 있는 디렉토리다. WSDL로 기술된 웹 서비스 인터페이스의 디렉토리다. SOAP를 통해 커뮤니케이션한다.