Dev (Back & Front)ARTIGO

Windows Phone 7, indo além do hello world – Parte 02

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:

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.

Formado em Análise de Sistemas pela Unibratec (PE) e Pós Graduado em Gerenciamento Ágil de Projetos pelo C.E.S.A.R. Edu (PE). Atualmente trabalha como Analista de Projetos na CSU CardSystem.

Ver perfil