트랙백?

IT/기타 2008/03/02 19:38
티스토리를 가입하고 블로그를 하다보니 RSS고 트랙백이고 들어는 봤지만 이름만 아는 그런것들을

사용하게 되었고 무었인지 모르는 상태에서 하나씩 배워서 해야했다 그래서 이번엔 트랙백에 대해

알아보고 있지만.. 흠... 뭐랄까.. 더 알아봐야겠다

-------------------------------------------------------------------------------------------------------

트랙백(trackback) 이란?

 트랙백은 원격 댓글을 쓰고 이를 알려주는 기능입니다. 초 기 블로그에는 없던 새로운 기능입니다. 트랙백은 댓글(reply, 답글), 덧글(comment, talkback 등) 기능의 확장판이라고 보면 됩니다. 기존의 답글과 덧글은 해당 게시판에 독자가 게시물을 읽고 난 뒤 답변이나 감상문을 적는 기능입니다. 따라서 덧글은 해당 게시물 밑에만 남겨집니다. 트랙백은 이보다 좀더 개선된 기능으로 다른 곳에 댓글을 남기는 기능입니다.

즉 해당 게시물에 대해 댓글이나 덧글을 달되 다른 사이트에서 원격으로 덧글을 다는 행위입니다. 이전에는 A 사이트의 '장터' 게시판 '1번' 게시물에 대해 덧글을 남길 경우 이 덧글을 보기 위해서는 A 사이트 장터 게시판 1번 게시물을 읽어봐야만 덧글을 볼 수 있습니다. 하지만 덧글을 지원하는 경우에는 A 사이트의 장터 게시판 1번 게시물에 대한 덧글을 B 사이트의 게시판에서 볼 수 있는 겁니다.

그렇다면 트랙백이라는 기능은 왜 만든 것이며 그 의미는 무엇일까요? 트랙백을 만든 이유와 그 의미는 '내가 쓴 글을 다른 사람에게 알리기 위함'입니다. 트랙백은 이를 지원하기 위한 기능이죠. 트랙백은 다른 사람이 쓴 블로그 문서에 자신이 원격 댓글을 달았다는 사실을 알려주는 행위를 말합니다.

트랙백으로 작성한 글은 작성자 블로그의 새 엔트리가 됩니다. 예를 들어 A 사이트의 블로거가 '한글날에 대하여'라는 글을 올렸을 경우 B 사이트의 블로거는 해당 글에 대한 의견을 자신의 블로그 사이트에 트랙백 형태로 올릴 수 있습니다.

[트랙백 과정]
1. A가 자신의 블로그에 '한글날'에 대한 글을 올렸다.
2. B가 A의 블로그에 올라간 글을 보고 자신의 블로그에 '한글날' 글에 대한 소감을 적어 글을 올렸다.
3. B는 A의 블로그에 트랙백 핑(TrackBack Ping)을 보내 자신의 블로그에 A가 쓴 '한글'에 대하여 코멘트를 달았음을 알려준다.
4. A는 자기가 쓴 '한글날' 게시물에 달린 트랙백을 통해 B가 B의 블로그에 '한글날'과 관련된 글을 올렸다는 사실을 알 수 있습니다.




**그림: 트랙백의 구조


핑은 작은 문장을 뜻하며 트랙백 핑은 트랙백을 알려주는 작은 문장입니다.

트랙백을 건 다음에는 트랙백 핑(TrackBack Ping)이라고 부르는 작은 메시지를 상대편에게 보내줍니다. 물론 이는 프로그램이 알아서 자동으로 보내줍니다. 트랙백을 건 사람은 원 게시물 작성자에게 트랙백 핑을 보내 자신의 사이트에 관련 코멘트를 달았다는 사실을 알리는 겁니다.


트랙백 핑을 주고받는 절차는 아래와 같다.

구분선 기준으로 왼쪽이 트백백 클라이언트, 오른쪽이 트랙백 서버이다.

 

자바를 이용한 트랙백 클라이언트 구현예는 다음과 같다. Commons HttpClient 라이브러리를 활용한다.

public void testTrackbackWorks() {

  HttpClient client = new HttpClient();
  PostMethod post = new PostMethod(TEST_TRACKBACK_URL);

  post.getParams().setParameter(HttpMethodParams.RETRY_HANDLER,
    new DefaultHttpMethodRetryHandler(3, false));

  post.addRequestHeader("Content-Type",
   "application/x-www-form-urlencoded; charset=utf-8");
 
  NameValuePair[] data = {
           new NameValuePair("ttle", "Foo+Bar"),
           new NameValuePair("url", "http://www.bar.com/"),
           new NameValuePair("excerpt", "My+Excerpt"),
           new NameValuePair("blog_name", "Foo")
  };
  post.setRequestBody(data);
 
  try {
     int statusCode;
     statusCode = client.executeMethod(post);
     System.out.println("STATUS: " + statusCode);
 
     if (statusCode != HttpStatus.SC_OK) {
        System.err.println("Method failed: " + post.getStatusLine());
     }
 
     byte[] responseBody = post.getResponseBody();
     System.out.println(new String(responseBody));
 
  } catch (HttpException e) {
     e.printStackTrace();

  }
catch (IOException e) {
     e.printStackTrace();
  }
finally{
     post.releaseConnection();
  }
}

그리고 다음은 자바를 이용한 트랙백 서버의 구현예이다.

public class TrackBackController extends AbstractController {

  @Override
  protected ModelAndView handleRequestInternal(HttpServletRequest request,
                                 HttpServletResponse response) throws Exception {
 
    logger.debug("id: " + request.getParameter("id"));
    logger.debug("title: " + request.getParameter("title"));
    logger.debug("url" + request.getParameter("url"));
    logger.debug("excerpt: " + request.getParameter("excerpt"));
    logger.debug("blog_name: " + request.getParameter("blog_name"));
 
    String result = "<?xml version="1.0" encoding="UTF-8"?>"
        + "<response><error>0</error></response>";
 
    response.getWriter().print(result);
    response.getWriter().flush();
    return null;
 }
}

아래는 트랙백 서버에서 트랙백 클라이언트가 보낸 트랙백 핑에 의한 블로그 반영결과를 트랙백 클라이언트에 되돌려 주는 결과 메시지를 나타낸 것이다.


Posted by 감자타다