서버와 클라이언트 사이의 호환성 문제에 대한 아이디어를 구합니다..

kleinstein의 이미지

안녕하세요.

회사에서 서버와 클라이언트를 동시에 개발중에 있습니다.

그런데 매번 판올림이 있을때마다 서버와 클라이언트에는 새로운 기능들이 추가됩니다.
(기존의 기능들이 변하거나 사라질수도 있겠지만 아직까지 이런일은 경험하지는 못했습니다...하지만 있을수 있다고 치구요..)

그런데.. 나중에 이런 경우 ..

즉 서버와 클라이언트의 버전이 서로 다른 경우...

기존의 호환성은 지키면서 새로운 기능들에 대한 적절한 대처가 필요한데요..

이럴때를 대비한 어떤 깔끔한 해결법이 어떤게 있을까요?

버전번호를 매번 주고받거나 등등의 여러가지 생각은 있지만.. 아무래도 좀더 깔끔하고 일반적인 방법이 있을것 같아서 이곳에 질문을 드립니다.

shint의 이미지

프로토콜 자체를 문서화 (xml, html등 처럼)한후 버젼별로 해당 문서를 관리하시면
버젼별로 기능이 지원되는지 확인가능하니까요. 관리하시기 편하실것 같습니다.
물론. 데이터 자체가 문서이기 때문에. 보기도 편해서 보안을 신경써야합니다.

----------------------------------------------------------------------------
젊음'은 모든것을 가능하게 만든다.

매일 1억명이 사용하는 프로그램을 함께 만들어보고 싶습니다.
정규 근로 시간을 지키는. 야근 없는 회사와 거래합니다.

각 분야별. 좋은 책'이나 사이트' 블로그' 링크 소개 받습니다. shintx@naver.com

kleinstein의 이미지

뭔가 좀 더 편한 특별한 방법은 없나보군요..

결국은 서버에서 클라이언트들의 버전을 매번 받아서 허락되는 경우에만 연결하는 것으로 결정했습니다.
shint 님의 아이디어도 보안때문에 결국 채택하지 못했구요..
서버나 클라이언트는 결국 매번 같이 업그래이드 되는거죠.. 정말 이런 선택이 최선인지는 모르겠습니다.

shint의 이미지

변하지 않는 구조는 예측하기 어려우니까요.
대신. 변하는 구조를 통해 변하지 않는 구조의 선택.이 가능할것 같습니다.
UI나 전송방식. 암호구조에 대한 선택.을 변하는 구조로 정할 수 있다면. 가능은 할것 같습니다.

----------------------------------------------------------------------------
젊음'은 모든것을 가능하게 만든다.

매일 1억명이 사용하는 프로그램을 함께 만들어보고 싶습니다.
정규 근로 시간을 지키는. 야근 없는 회사와 거래합니다.

각 분야별. 좋은 책'이나 사이트' 블로그' 링크 소개 받습니다. shintx@naver.com

prara2의 이미지

dll 을 사용하시면 어떤가요? (linux - so)

cleansugar의 이미지

무슨 언어인가요?

자바면 RCP에 그런 기능이 있는 걸로 아는데요.

참고해보세요

재벌 2세가 재벌이 될 확률과
금메달리스트 2세가 금메달을 딸 확률이 비슷해지도록
자유오픈소스 대안화폐를 씁시다.

아이디의 아이디어 무한도전
http://blog.aaidee.com

귀태닷컴
http://www.gwitae.com

jick의 이미지

http://thrift.apache.org/

혹은

http://code.google.com/p/protobuf/

이런 걸 알아보시면 어떨까요? (Thrift는 (써본 적은 없지만) RPC에 필요한 코드도 알아서 생성해 준다고 하는군요. 그 부분이 필요할지는 상황에 따라 다르겠지만...)

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.