본문 바로가기
연구_고민

[*] SOA 의 구현

by DevG 2007. 9. 27.

[*] SOA 의 구현
===============
작성: 카이 thruthesky@yahoo.co.kr
홈페이지: http://jangnans.com http://siteapi.kldp.net

본 문서에서는 SOA(Site Open API)의 구현에 대해서 설명을 합니다.

[*] SOA 실제 예

PHP 버젼의 SOA 구현은 본인이 이미 작업을 해놓은 것이 있습니다.
제로보드 5, 제로보드 4, 그누보드 4, 알지보드, 테크노트, 미니툴, 장난 홈툴즈 등에서 사용이 가능하도록 포팅을 해 놓았습니다.
이를 바탕으로 새로운 홈페이지(또는 관련된 게시판, 프로그램 등)에 손쉽게 적용이 가능합니다.

그러나, ASP, C, Perl 과 같은 언어로 제작된 사이트에서는 본인이 작성한 PHP 코드를 직접 재 사용할 수가 없습니다.


[*] XML-RPC

XML-RPC 에 대해서는 본인이 다른 곳(문서)에 기록을 해 놓았습니다.
http://jangnans.com/etc/siteopenapi/siteopenapi_spec.html 페이지에서 "4장 Site API 소개" 부분을 참고하십시오.

이처럼 RPC 는 데이터를 송/수신하고 처리를 하는 과정을 말합니다.
이 때(데이터를 송/수신할 때), XML 형식으로 데이터를 표현하는 것이 바로 XML-RPC 입니다.

XML 형식이라고 하는데, 실질적으로 어떻게 데이터를 전송하고, 수신하고하는걸까요?
RPC 에서는 당연히 클라이언트와 서버로 작업분담이 이루어집니다.
XML 로 데이터를 표현하니 C/S(클라이언트와 서버)간의 통신은 HTTP 를 바탕으로 이루어집니다.
데이터는 규격은 http://www.xmlrpc.com/spec 와 같으며 XML 로 표현이됩니다.
클라이언트가 서버로 전송하는 데이터는 HTTP 의 POST 방식으로 전달이 됩니다.

아마 그것은 (클라이언트가 서버로 데이터를 전송하는 것은) 아래와 같은 형식이 될 것입니다.

POST /RPC2 HTTP/1.0
User-Agent: Frontier/5.1.2 (WinNT)
Host: betty.userland.com
Content-Type: text/xml
Content-length: 181

<?xml version="1.0"?>
<methodCall>
   <methodName>examples.getStateName</methodName>
   <params>
      <param>
         <value><i4>41</i4></value>
         </param>
      </params>
   </methodCall>

위 내용은 클라이언트가 데이터를 XML 표현으로 HTTP 의 POST 방식으로 서버에게 전송을 하는 것입니다.
서버는 위 데이터를 받아서 적절한 처리를 할 것입니다. 이때, 서버는 아마도 웹서버가 될 것입니다.
그리고 수신한 데이터에 대한 처리는 CGI(ASP, C, PERL 등)가 담당하게 될 것입니다.
데이터를 받아서 DB 관련 작업을 할 수도 있고 오류처리를 할 수도 있습니다.
웹서버에서 실행되는 언어(ASP, PHP 등)는 이러한 데이터의 작업에 대한 처리를 할 수 있습니다.
XML 데이터를 파싱해서 필요한 데이터를 추출한 다음 처리를 하면됩니다.

실제로 SOA 를 구현해야한다면, 그것이 서버측 작업을 해야한다면 어쩌면 테스트 클라이언트를 직접 작성하셔야할 지도 모르겠습니다.
서버 작업을 하기 위해서는 테스트용 클라이언트가 있어야합니다. 그렇지만 입맛에 맞는 클라이언트는 없습니다.
그러니 실질적으로 XML-RPC 의 모든 것을 구현해야합니다.

이해가 되셨는지 모르겠습니다.
실질적인 구현에 대한 정보는 http://www.xmlrpc.com/directory/1568/implementations 에서 얻을 수 있습니다.


우선 다른 누군가가 XML-RPC 모듈을 만들어 놓았는지 알아볼 필요가 있습니다.
XML-RPC 구현을 위한 소스 코딩 작업이 만만치는 않습니다.
물론 XML-RPC 관련 라이브러리를 구하지 못한다면 직접 작성을 해야합니다.
XML 문서의 파싱 라이브러리라도 구해야합니다. 물론 XML 파싱 라이브러리를 구할 수 없다면, 엮시 직접 코딩을 해야합니다.

C 언어와 Perl 쪽에서는 그리고 PHP 쪽에서는 어느정도 관련 라이브러리가 있습니다.

ASP 에대해서는 본인이 연구를 안해봐서 어떤지 모르겠습니다.
다음은 ASP 와 관련된 참고할 만한 정보입니다.
http://aspxmlrpc.sourceforge.net/ (자세히 보지는 않았지만, 서버와 클라이언트를 위한 XML-RPC 라이브러를 제공하는 것 같습니다.)
http://david.carter-tod.com/blackboard-tips-and-tricks#comment-35

 

[*] SOA 규격

XML-RPC 에 대한 준비가 되었으면 본격적으로 SOA 규격을 구현할 준비가 된 것입니다.
우선 SOA 문서에 대해서 읽어볼 필요가 있습니다.

참고로 SOA 는 정보의 검색에 중점을 두고 있습니다.

일반적인 사이트를 대상으로 사이트가 가지는 정보의 속성을 토대로 규격을 한 것입니다.
예를 들면, 홈페이지에 장난감에 대한 유용한 정보가 있는데 이 정보를 외부에서 사용을 할 수 있도록 해주고 싶어합니다.
이 경우 여러가지 방법이 있겠지만, SOA 를 통하면 홈페이지의 정보를 직접 검색해서 그 결과를 타 사이트, 또는 타 응용 프로그램에서 활용할 수 있습니다. 글의 제목이나 내용, 또는 상품의 가격이나 제작된 날짜 등을 검색해서 그 정보를 타 사이트로 연결, 또는 타 응용 프로그램으로 연결이 가능합니다.

이 와 같이 SOA 는 개별 사이트의 정보를 다른 곳에서 쉽게 이용을 할 수 있도록 하기위해서 규격된 것입니다. 정보의 검색외에도 정보를 외부에서 직접 가공을 하여서 홈페이지로 저장을 할 수도 있습니다.
예를 들면, 기존의 홈페이지 게시판에는 그림이나 파일의 첨부를 2개로 제한하는 경우가 많습니다. 국내의 가장 유명한 무료 웹 게시판이 이런 경우입니다. 이 경우, SOA 를 구현하면 그림이나 파일 첨부의 제한이 없어집니다. 뿐만아니라 디자인을 마음대로 할 수가 있습니다.
사용자가 자신의 상품을 홈페이지에 올리고 싶어하는데, 이미지 연결을 위해서 어렵게 HTML 작성을 직접하거나 제한된 게시판 기능을 이용해서는 사용자가 원하는 모습을 갖추기가 어렵습니다. SOA 는 이런 문제점을 해결해줍니다. 위즈위그 편집기에서 보이는 그대로 쇼핑몰에 정보를 올려줍니다. 이미지도 보이는 그대로 홈페이지에 자동으로 저장이됩니다.

현제 SOA 는 이러한 작업을 위해서 규격이되어있습니다.
그리고 실제로 이러한 작업이 많은 홈페이지에서 시행되고 있습니다.

참고할 만한 소스가 없이, SOA 를 처음부터 구현을 해야하는 입장이면, SOA를 규격하고 PHP 버젼을 구현한 본인과의 연락이 필요합니다.
코딩을 하는 과정에서 실제적으로 도움을 드릴 수 있다고 판단을 합니다.

본 문서를 읽으시는 분은 우선,
1. XML-RPC 에 대한 이해와 실제 예제의 구현를 통해서 정보를 습득하는 것이 필요합니다.
2. SOA 구현에 있어서 PHP 소스가 도움이되지 않는다면 본인에게 도움을 요청할 수 있습니다.