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]<br />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)<br /> {<br /> try<br /> {<br /> string sReturn = "";<br /> XDocument xml = XDocument.Load(@"http://www.horoscopofree.com/pt/misc/partnership/Horoscopo.xml?HFPTS=526bf73c3babbce8ed5371f7633e3a5e");<br /><br /> switch (p_nSigno)<br /> { <br /> case 1:<br /> sReturn = "Áries";<br /> break;<br /> case 2:<br /> sReturn = "Touro";<br /> break;<br /> case 3:<br /> sReturn = "Gêmeos";<br /> break;<br /> case 4:<br /> sReturn = "Câncer";<br /> break;<br /> case 5:<br /> sReturn = "Leão";<br /> break;<br /> case 6:<br /> sReturn = "Virgem";<br /> break;<br /> case 7:<br /> sReturn = "Libra";<br /> break;<br /> case 8:<br /> sReturn = "Escorpião";<br /> break;<br /> case 9:<br /> sReturn = "Sagitário";<br /> break;<br /> case 10:<br /> sReturn = "Capricórnio";<br /> break;<br /> case 11:<br /> sReturn = "Aquário";<br /> break;<br /> case 12:<br /> sReturn = "Peixes";<br /> break;<br /> default:<br /> sReturn = "service off...";<br /> break;<br /> }<br /><br /> var Horoscopo =<br /> from rss in xml.Descendants("item")<br /> where (rss.Element("title").Value == sReturn)<br /> select new<br /> {<br /> Descricao = (string)rss.Element("description").Value<br /> };<br /><br /> foreach (var dados in Horoscopo)<br /> {<br /> sReturn = dados.Descricao;<br /> }<br /><br /> return sReturn;<br /> }<br /> catch (Exception ex)<br /> {<br /> throw ex;<br /> }<br /> }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)<br />{<br /> sReturn = dados.Descricao;<br />}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.







