'Programming/WEB'에 해당되는 글 2건

  1. 2008.12.03 AJAX란?
  2. 2008.12.03 XML이란
Programming/WEB2008. 12. 3. 15:17

ASP.NET AJAX란 Microsoft에서 만든 AJAX 프레임워크로서 ASP.NET 기반의 AJAX 프로그래밍을 쉽게 구현하도록 지원한다. ASP.NET AJAX는 서버로 페이지 업데이트를 위한 라운드 트립의 요청 없이, 브라우저에서 웹 응용프로그램의 페이지의 의미 있는 중요한 부분만 실행할 수 있도록 하는데 그 목적이 있다. 이는 AJAX가 지향하는 부분과 동일하며, ASP.NET을 이용하여 이를 쉽게 적용하고 결과물을 얻을 수 있는 것이다.

ASP.NET AJAX 개발 기술은 ASP.NET 2.0 서버 기반의 개발 플랫폼의 ECMAScript(Javascript) 클라이언트 라이브러리로 통합되어 있다. ASP.NET AJAX는 클라이언트 스크립트에서 웹 기반 응용 프로그램을 호출하고자 하는 AJAX의 전략을 기본으로 하여 만들어진 프레임워크로 볼 수 있는 것이다.

왜 ASP.NET AJAX를 사용하는가?
ASP.NET AJAX를 이용한 개발은 전형적인 웹 응용 프로그램에 가지고 있는 한계를 극복한 AJAX 스타일의 새로운 웹 응용 프로그램을 개발할 수 있도록 지원한다. AJAX 스타일의 응용 프로그램은 다음의 장점을 가진다.
 
       ● 향상된 성능
       ● 사용자 인터페이스의 확대
       ● 웹 페이지의 부분 업데이트
       ● 비동기 포스트백
       ● 브라우저 독립성

ASP.NET AJAX 목표
ASP.NET AJAX의 목표는 응용 프로그램 제작에 있어 다양한 선택을 주기 위함이 가장 크다. ASP.NET AJAX를 사용하는 것으로만 개발자들은 ASP.NET AJAX 응용 프로그램을 제작하는데 도움을 받을 수 있고, 서버상의 ASP.NET의 특징과 ASP.NET AJAX 클라이언트 스크립트의 특징이 통합된 모델을 이용하여 개발할 수 있게 되는 것이다.


■ 클라이언트 스크립트를 이용하여 AJAX 스타일 응용 프로그램 작성
AJAX 기반의 개발은 생각보다 상당히 복잡하다. 자바스크립트가 기본으로 이용되며, 브라우저 별로 각기 다른 자바스크립트를 모두 고려하여 코드를 만들어야 하기 때문이다. 그러나 ASP.NET AJAX를 이용하면 이런 복잡한 AJAX 구현에 다음과 같은 도움을 얻을 수 있다.
 
● 일관성. 자바스크립트에서의 개발을 위한 객체지향 기반의 API 집합
● 클라이언트 스크립트를 위한 타입 제어
● 자동 브라우저 안정성. 여러 브라우저에서 실행되지만 브라우저에 따른 추가 작업이 필요 없음
● 리치 UI 특징을 지원하는 클라이언트 스크립트 API와 컴포넌트를 사용. AJAX 스타일의 응용프로그램에서 일반적으로 요구되는 확장된 코드로 작성된 여러 가지 컴포넌트를 쉽게 이용할 수 있다. 예를 들어, 드래그 앤 드롭, 자동 채우기와 같은 기능들이 있다.
● ASP.NET 서버 컨트롤을 위한 선언적인 문법과 유사한 클라이언트 개발을 위한 선언적인 스크립트 모델을 사용. 이를 사용하면 복잡한 코딩작업을 줄이거나 삭제할 수 있다.
 
ASP.NET에 통합되는 클라이언트 스크립트
ASP.NET AJAX의 또 다른 목적은 ASP.NET 서버 사이드 개발과 함께 클라이언트 스크립팅을 통합하는데 있다. 대부분의 개발이 클라이언트 또는 서버 중 하나에 집중되어 있는데 반해 ASP.NET AJAX는 개발자들이 사용하기 편한 방식을 이용하여 응용 프로그램을 제어할 수 있도록 클라이언트/서버 모두를 위한 툴을 모두 지원한다. ASP.NET은 ASP.NET AJAX 응용 프로그램을 위해 다음의 서버 사이드 특징을 지원한다.
 
● 프로파일 서비스처럼 ASP.NET AJAX 응용 프로그램의 통합에 유용한 웹 서비스
● ASP.NET AJAX 응용 프로그램에 필요한 클라이언트 스크립트를 출력해주는 ASP.NET 웹 서버 컨트롤. 이 컨트롤들은 ASP.NET AJAX 클라이언트 스크립트 API와 컴포넌트를 학습을 줄여주는데 도움을 준다.
● Visual Studio와 같은 툴과의 통합 지원. 디자인 타임 개발 환경, 디버깅, 구문 실행, 관리 및 생산성 향상을 위한 특징들을 제공한다.
 
ASP.NET AJAX 아키텍처
ASP.NET AJAX 응용 프로그램은 웹 서버상의 서비스 또는 응용 프로그램을 호출하는 ASP.NET AJAX 클라이언트 스크립트 라이브러리를 사용하는 웹 응용 프로그램으로 이루어진다. 그러나 보다 향상된 개발 모델을 위해서는 ASP.NET AJAX 서버 컴포넌트도 사용할 수 있다. 그러므로 ASP.NET AJAX는 클라이언트 스크립트 라이브러리와 서버 컴포넌트의 양쪽 모두를 포함한 아키텍처를 가진다고 이야기할 수 있다.

■  ASP.NET AJAX 클라이언트 컴포넌트
ASP.NET AJAX 클라이언트 스크립트 라이브러리는 객체지향 개발을 위한 특징을 제공하는 여러 가지 자바스크립트(.js) 파일로 구성된다. 이들은 이전의 스크립팅 개발 환경에서는 지원되지 않았던 모델로, ASP.NET AJAX에서 고유한 기능을 지원하기 위해 클라이언트로 제공되는 자바스크립트 파일들의 집합으로 이해할 수 있다. 다음의 몇 가지 기능들이 이들 스크립트에서 제공되는 것이다.

● 브라우저 호환성. 여러분들이 개발하는 ASP.NET AJAX 스크립트를 위한 대부분의 브라우저에서 동일 코드를 이용하여 동작하도록 브라우저 호환성을 지원.
● 클래스, 네임스페이스, 이벤트 핸들링, 상속, 데이터 타입, 직렬화와 같은 자바스크립트를 확장할 수 있는 코어 서비스들.
● 스트링 빌더(String Builder), 에러 핸들링과 같은 컴포넌트를 가지는 ASP.NET AJAX 기반의 클래스 라이브러리.
● 웹 기반 서비스와 응용 프로그램과 통신을 제어하고 비동기 원격 메서드 호출을 관리하는 네트워크 레이어.
● 실행, ASP.NET AJAX 선언적인 문법, UI 컴포넌트, 데이터 바인딩과 같은 ASP.NET AJAX 클라이언트 UI 레이어.
● 클라이언트 개발을 위한 ASP.NET AJAX 특정 컨트롤을 작성할 수 있는 컨트롤 레이어. 이들 컨트롤들은 데이터 바운드, 스크립트, ASP.NET AJAX 메서드에 바인딩 될 수 있다. 자동 채움 텍스트 박스, 일반적인 폼 컨트롤, 데이터 바운드 listview 컨트롤, 네비게이션 컨트롤들이 이에 해당한다.

■  ASP.NET AJAX 서버 컴포넌트
ASP.NET AJAX 서버 컴포넌트는 ASP.NET 웹 서비스와 ASP.NET 서버 컨트롤로 이루어진다. 모든 ASP.NET의 특징은 ASP.NET AJAX 응용 프로그램에서 사용 가능하다. ASP.NET AJAX 또한 웹 서비스와 서버 컨트롤의 ASP.NET에서의 컴포넌트를 포함한다. 이들 컴포넌트들은 ASP.NET AJAX 클라이언트 스크립트 라이브러리와 결합하여 동작하게 된다.

ASP.NET 또한 ASP.NET 서버 컨트롤과 유사하지만 ASP.NET AJAX 클라이언트 스크립트를 출력해주는 ASP.NET AJAX 서버 컨트롤을 포함한다. ASP.NET AJAX 서버 컨트롤은 서버 기반에서 이들을 개발하고자 할 때 ASP.NET AJAX 클라이언트 스크립트의 프로세스를 간단하게 해준다. 더불어 ASP.NET AJAX는 버튼, 라벨, 옵션, 텍스트 박스, 체크 박스, 하이퍼링크, 유효성 검사 컨트롤과 같은 이미 존재하는 ASP.NET 서버 컨트롤들에 상응하는 서버 컨트롤들을 포함한다. 이들 컨트롤들은 Visual Studio로 통합될 것이며, 디자이너 모드를 통해 표준 ASP.NET 컨트롤들과 같이 사용할 수 있게 될 것이다.

[출처] ASP.NET AJAX란|작성자 장훈

Posted by skensita
Programming/WEB2008. 12. 3. 15:13

XML이란

문헌의 구조를 기술하는 메타언어
W3C standard: eXtensible Markup Language(XML)
 

1. 등장배경

  XML은 구조화된 문헌을 웹 상에서  전송할 수 있도록 설계된 표준화된 텍스트 포맷으로 1996년 W3C (World Wide Web Consortium)가 개발하여 1998년 2월 사실상의 표준으로 제정되었다. W3C는 그 목적을 "일반적인 SGML이 웹 상에서 마치 HTML이 웹에서 처리, 이용되는 것처럼 활동할 수 있게 하며 XML은 SGML과 HTML을 같이 사용하면서도 구현하기 쉽고 상호 운용할 수 있도록 고안되었다" 라고 말하고 있다. 즉 각각의 단점은 피하면서 그 장점만을 최대한 살린 언어라는 의미이다.


  SGML은 기기나 처리 시스템에 독립적이고, 문헌을 구조화시켜 그 내용이  물리적인 형태와는 별도로 유지되어 융통성 있고 확장 가능하며 다양한 응용에 사용할 수 있다는 장점이 있는 반면에 기능의 복잡성으로 인해 SGML을 지원하는 소프트웨어의 개발이 쉽지 않으며 비용도 많이 든다.


HTML은 흔히 웹의 언어라고도 하는데 현재 대부분의 웹 페이지는 HTML을 사용하여 작성되었고 넷스케이프 (Netscape)나 익스플로러 (Internet Explorer)와 같은 웹 브라우저들이 이 언어를 인식하고 있다. HTML은 단순성, 이식성, 사용의 용이성이라는 장점을 가지면서도 제한된 태그 집합을 가짐으로써 확장할 수 없으므로 문헌의 여러 가지 특성을 반영시키는 충분한 태그가 없다. 그러므로 문헌을 충분히 표현할 수 없다는 단점이 있다.


 그러나 XML은 SGML을 복잡하게 하는 요인인 많은 선택 기법들을 채택하지 않았기 때문에 복잡하지 않으며 또한 SGML의 장점인 구조성과 융통성을 유지하고 있다. 그리고 XML은 SGML과 마찬가지로 확장 가능하므로 HTML보다 표현력이 있다.   따라서 XML은 SGML의 간단한 하부집합이며 문헌의 유형을 쉽게 정의할 수 있게 한다. 또한 SGML을 따르는 문헌을 쉽게 작성하고 관리할 수 있게 하며 웹 상에서 그러한 문헌들을 전송하고 공유할 수 있도록 한다. 그러면서도 XML을 기술하고 있는 그 명세서 (Specification)의 분량은 SGML의 그것보다 1/10 정도밖에 되지 않는다. 


2 . 목적 및 장점


  W3C에 의하면 XML은 다음과 같은 목적을 가지고 설계되었다.

  ① 인터넷 상에서 쉽게 사용할 수 있어야 한다.

  ② 다양한 어플리케이션들을 지원해야 한다.

  ③ SGML과 호환 가능해야 한다.

  ④ XML 문헌을 처리하는 프로그램을 쉽게 작성할 수 있어야 한다.

  ⑤ XML이 제공하는 선택 기법의 수는 최소로 유지되어야 한다.

  ⑥ XML 문헌은 인간이 읽을 수 있어야 하며 명확해야 한다.

  ⑦ XML의 설계는 빠르게 이루어져야 한다.

  ⑧ XML의 설계는 공식적이고 간결해야 한다.

  ⑨ XML 문헌은 만들기 쉬워야 한다.

  ⑩ XML 마크업의 간결성은 그다지 중요하지 않다.


  이와 같은 목적을 가지고 개발된 XML의 장점은 다음과 같다.

  - 첫째, 장치와 시스템에 독립적이다. 즉 다양한 소프트웨어와 하드웨어에서 이용할 수 있으며 어떠한 XML 소프트웨어에 의해서도 처리될 수 있도록 설계되었다. 


  - 둘째, XML은 매우 명확하다. 선택 기법의 수가 적고 태그의 생략을 유발하는 태그 최소화가 없기 때문이다. SGML이 개발된 당시에는 입력에 대한 부담, 시간, 비용, 저장용량의 제한 등의 이유로 이러한 기법을 허용했으나 기술에 발전에 따라 처리용량의 증가, 코딩을 도와주는 저작 소프트웨어의 개발 등으로 인해 더 이상 문제되지 않는다.
 

  -셋째, 이용자 고유의 태그를 만들 수 있다. 이는 확장성의 개념을 반영하는 것으로서, 이용자의 편의에 따라 혹은 이용자가 가진 데이터의 특성을 반영하거나 구별하고 위해 새로운 태그를 임의로 만들 수 있다는 의미이다. 또한 문헌이 잘 정의되었다면 DTD는 없어도 된다.


  -넷째, XML은 이용자로 하여금 문헌을 여러 방법으로 디스플레이할 수 있게 한다. XML은 문헌의 물리적 구조와 논리적 구조를 분리시키기 때문에 문헌을 여러 방법으로 표현할 수 있다. 


  -다섯째, 특정 언어에 한정되어 있지 않다. XML은 ISO 10646 (Unicode)을 수용하고 있기 때문에 어떤 언어라도 마크업에 사용할 수 있다. 따라서 이는 XML이 언어나 국가에 대한 제한없이 국제적으로 사용될 수 있게 하는 특징이다.


3. 구성(문법)


  - XML (Extensible Markup Language): 문헌의 구조와 내용을 표현

  1) XML 문헌의 구조

  모든 XML 문헌은 엔티티 (entity)라고 부르는 가상의 저장 단위로 이루어진 물리적 구조와 선언, 주석, 문자참조, 엘리먼트, 처리규칙 등을 포함하는 논리적 구조를 가지고 있다. 이러한 XML 문헌은 다시 XML 선언부 (XML Declaration), 문헌유형정의부 (Document Type Definition), 실제 문헌부 (Document Instance)로 나뉜다. 

  그러나 XML 문헌은 SGML과는 달리 문헌이 well-formed되었다면 DTD를 사용하지 않아도 된다. well-formed 문헌이란 적절하게 선언된 물리구조에 따라 정확한 형식으로 작성된 XML 문헌으로서 DTD없이도 유효하다. XML의 well-formed 문헌이 되기 위해서는 실제 문헌이 XML에서 정한 규칙에 따라야 한다.


그 규칙은:

 - 문헌은 하나 이상의 엘리먼트를 포함해야 하고 이들은 모두 시작 및 종료 태그로 한정되어야 하며 서로 적절히 중첩되어야 하고 모든 엔티티와 어트리뷰트는 선언되어야 한다는 등의 여러 가지 제약 조건을 만족시켜야 한다. 잘 정의된 문헌에 한해서 DTD의 부재를 허용하는 XML은 복잡한 DTD의 작성 및 검증 과정을 피할 수 있게 하여 시간과 비용을 절약할 수 있도록 하였으며 DTD에 관한 깊은 지식이 없는 사람도 XML 문헌을 비교적 쉽게 작성할 수 있도록 한다는 이점이 있다. 그럼에도 불구하고 XML에 유효한 문헌은 DTD를 가지고 작성하는 것이 훨씬 쉽다.


 다음은 XML의 구조이다.

* XML 선언부

XML 선언부는 해당 문헌이 XML 문헌임을 알리고 사용하고 있는 XML의 버전, 인코딩 방식에 관한 정보를 표현한다. 다음은 XML 선언부의 예이다.

<? xml version = "1.0"  encoding = "UTF-8" ?>

이 선언은 현재 사용하는 XML의 버전이 "1.0"이고 인코딩은 "UTF-8 (Unicode Transformation -8bit)" 방식을 사용하고 있음을 기술하고 있다.


* 문헌유형정의부

문헌유형정의부는 XML 문헌이 따르고 있는 규칙을 정의한 것이다. 이러한 DTD는 미리 정의된 외부 파일을 부르는 외부 참조의 형태를 지닐 수도 있고 문헌 내부에 직접 포함될 수도 있다. DTD는 크게 엘리먼트, 어트리뷰트, 엔티티 선언으로 이루어져 있다. 엘리먼트 선언 (Element declaration)은 XML 문헌이 가지는 엘리먼트의 명칭, 내용 등을 기술한다. XML 문헌은 수많은 엘리먼트를 가질 수 있지만 최상위 엘리먼트는 단 하나이어야 한다. 이러한 엘리먼트는 태그에 의해 구분되는데 내용이 있다면 시작태그와 종료태그로 엘리먼트의 경계를 표시해주고, 내용이 없다면 태그의 끝 부분에 "/"을 포함시켜 '이 엘리먼트는 아무런 내용이 없음 (empty element)'이라고 표시한다. 다음은 엘리먼트 선언에 관한 예이다.


<!ELEMENT  paragraph    - -     (#PCDATA, emptyspace)      >

<!ELEMENT  emptyspace    - -      EMPTY  >


<paragraph>모든 언어와 어플리케이션에 적합한 단일한 코딩 스킴을 고안하는 것은 불가능하다.<emptyspace/>대신 서로 다른 환경 내에서도 교환할 수 있도록 하는. . . . . . </paragraph>

어트리뷰트 선언은 엘리먼트와 그것이 가진 성질, 즉 어트리뷰트, 그리고 그 값을 연관시키기 위한 것이다. 그러므로 어트리뷰트 선언은 주어진 엘리먼트 유형과 관계된 어트리뷰트의 집합을 정의하고 이러한 어트리뷰트에 제한을 주는 유형 집합을 설정하고 어트리뷰트를 위한 값을 부여하는데 사용된다.

다음은 어트리뷰트 선언의 예이다.


<!ATTLIST  picture
               type  NOTATION  (format1 | format2)  "format1"
               image  CDATA  #IMPLIED  >


엔티티 선언은 엔티티라는 하나 이상의 가상적인 저장 단위를 정의하기 위한 것이다. 이는 문헌의 어떤 부분일 수도 있고 텍스트나 바이너리 (binary) 데이터를 포함한 외부 파일에 대한 참조일 수도 있다. 선언된 엔티티는 문헌내 또는 DTD내에서 여러 번 참조될 수 있다. 다음은 엔티티 선언의 간단한 예이다.

<!ENTITY  ProductName "RF-2000-QJ-46" >
<p>이 제품의 명칭은 &ProductName; 으로서 다음과 같은 기능을. . . . . </p>

* 실제 문헌부

  이는 XML의 DTD에서 정의한 모든 규칙에 따라 문헌이 구조화된 XML 문헌의 실제 내용이다.


4. XML의 응용


  - XLL (Extensible Linking Language): 웹 상에서 활용할 수 있도록 링크 정보를 표현

  - XSL (Extensible Style Language): 문헌의 외양 (스타일) 혹은 출력 형식을 정의


1) XLL (Extensible Linking Language)

  XLL은 XML을 위한 표준적인 링킹 모델 (linking model)을 제공하는 언어로서 기존의 HyTime과 TEI의 많은 기능을 수용하여 단순화시켰다. 이는 XML을 웹 상에서 활용할 수 있게 하는 원동력으로서 XML 문헌이 참조하는 정보원간의 관계를 링크로서 표현하며, 문헌 내부 또는 외부에 존재할 수 있는 이러한 링크를 표현하기 위한 효과적이고 간단한 구조를 가지고 있다. 또한 XLL은 현재 많이 사용되고 있는 HTML의 링크와의 상호 운용성을 고려하여 설계되었다.


  XLL은 다양한 유형의 위치 식별자 (locator), XML과 SGML 데이터내 정보원의 위치 등에 관해 기술한다. 예를 들어 XML-LINK라는 어트리뷰트를 가진 모든 엘리먼트는 링크를 의미하며 그 엘리먼트의 값은 엘리먼트가 가진 링크를 명세한다.


 이러한 XLL은 둘 이상의 정보원과 연관 있는 확장된 링크, 정보원을 위치시키는 방법, 링크가 가진 의미에 대한 통제방법 등을 제공한다.  XLL이 지원하는 링크 유형은 크게 SIMPLE과 EXTENDED로 나눌 수 있다. 단순 링크 (Simple link)는 HTML의 링크와 유사한 것으로 2개의 정보원간의 링크를 식별하며 항상 단방향이고 URL (Uniform Resource Locator)로 정보원의 위치를 지시한다. 확장 링크 (Extended link)는 둘 이상의 정보원간의 관계를 표현하며 양방향 혹은 다중 링크가 가능하다.


2) XSL (Extensible Style Language)

  마크업을 사용하여 문헌을 구조화시키는 방법의 가장 큰 장점은 문헌의 내용과 외양 (스타일)을 분리시킨다는 것이다. 현재 이러한 목적을 위해 HTML은  CSS (Cascading Style Sheets)를 사용하며, SGML은 DSSSL (Document Style Semantics and Specification Language)을 사용하고 있다. 그러나 기능 면에서 CSS는 강력하지 않고 DSSSL은 사용하기 어렵고 복잡하다. 따라서 XML 문헌의 외양을 처리해주기 위한 방법으로서 간단하면서도 강력한 기능을 가진 XSL이 개발되었다.

  XSL은 DSSSL에 기반하여 단순화시켰으며 CSS를 지원한다. 또한 확장 가능하므로 stylesheet 설계자가 다양한 새로운 태그를 만들 수 있고, 출력 (printing)과 온라인 디스플레이 (online display)를 지원한다. XSL은 현재 표준화 작업 중이다.


출처 sookmyung.ac.kr/~ksh/xml.htm

Posted by skensita