본문 바로가기

프로그래밍/Delphi

[REST-Delphi #2] 델파이 관점에서의 REST

REST Servers in Delphi XE Using DataSnap

[REST-Delphi #2] 델파이 관점에서의 REST


1. REST 소개


   지난 10여년 동안 서로다른 웹사이트, 웹사이트와 클라이언트 어플리케이션, 웹사이트와 비즈니스 데이터베이스간에 자동으로 상호 작용을 하기 시작하는 웹 2.0이라 불리는 웹의 혁명을 지켜 보았다. 


웹에서 데이터는 우리가 가능한 한 빠르게 판매정보, 재무정보, 온라인 커뮤니티, 마케팅등 수많은 정보를 찾고 추적하고 모니터링 하기 위한 프로그래밍적인 강력한 요구가 있어왔고, 동시에 서버 사이드 프로세싱을 통하여 사용자 어플리케이션과 웹브라우저를 통한  네이티브 어플리케이션 처럼 처리되기를 원하는 요구가 계속됨.


웹 서비스를 위한 기술 요구사항은 좀더 추상화 되어 SOAP과 REST가 출현하게 되었는데 델파이에서는 적어도 XE버전 이상에서 이 두가지 추상적인 웹서비스에 대해 완벽히 지원


여기서는  클라이언트 브라우저를 위한 어플리케이션의 백엔드 시스템으로서의 가장 적당하고 유연한 REST에 대해서 논의 설명함.


REST는 한마디로 SOAP보다 단순하며 응답성이 강한 HTTP를 이용하여 데이터를 엑세스 하기에 가장 빠른 아키텍처로 "Roy Fielding"가 2000년도 논문에서 발표 함.


REST의 주요 착안점은 웹 또는 어플리케이션에서 웹 리소스를 엑세스 하고자 할 때 HTML페이지, 이미지, 또는 다른 데이터 등의 리소스를 전달해 주고 클라이언트는 주어진 상태 셋에 따라 리소스를 받는 형태로, 클라이언트는 상태가 변하게 될때 추가적인 정보 또는 페이지들의 정보를 받게 됨.


2. REST Architecture의 KEY Point

 

  ○ REST는 HTTP 및 URL과 더불어 실제 데이터를 위한 다양한 표준 포멧등을 이용하지만 표준이 아니라 아키텍처로서 설명이 가능함

  ○ SOAP과의 차이점

     - SOAP은 프로토콜이고 REST는 아키텍처

     - REST는 Resource를 표현하기 위한 URL을 사용(SOAP은 다양한 REQUEST를 처리하기 위하여 URL을 사용한다)

     - REST는 다음과 같은 HTTP메소드를 가짐(GET(Select), PUT(Create), POST(Update), DELETE(Delete)

     - REST는 서버에 보다 많은 정보를 제공하기 위하여 쿼리 파라미터와 POST 파라미터등 두가지로 HTTP파라미터를 사용

     - REST는 인증, 암호화, 보안등(HTTPs) 처리가 가능

     - REST는 1차원적인 TEXT 문서를 리턴하며 XML, JSON, images, 기타 포멧등 다양한 마임(mime)타입을 지원한다.


3. 델파이(Delphi)와 REST

 

  델파이에서는 이미 Indy HTTP Client 컴포넌트를 이용하여 HTTP를 사용하는 어플리케이션을 간단히 개발할 수 있도록 디자인 되었고

      이를 이용하여 REST 서버를 충분히 활용할 수 있다. 또한 SSL을 이용한 인증 처리가 가능하다.

  ○ 델파이에서 제공하는 인디(Indy) 컴포넌트는 Blocking 스레드 모델을 지원하기 때문에 요청에 대한 리턴이 있을 때 까지 프로그램이 얼어 버리는 현상이 발생할 수 있으나 권장 될 만한(?) 방법이므로 또다른 스레드 처리를 통하여 UI 어는 현상을 방지할 수 있을 것임.

  서버 측면에서는 단독 어플리케이션(웹서버)으로서 REST를 동작시킬 수도 있고 다른 웹서버에 플러그인 되는 CGI/ISAPI, Apach Module의 형태로 개발이 가능함. 델파이 위자드를 통하여 DATASnap REST Server를 생성하면 간접적으로 IdHttpServer 컴포넌트를 이용하는 독립웹서버로 운영되는 REST서버 어플리케이션이 생성된다.