Self-Improvement

XML, JSON, Ajax, SOAP, REST 본문

Web

XML, JSON, Ajax, SOAP, REST

JoGeun 2018. 10. 20. 14:30

*XML(eXtensible Markup Language) ※마크업 언어가 아닌 마크업 언어를 정의하기 위한 언어
- XML은 기존 HTML이 가지고 있는 태그의 한계와 SGML의 복잡성을 보완하기 위해 만들어진 것으로 웹에서의 데이터 및 구조화된 문서들을 위한 보편적인 표준이다.
- 이름에서 보여지듯 XML은 고정된 태그를 가지고 있던 HTML과 달리 문서의 내용에 관련된 태그를 사용자가 정의할 수 있도록 하여 내용 정보의 중요성을 강조

<?xml version="1.0" encoding="euc-kr"?>
<거래 물품>
<물품명></물품명>
<물품번호></물품번호>
<수량></수량>
<가격></가격>
</거래 물품>

*단점
- 프로그램이 언어나 데이터베이스의 시스템을 입력하기 위해 XML을 맵핑하기가 어렵고 데이터가 특정 애플리케이션에 맞춰 구조화된 경우에는 더 까다롭다. 또한 많은 태그 때문에 문자량이 늘어나 응답 시간이 느린것이 단점이다.
※XML은 너무 무거워 웹 실행 속도가 느려진다.

항목
HTML
SGML
XML
태그
내장된 DTD정의, 사용자 정의 불가능
사용자 정의 태그 사용가능
사용자 정의 태그 가능
문서 재사용
불가능
가능
가능
응용
단순히 문서의 Presentation
복잡한 구조의 문서 및 방대한 내용을 요구하는 문서
SGML과 동일 
난이도
쉬움
복잡하고 어려움
비교적 쉬움(SGML의 복잡성 보완)
검색
검색 어려움
자료의 표현과 내용이 분리되어 정확한 검색 가능
SGML과 동일
출력 형식
CSS
DSSSL
XSL
Data 교환
교환 시 부가되는 작업 양이 방대함
표현부와 내용부가 분리 되어 교환이 용이
SGML과 동일

HTML -----> SGML -----> XML

*JSON
-  JavaScript에서 확장된 것으로서, 가벼운 텍스트기반의 데이터 교환 포맷이다
- 다른 데이터 포맷인 XML과 비교하여 JSON의 장점은, 경량화 되어 있다는 것과 사람이 보기에도 가독성이 뛰어나고 기계가 분석하고 생성하는데도 쉽다는 것이다. 


class User
{
    String name; // 이름
    int age; // 나
    boolean sex; // true남자 / false 여
    public User(String name, int age , boolean sex) // 생성자
    {
        this.name = name;
        this.age = age;
        this.sex = sex;
    }
}


*Ajax (Asynchronous Javascript And Xml)
Ajax JavaScript의 라이브러리중 하나이며 Asynchronous Javascript And Xml(비동기식 자바스크립트와 xml)의 약자입니다브라우저가 가지고있는 XMLHttpRequest 객체를 이용해서 전체 페이지를 새로 고치지 않고도 페이지의 일부만을 위한 데이터를 로드하는 기법 이며 Ajax를 한마디로 정의하자면 JavaScript를 사용한 비동기 통신, 클라이언트와 서버간에 XML 데이터를 주고받는 기술이라고 할 수 있겠습니다.

기본적으로 HTTP프로토콜은 클라이언트쪽에서 Request를 보내고 Server쪽에서 Response를 받으면 이어졌던 연결이 끊기게 되어있습니다그래서 화면의 내용을 갱신하기 위해서는 다시 request를 하고 response를 하면서 페이지 전체를 갱신하게 됩니다. 하지만 이렇게 할 경우 페이지의 일부분만 갱신할 경우에도 페이지 전체를 다시 로드해야하는데 엄청난 자원낭비와 시간낭비를 초래하고 말것입니다. 하지만 ajax는 html 페이지 전체가아닌 일부분만 갱신할수 있도록 XML HttpRequest객체를 통해 서버에 request를 합니다. 이 경우 Json이나 xml형태로 필요한 데이터만 받아 갱신하기 때문에 그만큼의 자원과 시간을 아낄 수 있습니다. 

*Ajax의 장점
1. 웹페이지의 속도향상
2. 서버의 처리가 완료 될때까지 기다리지 않고 처리 가능하다.
3. 서버에서 Data만 전송해면 되므로 전체적인 코딩의 양이 줄어든다.
4. 기존 웹에서는 불가능했던 다양한 UI를 가능하게 해준다. 사진공유 사이트 Flickr의 경우 사진의 제목이나 태그를 페이지 리로드 없이 수정할 수 있다.
 
*Ajax 의 단점
1. 히스토리 관리가 안 된다. (보안에 좀 더 신경을 써야한다.)
2. 연속으로 데이터를 요청하면 서버 부하가 증가할 수 있다.
3. XMLHttpRequest를 통해 통신을 하는 경우사용자에게 아무런 진행 정보가 주어지지 않는다. 그래서 아직 요청이 완료되지 않았는데 사용자가 페이지를 떠나거나 오작동할 우려가 발생하게 된다. 

*SOAP (http+xml 형식으로 보내어짐)
- SOA(Service Oriented Architecture)를 따르는 웹 서비스 디자인 표준
- HTTP, HTTPS, SMTP 등을 사용하여 XML 기반의 메시지를 컴퓨터 네트워크 상에서 교환하는 형태의 프로토콜
- XML을 근간으로 헤더와 바디를 조합하는 디자인 패턴으로 설계
- 분산환경에 적합
※REST보다 더 어렵고 무겁다.

*REST (URL을 이용하여 데이터를 요청)
- ROA(Resource Oriented Architecture)를 따르는 웹 서비스 디자인 표준
- REST 원리를 따르는 시스템은 종종 RESTful이란 용어로 지칭
- CRUD에 해당하는 4가지 메소드만 사용 가능하다.
(POST, GET, PUT, DELETE)
- point to point


'Web' 카테고리의 다른 글

php strcmp() 함수 취약점  (0) 2018.10.20
php 비교 연산자 취약점(md5 매직해시)  (0) 2018.10.20
쿠키와 세션  (0) 2018.10.20
Web VS WAS  (0) 2018.10.20
ASP, JSP ,PHP  (0) 2018.10.20