서버-클라이언트간 HTTP/XML 통신

mr.lee의 이미지

서버-클라이언트간 통신 프로토콜을 HTTP/XML 기반으로 할려고 합니다.
대표적으로 XML-RPC, SOAP 가 있을것이고 그냥 사용자 DTD를 정의해서 사용할 수도 있겠지요.
경량화되고 심플하다면 custom DTD나 XML-RPC일것이고,
좀더 강력(?)하고 유연하다면 SOAP가 좋을것으로 생각되네요.

그리고 라이버러리로는 어떤것이 적당할련지..
Apache쪽의 AXIS, SOAP, XML-RPC등이 있어보이고,
선의 JAX-RPC 및 오픈 소스 XINS 도 보이는군요.

성능과 유연성을 적절히 생각한다면 XML-RPC가 최적의 선택일것도 같고..
SOAP를 사용한다면? AXIS가 좀 무거울것 같기도하고.

여러분의 조언 바랍니다

익명 사용자의 이미지

일단은 SOAP이 대세라고 보시면 되는데,.....

통신의 주체가 되는 시스템들의 개발 플랫폼 및 주 개발 언어가 무엇인가요?
응용유형의 메시지 빈도/양 및 실시간 요구성 정도는?
...
등등....
을 말씀하시면, 보다 나은 답변이 예측/기대됩니다.

mr.lee의 이미지

서버쪽은 자바가 되구요, 클라이언트쪽은 다양한 형태가 존재할 수 있습니다.
메세지의 양은 의미들을 담은 작은 크기가 될 것이구요. 빈도수는 매우 많을 수 있습니다. 실시간 응답성은 좋아야 겠죠. 때문에 성능도 무시할 순 없는데, AXIS가 좋은 선택이 될까요? 클라이언트쪽에서 서버의 notify 를 받는경우도 있기 때문에 양쪽다 호출될 remote procdure 를 준비해둬야 하겠죠.

익명 사용자의 이미지

일단, XML형식으로 데이터를 주고받는 기술의 현주소는 XML을 가지고, 상위에 구현한 WSDL이며,
전송 프로토콜로는 SOAP입니다. 소위 Web Service지요. SOA(서비스 지향 아키텍쳐)를 구현하는 방법론중 주체라고 할 수 있는 메카니즘이지요.
웹서비스(그냥~ 웹서버로 하는 그런게 아닌...)를 주관점으로 검토/검색하시면 다양한 자료를 얻으실 수 있습니다.
말씀하셨듯이 AXIS는 웹서비스 프레임워크를 아파치 그룹에서 구현한 것이고 선, IBM, JBoss등 거의 모든 벤더의 프레임워크에서 제공하고 있습니다. 대부분의 웹어플리케이션 서버들은 이러한 웹서비스를 위한 메카니즘을 제공하며, 거의 모든 개발도구 들이, 웹서비스 개발인터페이스를 제공합니다.
웹서비스는 XML(정확히는 WSDL)과 SOAP을 그 기반기술로 사용하므로, 성능에서는 원시적인 인코딩 ASN.1, 또는 사용자가 정의한 프로토콜등을 사용하는 경우에 비해 다소 느린 성능을 보입니다. 하지만, 상호운용성, 표준화, 엔터프라이즈급 환경연동(EAI등)등에서는 타의추종을 불허합니다. (점점 더 그 중요성이 가중될것이라는 ...) 즉, 얻는게 크다는 얘기지요.기존에 RPC나 CORBA등의 미들웨어에 경험이 있으시다면, 이와 유사하다라고 판단하시면 됩니다.단지, XDR대신 XML(정확히는 WSDL)을 사용하고, 수송프로토콜로 SOAP을 사용한다라는 점을 생각하시면 되겠습니다. SOAP은 특히, 하부프로토콜로 다양한 프로토콜을 사용하고 특히, HTTP를 사용하는 경우(거의 대부분이지요), 기존의 웹기반 기술들이 대부분 도입될 수 있습니다.
또한, 초기 XML, SOAP, WSDL에서 출발했지만, 많은 표준(WS-*)들이 추가되고 있고,또, 이미 추가되어 있어서, 프레임워크로써 자리메김을 해나가고 있습니다. 많은 메이저벤더들이 이를 채택하고, 많은 IT업체가 이를 채택하는것은 결코 이상한 일이 아닙니다.

AXIS의 경우 AXIS2가 현재 릴리즈되어 있는 것으로 알고 있습니다. 무엇이 정답이라고 말씀드리기는 어려우나, AXIS2도 좋은 선택이라고 생각됩니다. 저의 경우, AXIS를 이용한 JAVA기반연동, 윈도우의 델파이에서 AXIS2연동, C#에서 AXIS연동, gsoap기반에서 C를 통한 연동등을 실전 구현해보았는데, 대체로 만족스럽습니다. 메시지 및 파일전송의 경우, 당연하게도 WS기반의 응용이 낮은 성능을 보였으나, 응용에서 충분히 수용가능한 정도였습니다. 응용에 대해 말씀드리기는 아햏햏하므로, AXIS2에서 MTOM을 사용한 파일전송을 wget등과 비교해보았을때, wget대비 대략 60%정도의 성능을 보였으나(튜닝하면 좀더 나아질듯도 한데요), 응용에서 필요로하는 수준으로는 충분했습니다. AXIS의 경우, 문서/책이 다소 부족하다는 느낌이 있었으나, 그럭저럭 해볼 수 있었습니다.
시도하고 계시는 제품의 스펙에 따라, 상용 웹서비스 프레임워크의 도입도 권고합니다.
아... XML을 도입하실 생각이시라면, XML-RPC는 권고하고 싶지 않습니다. WS(Web Service)를 도입하시길 권고하고 싶습니다. 이유는 어중간 한것보다는 확실한게 낫지 않을까?라는 생각에서 입니다.

mr.lee의 이미지

답변 감사드립니다. 좋은 참고가 되겠습니다.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.