login register Sysop! about ME  
qrcode
    최초 작성일 :    2004년 08월 24일
  최종 수정일 :    2004년 08월 24일
  작성자 :    taeyo
  편집자 :    Taeyo (김 태영)
  읽음수 :    28,902

강좌 목록으로 돌아가기

필자의 잡담~

8월말로 아시아나 항공 프로젝트가 끝나서 조금 한가해질까 했는데.. 쥬니어가 오늘, 내일 하는 관계로 여전히 정신없는 날들을 보내고 있답니다. ^^ 하하하...

하지만, 벙개는 해야하겠죠?

태오입니다.

이번 시간에는 항간에 이슈가 되고 있는(얼마전까지 이슈였었던, 현재까지도 이슈이기는 한.. -_-+), RSS를 .NET 환경에서 분석 및 해석하고, 작성 및 저장하는  RSS Reader 컴포넌트와 Rss Writer 컴포넌트를 C#을 이용하여 만들어볼까 합니다 그리고, 작성된 컴포넌트들을이용해서 실제로 웹 상에서 제공되는 RSS 서비스들을 ASP.NET을 통해서 다루어보기도 할 것이구요.

이 강좌를 바라보시는 여러분 중 대부분은 이미 RSS가 무엇을 위한 것인지 아실 것이라 믿습니다. 그렇죠? 여러분들은 이미 RSS가 무엇이고, 그것이 웹 사이트를 홍보하는데 대단히 유용할 것이라는 점과 요즘 웹 사이트에서 RSS를 지원하는 것은 일종의 유행과 같다는 것을 아시죠?

엇? RSS가 무엇이냐구요? 첨 듣는다구요??

음. 하지만, 모르고 있다는 것이 창피한 일은 아닙니다!! 몰랐으면 지금부터라도 알면 되니까요. 단, 스스로 말입니다. RSS가 무엇인지 잘 모르겠다면 우선적으로 네이버나 야후에 가셔서 한번 검색해 보세요 ^^; 그 정도는 스스로 알아봐 주시는성의를 살포시 보여주시면 저는 더욱 힘을 내서 강좌를 진행할 수 있을 것 같습니다.

뿅~~~

벌써 만나보고 오셨군요!!!  그렇습니다. 요즘 들어 많은 사이트에서 만나볼수 있는 그것!! 간단하게 이야기하면 사이트의 요약정보 제공기술이 바로 RSS 서비스입니다. 그렇다면,이미 대략적인 것을 여러분이 알아보셨다고 가정하고, 간단하게만 정리해 보도록 할까요??

RSS 란?

RSS는 웹 사이트끼리서로의 자료를 공유하기 위한 규약으로써, 완전한 명칭은 'Really SimpleSyndication', 'Rich Site Summary'이기도 합니다. 외울 필요까지는 없습니다. -_-;;

일단, 여러 웹 사이트들에서 자신의 사이트의 유용한 정보들을 표준 규칙에 맞춰서 XML 목록화시켜 놓은 것을 RSS라고 할 수 있겠는데요. 사실, 이러한 RSS는 일반적인 사용자들에게 직접적으로 제공되기 위한 목적보다는, 그러한 포맷화된 데이터를 가지고 재정리하여 서비스를 제공하려 하는 개발자들을 상대로 제공된다고 보시는 것이 좋습니다. 물론, XML에 지식이 있는 사용자라면 직접 RSS 포맷을 살펴보아도 대략적으로 그 파일이 무엇을 의미하는것인지 이해할 수도 있겠지만, 일반적인 경우라면 RSS Reader(판독기)라고 불리는툴들을 이용해야 좀 더 쉽게 알아볼 수 있는 편이랍니다.

태오 사이트도 얼마전부터 강좌목록에대해서 RSS 서비스를 제공하기 시작했습니다. 메인 페이지에 보시면 알겠지만, 라는 이미지를 눌러보시면 나타나는 XML이 바로 RSS 랍니다. ^^;;

대표적인 RSS 리더로는 http://www.sharpreader.net/에서 제공하는 SharpReader가 있구요. 국내에서 제작된 것으로도 여럿이 있습니다. 국내에서 제작된 Rss 리더기는 여기서 언급하지 않겠습니다. 자칫하다가는 특정 제품을 간접광고한다는비난(?)을 살까 두려워서요... (광고 좀 해주면 어때서 그러냐구요??? 어차피얼마 보지도 않는 강좌???  -_-+++  삐짐모드에 빠져들게 하시는 구만요!!)

다음은 SharpReader를 실행하여, 태오 사이트의 강좌 RSS를 읽어들인 모습입니다.

사용자가 이렇게 RSS 리더기에 자신이 원하는 RSS 주소들을 등록해 놓으면, 사용자는 이제 해당 웹 사이트에 직접 방문하지 않아도, 위와 같은 RSS 클라이언트를 통해서 쉽게 원하는 정보를 한자리에서 확인할 수 있게 된다는 겁니다. 데따 편해지겠죠????  그렇습니다...

"엥???  그렇게 되면 사용자가 사이트에 잘 안 찾게 되잖아. 그럼 안되지...  그렇게 할 순 없어"

라고 생각하신다면, 뭐 그것도 좋습니다. 하지만, 현재 RSS는 일종의 대세입니다. 남들이 다 서비스를 하고 난 다음에는 너무 늦는게 인터넷이라는 세상이라는 것 아시죠???  그렇습니다. 광고가 떨어질까봐 걱정이라면 RSS로 제공하는 컨텐츠에 광고를 심으면 됩니다. 방법은 찾으면 됩니다만, RSS라는 대세를 무시하는 것은 조금 걱정스럽습니다. 이상, 5줄 정도의 사견이었습니다. 혹시라도 이 글이 기분에 거슬리셨다면 죄송합니다. ㅠㅠ 기분이 혹 상하신다면 제발~ 무시해 주세요 ^^

RSS도 일종의 XML 파일이기에, W3C(World Wide Web 컨소시움)에서 제시한 XML 1.0 스펙을 반드시 따라주어야 합니다.  RSS가 어떤 목적을 가지고 있는지, 어떤 모습을 띄고 있는지는 사실 직접 해당 RSS 파일을 한번 보시면 이해가 쉬우리라 생각합니다. 그렇다면, 예로 마이크로소프트 사의 ASP.NET 섹션으로 한번 가 보실까요?

여기서 보시면, 다음과 같은 이미지가 있죠? 그것을 클릭해 보세요

RSS RSS Feed

그럼 보기에 따라 조금은 눈이 부담스러울 수도 있는 XML 파일이 나타날 것입니다.

"앗!! 모조리 영어다!!" 라고 외치시면서 화면을 피하지는 말아주세요

화면을 잘 살펴보시면서, 동시에 이전 MS 웹 페이지를 살펴보시면 여러분은 한가지 게임을 즐기실 수 있습니다 그것은바로 !!!!!!

"같은 문장 찾기" 게임이지요...

MS 사이트의 Recent Headlines for ASP.NET ( http://msdn.microsoft.com/asp.net/recent/)의 목록과 현재 XML 파일에서 보여지는 항목들을 한번 비교해 보세요... 호오... 뭔가 느껴지시는 것이 있죠?

그렇습니다. 바로 현재 ASP.NET 섹션에서 제공되는 RSS가 뭔가 규칙적인 형태로 ASP.NET 최근 헤드라인 기사들을요약하여 제공하는 있다는 것을 이내 눈치챌 수 있을 것입니다.

기왕 본 김에, 일전의 http://msdn.microsoft.com/asp.net/를 다시 보시면, 우측 상단에 MSDN Rss Feed라는 커다란 배너를 보실 수 있을텐데요. 그것을 클릭해서 한번 내용을 살펴보세요. 그러면, 왜 MS 사이트가 RSS를 지원하는지를 살펴볼 수 있습니다. RSS는 무엇이고, MS는 왜 RSS를 제공하는지, 그리고 이를 통해서 어떤 유익함이 있는지도 구체적으로 설명하고 있죠. (못 찾으시겠는 분들을 위해서 바로가기 링크도 알려드립니다.   http://msdn.microsoft.com/aboutmsdn/rss/ 를 참고하세요)

보시다시피, asp.net 섹션에서는 이 섹션에 올라오는 새로운 컬럼들의 링크와 소식을 RSS로 제공하고 있습니다물론, asp.net 섹션 외에 다른 MSDN 기술 섹션들도 RSS를 제공하고 있구요. MSDN에서도 RSS를 제공하고 있습니다. 고로, 여러분이 이러한 RSS 파일들의 경로를 카피해서, 이를 Rss 리더기 클라이언트에 붙여넣고 등록시켜 둔다면, 그 후에 여러분은 굳이 MS 사이트를 방문하지 않아도, RSS 구독 클라이언트 프로그램을 통해서 컬럼이 올라오는 즉시그 컬럼을 손쉽게 살펴볼 수가 있을 것입니다. 호오.. 대단히 Cool 하죠?

RSS 자세히 알아보기

그럼, 이미 수많은 RSS Reader기가 무료로 제공되고 있는데, 굳이 여기서 C#으로 RSS Reader를 만들어 보려는 것은 왜 일까요??? 현재 제공되고 있는 RSS Reader기들은 대부분이 윈도우즈 어플리케이션이기 때문이며, API가 따로 제공되지 않는 별도의 프로그램이기 때문입니다. (혹시 있는데 제가 못 찾은 것일지도 모릅니다만, 만들기 그리 어려운 것도 아니니 한번 만들어본다구 손해볼 것은 없잖아요??? -_-;;;  아닌가??)

만일, 여러분의 어플리케이션에서 다른 사이트의 RSS를 읽어와서 사용하고 싶다면 어떻게 할까요? 혹은 여러분의 웹 사이트에서 RSS를 작성하여 다른 사람들에게 제공하고 싶다면 어떻게 해야 할까요? 바로, 이러한 이유로 RSS Reader와 Writer를 제작해 보려하는 것입니다요~~ 시작은 우선적으로 Reader로 하려 하구요~~

그렇다면, 서서히 시작해봐야겠죠? RSS Reader 만들기를 말입니다. 하지만, 그 전에...  먼저 알아야 할 것이 있습니다. 그렇습니다. 그것은 바로 RSS Reader의 기초인 RSS라는 것 자체에 대한 지식입니다. 

RSS를 다루는 컴포넌트를 제작하려면 아무래도 RSS에 대한 스펙을 잘 알고 있어야 하겠죠? 그래야, 그에 따라 올바르게 동작하는 컴포넌트를 설계할 수 있을테니 말입니다. 다음은 RSS 2.0 Specification이 대단히 자세하게 나와있는 사이트입니다. 한번 참고해 보세요.

http://blogs.law.harvard.edu/tech/rss

이 스펙을 기반으로 RSS Reader를 제작할 것이기에, 가급적 스펙을 잘 살펴봐 두는 것이 중요합니다....!  순~~ 영어로만 되어져 있어서 뭘 봐야할지 모르겠다면, RSS가 <rss>라는 루트 노드로 시작하고, 그 하위로 <channel>을 가질 수 있으며, 각각의 항목은 <item> 노드를 사용해서 표현된다는 것과 각각의 노드에 사용할 수 있는 요소들에는 title, link 등등의 것들이 있다는 사실 및 그 요소들의 목록을 확인(가급적 암기!)해 주시기 바랍니다. 실제로, 컴포넌트는 바로 그들을 반영하여 설계되어야 하니까요.

참고로, 잘 보시면 Required elements와 Optional elements가 있을텐데요. 옵셔널은 있어도 되고 없어도 되는 것이니깐, 필수 요소들을 중점적으로 보시면 됩니다. ^^;

그리고, RSS 파일은 보통 index.xml, index.rdf, rss.xml 등의 이름으로 작성됩니다. 물론, 반드시 그래야 하는 것은 아니지만 일반적으로들 그런 이름으로 사용하고 있지요. XML의 URL은 RSS의 버전에 따라 다르게지정하는 편인데, 현재 국내에서 사용하는 대부분의 RSS 버전은 2.0을 사용하고 있습니다.

뭔가. 잘 정리가 안된다는 느낌이 오신다면 샘플 RSS 파일을 하나 살펴보면 도움이 됩니다. 다음 RSS는 태오 사이트에서 제공하고 있는 RSS인데요.

보시면 rss라는 노드를 루트로 해서, 하나의 channel과 여러개의 item 들이 존재하는 것을 보실 수 있습니다. 보기에 정신이 좀 없는데요. 하시는 분들을 위해서 위의 목록을 조금 다듬어서 보여드리면 다음과 같기도 합니다.

channel 구역은 여러분의 사이트에서 현재의 RSS가 제공하는 서비스가 무엇인지 기술하는 구역이라고 보시면 됩니다. 이 구역의 필수 요소로는title, link, description이 있습니다.(이 부분은 RSS 2.0 스펙을 보시면 자세히 나옵니다)

위의 샘플에서 title은 "Taeyo 사이트 최근 강좌 목록"이라고 되어져 있습니다. 이 제목만 봐도 현재의 RSS가 무엇을 제공하는지 확연히 알 수가 있죠??? 그렇습니다. 이처럼 title 요소에는 직관적인 제목을 사용하시는 것이 좋습니다. 이 제목은 차후 RSS Reader에서도 가장 부각되어 나타나는 요소이니까요.

위의 샘플에서는 필수 요소외에 language와 lastBuildDate를 추가로 사용하고 있습니다. 그 외에도 많은 하위 요소들을 원한다면 사용할 수 있는데요... 그것은 여러분들이 적절히 선택하시면 될 것 같습니다. 완벽한 RSS Reader를 제작하려면 스펙에 제시된 모든 요소들을 반영해야 하겠지만, 제가 만들어 볼 RSS Reader는 그렇게까지 완벽하고자 하지는 않기에(제품을 만들 것도 아니고.. 사실, 대부분의 사이트들이 제공하는 RSS 자체가 심플한 수준인지라 이 정도로도 사용하는데에 크게 지장이 없기 때문입니다) 여기서는 channel 요소가 가져야 할 하위 요소로는 위에서 보여지는 5개 정도만 사용해 보도록 하겠습니다.

channel 하위로는 이제 실제로 데이터 목록에 해당하는 item 요소가 반복되기 시작합니다. item 요소가 사실 RSS의 핵심인데요. 이 요소는 실제 데이터의 간추린 요약정보 및 링크정보 등을 제공해 주지요. 그리고, 실제 RSS Reader가 중점적으로 관심을 가지고, 데이터를 읽어오는 부분도 바로 이 요소들이 됩니다. ^^

item 요소도 channel처럼 기본적으로 title, link, description을 하위 요소로 가질 수 있구요. 그 외에도 author, category, comments, pubDate, enclosure, guid 등의 요소들도 가질 수 있습니다. 대부분의 요소의 역할은 이름만 봐도 알 수 있겠지만, 잘 모르시겠으면 스펙을 확인해 보시면 되겠슴다!!!

그렇다고, item 요소가 이러한 모든 하위 요소들을 반드시 제공해야만 하는 것은 아닙니다. 일반적으로는 이러한 요소들 중에서 title, link, description, author, category, pubDate 정도만 이용해도 충분합니다. ^^

해서, 우리가 제작할 Rss Reader는 item 요소를 이 정도 수준으로만 구성해 보도록 하겠습니다. 저와 함께 Rss 컴포넌트들을 제작한 후에, 더 요소들을 추가하고 싶다면, 그것은 여러분이 스스로 추가해 넣으실 수 있을 것입니다. 다 해보고 나시면 알겠지만 그리 어려운 작업은 아니니까요.

자. 그럼 이제 대략적인 내용을 다 알아본 것 같습니다....  -_-;;

하지만, 과연 진짜???

과연 그렇습니다. 그래서, 이를 경축하는 의미로 제가 여러분에게 다음과 같은 숙제?를 한번 내볼까 합니다. 이것은 제가 처음 RSS 컴포넌트를 만들려고 맘 먹을때, 처음으로 해 본 작업이기도 한데요...   많이들 우선적으로 이런 작업을 하실 것이라 생각합니다.. 긍까.. 그것은 바로..

우선 손으로 직접 Rss.xml 파일을 손수 만들어 보는 것입니다. 위의 태오 사이트 RSS를 참고로 해서 말이지요. Channel도 적절히 꾸며주시고, item도 2개정도 적절히 추가해 보세요. 그렇게 직접 메모장이던, 에디트 플러스던 맘에 드는 텍스트 편집기로 작성하신 다음에 그 XML 파일을 rss.xml 이라고 이름 붙여서 저장해 보세요 ^^

저는 다음과 같이 한번 만들어 보았습니다.

<?xml version="1.0" encoding="ks_c_5601-1987" ?>
<rss version="2.0">
   <channel>
      <title>오늘의 베스트 셀러 목록</title>
      <link>http://www.booooooookstore.com</link>
      <description>부우우욱스토어 제공 오늘의 베스트셀러</description>
      <language>ko-KO</language>
      <lastBuildDate>Tue, 24 August 2004 10:00:00 GMT</lastBuildDate>

      <item>
         <title>Taeyo's ASP.NET with C#</title>
         <link>http://www.taeyo.net/book/main.htm</link>
         <author>김태영</author>
         <category>ASP.NET</category>
         <pubDate>2003-03-05</pubDate>
      </item>
      <item>
         <title>Taeyo's Advanced ASP</title>
         <link>http://www.taeyo.net/book/main.htm</link>
         <author>김태영</author>
         <category>ASP</category>
         <pubDate>2001-04-06</pubDate>
      </item>
   </channel>
</rss>

이렇게 만드셨으면 여러분의 로컬 웹 사이트에 이 파일을 올려보세요. 위치는 어디여도 무관하겠습니다만, 편의를 위해서 C\inetpub\wwwroot 에 넣어두는게 좋겠죠? 기본적으로 그 위치가 웹 루트 디렉터리이니까요 ^^

그 다음, RSS Reader Client인 SharpReader와 같은 도구를 사용해서 한번 이 RSS를 읽어보도록 하겠습니다. Address 입력란에 http://localhost/rss.xml를 입력하시면 되겠죠??? 그러면, 어떻습니까?? 멋드러지게 다음과 같이 제대로 읽혀지는 것을 보실 수가 있나요????

그렇습니다. 이렇게 올바른 포맷으로 XML 파일을 만들면, RSS Reader들은 그 내용을 매우 잘 분석해서 보여줍니다. 하하하.. 재미가 있어질라구 하죠??

그렇다면, 이제 본격적으로 시작해 볼 시간이 된 것 같네요.

우선적으로 이러한 RSS 파일을 읽어들여서 개발자의 구미에 맞게 다룰 수 있게 해주는 RSS Reader 컴포넌트를 말입니다. 두둥~~~~~~~

언제부터????

히힛.. 여러분의 기대심리를 모아서 다음 강좌부터 일단 컴포넌트 설계로 들어가 볼까 합니다. ^^

혹, 스스로 학습이 뛰어나신 분들은 다음 리소스들을 참고해 보시면서 스스로 제작해 보실 수도 있을 것 같네요. 혹시 스스로 도전하실 분들은 직접 만드신 것과 제가 만드신 것을 비교해 보는 것도 좋을 것 같아요. 제가 보여드리는 코드가 더 나을 것이라고는 누구도 장담할 수 없으니까요 ^^

RSS 2.0 Specification (Technology at Harvard Law)
Building a web based RSS Feed Viewer using System.XML
Create a valid RSS 2.0 document using XmlTextWriter
A Simple Way to Write XML in .NET (XmlTextWriter)

서로 각자의 코드를 만들어서 비교해 본다면~~ 서로 내공향상에 도움이 되겠죠? (그럴라면, 여러분의 코드도 제게 보여줘야 공평하잖아요.. -_-;;;;  메일로 보내주세요~~ 하하.. 농담입니다)

그럼, 담 강좌부터 구조체 RssItem, 컬렉션 클래스 RssItems를 설계하는 것으로 시작해 보도록 하겠습니다. 읽어주셔서 감사합니다.

태오였어요~


authored by


 
 
.NET과 Java 동영상 기반의 교육사이트

로딩 중입니다...

서버 프레임워크 지원 : NeoDEEX
based on ASP.NET 3.5
Creative Commons License
{5}
{2} 읽음   :{3} ({4})