Antes de iniciar a segunda etapa desta série, gostaria de agradecer aos elogios sobre a primeira parte do artigo.
Vale lembrar que o conteúdo está dividido em três partes:
- Parte 1: Criação do Projeto e Desenvolvimento da GUI
- Parte 2: Desenvolvimento do nosso WCF (Windows Communication Foundation)
- Parte 3: Consumindo nosso WCF através da nossa aplicação e manipulação de eventos
Preparado para a segunda parte? Vamos lá!
Para começar, abra seu projeto no Visual Studio 2010. Na Solution Explorer, clique com o botão direito sobre o projeto e escolha a opção: “Add->New Project”
Depois escolhemos no menu lateral a opção WCF seguido da opção “WCF Service Application” e damos um nome ao nosso WCF.
Antes de prosseguir, dvou explicar um pouco sobre o que é WCF, caso você ainda não conheça.
Segundo o Wikipédia, WCF é:
Windows Communication Foundation (WCF) é um modelo de programação unificado e ambiente de execução (Framework) criado pela Microsoft que visam a construção de aplicações orientadas a serviços (Service Oriented Architecture). O objetivo principal do WCF permitir que analistas e desenvolvedores criem aplicações voltadas para computação distribuída.O WCF possui ainda um conjunto de bibliotecas (classes) que permitem aos desenvolvedores criar estas aplicações para funcionarem sob o sistema operacional Windows.
Ainda parece confuso? Aqui você pode encontrar uma introdução muito boa feito pelo mestre Macoratti.
Depois de criado o nosso WCF, a nosso projeto deverá deve ficar assim:
Agora vamos colocar a mão na massa de verdade!
Note que temos ali os arquivos IService1.cs e o Service1.svc
O arquivo IService1.cs é uma interface (não confundir com GUI) onde terão as assinaturas dos métodos que o nosso WCF irá disponibilizar. Nesse arquivo você notará que já existem duas assinaturas de métodos, o que iremos fazer é adicionar a nossa assinatura para que nosso método possa ser implementado.
Logo após o comentário “// TODO: Add your service operations here”, colocaremos o seguinte código:
[OperationContract]
string GetPrevisao(int value);
O que fizemos foi definir o método GetPervisao que receberá um inteiro como parâmetro e retornará uma valor do tipo string. Perceba que ainda não precisamos implementar nosso método, apenas dizemos o que precisamos e o que devolveremos.
Nosso código ficará assim:
No arquivo Service1.svc iramos implementar o nosso método GetPrevisao.
Este método irá receber um parâmetro inteiro que representará o signo que se deseja obter a previsão do dia. A previsão será obtida através do site horoscopofree.com.br, que disponibiliza um arquivo xml que tem as previsões diárias de cada signo.
O nosso código ficará assim:
public string GetPrevisao(int p_nSigno)
{
try
{
string sReturn = "";
XDocument xml = XDocument.Load(@"http://www.horoscopofree.com/pt/misc/partnership/Horoscopo.xml?HFPTS=526bf73c3babbce8ed5371f7633e3a5e");
switch (p_nSigno)
{
case 1:
sReturn = "Áries";
break;
case 2:
sReturn = "Touro";
break;
case 3:
sReturn = "Gêmeos";
break;
case 4:
sReturn = "Câncer";
break;
case 5:
sReturn = "Leão";
break;
case 6:
sReturn = "Virgem";
break;
case 7:
sReturn = "Libra";
break;
case 8:
sReturn = "Escorpião";
break;
case 9:
sReturn = "Sagitário";
break;
case 10:
sReturn = "Capricórnio";
break;
case 11:
sReturn = "Aquário";
break;
case 12:
sReturn = "Peixes";
break;
default:
sReturn = "service off...";
break;
}
var Horoscopo =
from rss in xml.Descendants("item")
where (rss.Element("title").Value == sReturn)
select new
{
Descricao = (string)rss.Element("description").Value
};
foreach (var dados in Horoscopo)
{
sReturn = dados.Descricao;
}
return sReturn;
}
catch (Exception ex)
{
throw ex;
}
}
Nesse código lemos o arquivo xml do horóscopo free e a partir do parâmetro definimos de que signo iremos obter o horóscopo. Esse arquivo xml traz todos os signos de uma única vez, então precisamos utilizar uma maneira para “filtar” apenas o signo que desejamos obter.
Para fazer isso, utilizamos LINQ para fazer esse filtro.
A variável rss irá guardar o resultado que desejamos obter, detalhe para alguns pontos do nosso código:
- from rss in xml.Descendants(“item”). Aqui estamos trazendo para a variável rss todo o conteúdo contigo na tag “item” do xml.
- where (rss.Element(“title”).Value == sReturn). Aqui estamos filtrando nosso xml quando o conteúdo da tag “title” é igual a nossa variável correspondente ao signo que se deseja obter a previsão.
- select new { Descricao = (string)rss.Element(“description”).Value }. Aqui estamos selecionado descrição contida na tag “description” que por sua vez esta contida na tag “tittle” que filtramos anteriormente.
foreach (var dados in Horoscopo)
{
sReturn = dados.Descricao;
}
Aqui nós varremos a nossa variável Horoscopo retornamos a descrição obtida.
Com isso finalizamos aqui o nosso WCF. Esse cara vai ser o responsável por trazer para nosso aplicativo as informações que precisamos para exibir no aparelho do usuário.
No próximo artigo veremos como fazer isso na prática e disponibilizarei todo o código fonte do projeto.
Até a próxima e um abraço a todos.