ASP.NET 2.0 - Criando um leitor para consumir RSS


Este artigo mostra como você pode fazer um leitor de RSS usando ASP.NET de maneira simples e sem a necessidade de escrever muito código.

O RSS (Really Simple Syndication) fornece uma maneira conveniente organizar informação a partir de uma variedade de fontes distintas. O RSS  utiliza um formato padronizado de tratar a informação baseado em XML.

Usando a tecnologia RSS podemos acessar os "feeds" RSS ou fontes RSS que oferecem conteúdo de informação que é entregue como um arquivo XML. Portanto um RSS Feed nada mais é que um documento XML fornecido e atualizado por algum site na web com conteúdo dinâmico que pode ser consumido por aplicações clientes.

Como Funciona ?

No arquivo RSS são incluídas informações como título, página (endereço exato de onde há algo novo), descrição da alteração, data, autor, etc, de todas as últimas atualizações do site ao qual ele está agregado. De poucos em poucos minutos o arquivo RSS é atualizado mostrando as alterações recentes. O RSS é um formato padronizado mundialmente, que funciona sob a linguagem XML (Extensible Markup Language), e é usado para compartilhar conteúdo Web. Ele permite, por exemplo, que o administrador de um site de notícias crie um arquivo XML com as últimas manchetes  publicadas, a fim de compartilhá-las mais rapidamente com seus leitores. Este arquivo poderá ser lido através de qualquer ferramenta que seja capaz de entender o formato XML do RSS.


RDF Site Summary, a primeira versão do RSS foi criada por Dan Libby da NetSacpe em março de 1999 para uso no portal "My Netscape". Esta versão ficou conhecida como RSS 0.9. Em julho de 1999, em resposta a comentários e sugestões, Libby produziu um protótipo chamado RSS 0.91 (com RSS significando Rich Site Summary), simplificando também o formato.

O RSS (Really Simple Syndication) é um descendente do RDF (Resource Description Framework) e segue as definições da W3C para o RDF, que é descendente do XML

(fonte WiKipédia - http://pt.wikipedia.org/wiki/RSS)

Nosso leitor RSS fará o papel do leitor cliente e acessará os feeds RSS. Existem aplicações prontas que buscam esta informação de na web no nosso exemplo iremos usar alguns feeds RSS previamente cadastrados em um banco de dados Access.

Como já foi dito os feeds são disponibilizados por sites na web. O site da Microsoft msdn.com é um exemplo que disponibiliza diversos feeds para serem consumidos. Dê uma olhada no link: http://msdn.microsoft.com/aboutmsdn/rss/.

Veja também o artigo  : VB.NET - Gerando RSS para compartilhar informações.

Abaixo temos alguns feeds:disponbilizados pelo link acima:

A seguir vamos criar um web site ASP.NET usando o Visual Web Developer  Express Edition para mostrar como podemos consumir feeds RSS.

- Abra o seu VWD e crie um novo web site a partir do menu File-> New Web Site...

-  Na janela New Web Site selecione ASP.NET Web Site , a linguagem Visual Basic e dê o seguinte nome ao projeto: leitorRSS

Usando SGBD qualquer , eu vou usar o Access, crie um banco de dados chamado rss.mdb e a seguir defina uma tabela chamada feeds com  a seguinte estrutura:

O banco de dados rss.mdb exibindo a tabela feeds

a

A seguir vamos preencher esta tabela com os feeds oferecidos pela Microsoft. O resultado deverá ser o seguinte :

Agora vamos incluir esta base de dados no diretório App_Data da aplicação. Clique com o botão direito do mouse sobre o diretório e selecione a opção Add Existing Item, e selecione o banco de dados rss.mdb criado.

Selecione a página padrão Default.aspx e inclua um controle DropDownList com ID=ddlRSS , e um componente GridView com ID=gdvRSS

Agora defina a propriedade AutoPostBack do controle DropDownList como true pois eu vou querer que ocorra um postback sempre que um item no DropDownList for alterado de maneira que o controle GridView possa exibir os RSS relacionados.

Vamos configurar o controle DropDownList para exibir os dados da tabela RSS. Clique na smart tag do controle e selecione a opção Choose Data Source...

Como não existe um fonte de dados configurada clique na opção <New data source...>

Na próxima janela selecione a opção - Access DataBase - pois estamos usando um banco de dados Access. (Poderíamos estar usando outro banco de dados ou um arquivo XML)

 

 

A seguir clique no botão - Browse... - e no diretório App_Data , selecione o banco de dados rss.mdb e clique no botão OK.

 

 

N próxima janela basta clicar no botão Next >. Na janela - Configure the Select Statement - escolha os campos que vamos extrair da tabela feeds conforme figura abaixo e clique no botão Next>.

 

 

Ao clicar no botão Finish será exibida a última tela para configuração. Nela devemos informar o campo que será exibido pelo controle e o nome do campo que será selecionado. Para encerrar clique no botão OK.

 

 

Pronto ! Já temos nossa base de dados vinculado ao controle DropDownList de forma que quando o formulário for carregado ele será preenchido com os dados da tabela feeds.

 

Vamos configurar o controle GridView. Selecione o controle clique na smart tag. Selecione Auto Format e escolha uma formatação para o GridView.

 

Agora clique na opção Edit Columns  e efetue a seguinte configuração:

 

- Em Available Fields selecione HiperLinkField e clique no botão Add;
- Informe a seguir as seguintes propriedades para o campo selecionado:

 

 

Ao terminar esta etapa o seu projeto deverá estar apresentando o seguinte aspecto:

 

 

Agora inclua o seguinte código na página Default.aspx:

 

Imports System.data
 

Partial Class _Default

     Inherits System.Web.UI.Page
 

Private Sub preenchedados(ByVal rss As String)


Dim
ds As New DataSet

Try

    ds.ReadXml(rss)

     gdvRSS.DataSource = ds.Tables(2).DefaultView

     gdvRSS.DataBind()

Catch ex As Exception

     Throw ex

End Try

End Sub
 

Protected Sub DropDownList1_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles ddlRSS.SelectedIndexChanged

     preenchedados(ddlRSS.SelectedValue)

End Sub

End Class

 

O código acima possui a rotina preencheDados que será chamada toda vez que houver uma seleção pelo usuário no controle DropDownList. Quem me garante este comportamento é o evento SelectedIndexChanged e a propriedade AutoPostBack do controle definida como true.

 

O  RSS é apenas um arquivo XML com tags definidas que pode ser lido de forma a compartilhar informação. Abaixo temos um exemplo de um arquivo RSS padrão:

<?xml version="1.0"?>
<rss version="2.0">
  <channel>
  <title>macoratti</title>
  <link>http://www.macoratti.net</link>
  <description>meu primeiro rss</description>
  <language>por-br</language>
  <copyright>Copyright (C) Nacoratti.net 2005</copyright>
  <lastBuildDate>data de hoje</lastBuildDate>
  <webMaster>macoratti@yahoo.com.br</webMaster>
  <ttl>1</ttl>
     <item>
         <title>Criando o RSS com VB.NET</title>
         <description>Este é meu programa para criar um RSS para compartilhar informações de um site.</description>
         <pubDate>novembro , 10 Nov 2005</pubDate>
     </item>
  </channel>
</rss>

Dando uma olhada nas tags principais temos:

<rss> È a tag raiz e possui um atributo version. A última versão é a 2.0
<channel> A raiz rss pode conter tags <channel>. Esta tag contém também outras tags como : <title> , <link> e <item>
<title> representa o título do RSS
<link> representa a URL do web site fornecedor do rss.
<description> detalha as informações do rss
<copyright> informação de copyright

<generator>

Nome do programa ou aplicação que gera o rss.
<rating> Avaliação do canal
<skipHours> Tempo em que estará disponível
<author> E-mail do autor da notícia

No nosso exemplo estaremos tratando somente as tags : <title> e <link>

 

Na rotina efetuamos as seguintes tarefas:

Nota:  O dataSet possui 6 tabelas: rss, channel, item, category, attribute e guid. Estamos usando a terceira tabela : item.

 

Executando o projeto (Tecle F5) usando o servidor web embutido no VWD iremos obter o seguinte resultado para a seleção Visual Basic:

 

 

Ao clicar em um link exibido será aberta uma nova janela com exibição do assunto correspondente.

 

Pegue o projeto completo aqui: leitorRSS.zip

Eu sei é apenas ASP.NET, mas eu gosto..