프로젝트 진행시 XML을 많이 쓰나요..?
저는 대부분의 프로젝트에서 XML을 활용하고 있습니다.
제가 XML을 처음 접한것은...1999년도에 학교 친구들과 코엑스 IT전시회가서 입니다.
교수님이 코엑스 갔다오면 결석한 수업 그것으로 인정해 주겠다 해서..-_-;;
전시회에서 윈도우, 웹 어플리케이션으로 XML에 있는 데이터를 찾고, 갱신하는것 보여 주었습니다.
그때 당시에는 별로 감흥이 오지 않았었죠.
그러다 졸업 후 한국 SUN으로 부터 XML관련 강의를 들을 수 있는 기회가 있었는데.
크게 깨달음은 없었으나 XML의 전반적인 기초 지식을 배우게 되었지요..
본격적으로 하게 된것은 아마도 처음 들으시는 분들도 있겠지만 MPEG21 프로젝트 참여에서 부터였습니다.
이 MPEG21은 아마도 현재까지도 표준화를 진행하고 있을것 같네요..
MPEG21은...컨텐츠를 XML로 정의(생성)하고 있습니다.
이때부터 본격적으로 XML을 하게되었는데..
그 이후 부터는 엥간한 데이타 처리나 데이타 전송은 XML로 전달하고 있습니다.
그 편함에 빠진것이지요..
XML을 사용하기 이전에는 데이타 영속성을 처리를 위해
보통은 file data, ini, 레지트리등을 사용하였습니다.
(물론 DB를 사용해도 되겠지요.. 전 주로 기업용 보다는 일반 사용자용 app를 주로 작성하였답니다.)
file data(대부분 처음 시작은 이것으로 시작하죠..)로 데이타 영속성 처리하기 위해서는
app(어플리케이션)이 읽을 수 있도록 프로그래머가 데이타 포멧을 정의 해야하는데..
대강 이런식으로..
A;Hankyun;pnca@test.com;10
B;Hankyun2;pnca2@test.com;20
각 데이타를 분리해 내기위해 ';'으로 분리하고,
각 레코드을 분리하기위해서는
파일을 한줄씩 라인단위로 읽을것인지,
버퍼로 모두 읽어 들여 라인 피드로 각 라인을 구분할 것인지 살짝 고민에 빠진다.
위와 같은 정도 수준의 간단한 데이타 구조라면 그냥 할만하다..-.-;
하지만 다음의 이미지 처럼 데이타가 상위 종속을 가진 트리구조(hierarchy 구조) 라면..?
그렇다면 레지스트리?
레지스트리는 데이타를 트리구조로 가지고 있으므로 위와 같은 상속 구조의 데이타를 표현해 낼 수 있다.
가능은 하다...하지만 레지스트리가 미로가 될것이다..
부사수가 "레지스트리로 가능한데 이걸로 하시죠"라는 주장에...사수를 설득하기란 쉽지 않을겁니다...-.-;
이건 딴얘기인데..
더 큰 문제는 윈95 부터 현재 2000을 거쳐 비스타까지 레지스트리를 쓰면서 문제가 없었나요..?
윈도우 버전에 따른 레지스트리 접근 및 구조가 조금 바꼈습니다.(조금이지만 개발자에게 와 닿는 파장은 적지 않았습니다.)
9x에서 잘 돌아가던것이 2000에 가서는 제대로 돌지 않는것이 태반(너무 비약했나..-.-)이었습니다.
뿐만 아니라 x64 OS가 릴리즈 됨에 따라 생각할 것이 많아 지죠(레지스트리를 x86, x64따로 관리 합니다.).
그리고 레지스트리에 대한 접근 권한도 문제가 심심치 않게 발생하기도 하죠..
win 2000이후의 OS부터는 레지스트리 이슈는 정말 다행스럽게도 많이 줄었으나, 과거 9x -> 2000으로 변경되는 격동기가 있었습니다.
더군다나 이 와중에 NT4 이슈도 정말 만만치 않았습니다...-.-;
이 격동기에 오죽했으면 "나 앞으로 OS 하나 더 나오기 전에 이바닥 뜬다"라는 말도 했던 기억있습니다...-.-;;
물론 저의 실력이 미천하여 문제가 많았을 수 도....-.-;;
아..다 귀찮다...
그동안 험난한 길을 걸어온 김군은 이제 데이타 처리는 전부 XML로..라고 자신에게 조용히(누가 들어줄리 만무하기에) 선언을 합니다.~( '')
다시 본론으로...
XML은 기본적으로 MS에서 파서를 제공해줍니다.
IE 5.0 이상인 PC에서는 파서가 들어있었던것으로 기억합니다..
그래서 현재의 대부분의 PC에서는 XML을 사용하는데 별 문제가 되지 않습니다.
그리고 MSXML, tinyXML, 기타 여러 XML 파서들이 존재합니다.(저는 한 서너개 써본듯)
저는 MS에서 제공하는 MSXML파서를 좀더 구현해서 편하게 래핑한 클래스를 사용합니다.
물론 처음에는 쉽지 않습니다..COM의 낯선 코드들, 더 힘들게 하는건 MSDN이 JS기준의 샘플로 되어 있어서...-.-;
하지만 한번만 제대로 만들어 두면 두고 두고 써먹을 수 있습니다.
전 5년 동안 써먹고 있습니다...뿌듯..-.-y
제가 XML을 데이타로 사용하는 가장 큰 이유는..
직접 파싱할 필요도 파싱하기 위한 포멧을 생각할 필요도 없습니다.
데이타 구조(좀 있어보이는듯 한 용어로는' 메타데이타')만 생각하면 됩니다.
주소만 주면 파서가 데이터를 찾아 오니까요..
XPath를 이용하여 아이템이 몇개 존재하는지, 엘리먼트 및 속성의 값 뽑아오기,
엘리먼트 및 속성을 추가, 수정, 삭제 등 아주 쉽게 데이트를 조작할 수 있지요.
하여,
소켓으로 데이타 전송시에도 간단한 데이타의 경우 바이트에 담아서 보내는데...
복잡한 데이타의 경우 XML로 데이타를 구성하여 바이트에 담아서 전송하는 프로젝트를 종종 보았습니다.(당연?)
그리고 규모가 큰 서버들의 경우에는 대부분 환경 정보들을 XML을 데이타로 사용하고 있습니다..
예를들면,
아파치 서버가 처음에는 일반 텍스트로 환경정보를 관리하다가 현재(?)는 XML로 환경 설정값을 데이타로 사용하고 있지요...
웹로직도 그렇습니다.
위 두 경우로 일반화할 순 없지만...사실입니다.
이렇듯 복잡한 데이터 구조를 가지고 있는 경우
XML 구조로 데이터를 가지고 있다면 데이타를 파싱해내기 무지 쉽기 때문이죠..
그 편함에 한번 빠져 보시죠...^^
대부분의 개발자 분들은 XML을 알고 계십니다..다만 활용은...음...
XML자체는 어떠한 기술보다 쉬우며, 적은 시간의 투자로 많은것을 얻을 수 있는것이 XML이라 생각합니다.
물론 세상엔 쉬운게 없습니다.
더 깊이 들여다 보면,
지금은 너무 복잡하여 사용하고 있지 않지만 DTD라는 것도 있고
XML Schema
XSL or 스타일 시트
등 XML과 연관된 것들이 있습니다.
하지만 영속성을 위한 데이타용으로써는 XML자체만으로도 충분하다 생각합니다.
그리고 XML의 사용 용도는 아주 다양한데..
이를 기초로 해야할것이 녹녹치 않을 정도로 용어나 기술들의 응용 분야가 많습니다.
SOAP, EJB, SmallTalk...등등
엔터프라이즈 환경에서 XML은 아주 다양한 용도로 사용되고 있습니다.
관심이 있다면 관련 강좌를 한번쯤 찾아서 읽어 보시는것도 좋을 것 같네요...^^
네...
아주 다양한 곳에 사용되고 있지요...
다양한 곳에 사용하고 있지만, XML을 사용하는 공통적인 목적은 하나입니다.
그것은 데이타
출처 : http://www.devpia.com/MAEUL/Contents/Detail.aspx?BoardID=70&MAEULNO=4&no=139&page=3