Início > WCF > 10 passos para criar um Serviço WCF e publicar no IIS (1° Parte)

10 passos para criar um Serviço WCF e publicar no IIS (1° Parte)

26 de julho de 2009 Deixe um comentário Go to comments

Olá, hoje iremos deixar um exemplo de como criar um serviço WCF e publicar este serviço no IIS.

Serviço WCF:  O Windows Communication Foundation (WCF) é um estrutura unificada para criar aplicativos distribuídos, confiáveis, seguros, transacionais e interoperáveis baseado no padrão SOA. Em versões anteriores do visual Studio, existiram (existem) várias tecnologias que podem ser usadas para comunicação entre aplicativos,em resumo, a idéia do WCF é unificar essas tecnologias.

Veja uma representação da integração destas tecnologias na imagem abaixo:

Para saber mais acesse este link de introdução ao WCF: http://msdn.microsoft.com/pt-br/library/bb907578.aspx

Criando o serviço:

1-) Abra o visual Studio e escolha New Project -> Visual C# -> WCF -> WCF Service Library, dê o nome de WCFService.

Este projeto será responsável por implementar nosso serviço, para não complicar nosso exemplo neste também ficará a interface e nossa entidade que usaremos para teste, no entanto, nada impede de criar outras camadas.

2-) Crie neste projeto uma classe chamada pessoa, conforme o exemplo abaixo:

using System;

using System.Collections.Generic;

using System.Linq;

using System.ServiceModel;

using System.Text;

using System.Runtime.Serialization;

 

namespace WCFService

{

    [DataContract]

    public class Pessoa

    {

        [DataMember]

        public string Nome {get; set;}

 

        [DataMember]

        public string SobreNome { get; set; }

 

        [DataMember]

        public int Idade { get; set; }

    }

}

 

 

Para serializar nossos objetos estamos utilizando a referência System.Runtime.Serialization, repare que estamos fazendo uso de dois atributos sendo eles DataContract (aplicado a classe) e DataMember (aplicado as propriedades da classe). O DataContract indica que uma classe poderá ser exposta através do WCF, já o atributo DataMember deve ser aplicado nos campos e propriedades que o tipo possui e que devem ser expostos através do serviço.

3-) Agora iremos então definir a interface do nosso serviço, para isso abra o arquivo IService1.cs de seu projeto e deixe o conteúdo conforme o exemplo  abaixo:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Runtime.Serialization;

using System.ServiceModel;

using System.Text;

 

namespace WCFService

{

    [ServiceContract]

    public interface IService1

    {

        [OperationContract]

        Pessoa BuscarPessoas();

 

        [OperationContract]

        Pessoa BuscarPessoaPorIdade(int idade);

    }

}

Nesta interface estamos utilizando mais 2 atributos, porém agora da referência System.ServiceModel, sendo eles ServiceContract, responsável pelos contrato dos serviços que serão disponíveis e o OperationContract que é o contrato das operações que o serviço dispõe.

 

4-) Já temos nossa classe de dados (pessoa) e nossa interface que que disponibiliza o contrato dos serviços, agora iremos implementar nossos serviços, para isso  abra o arquivo Service1.cs e deixe o mesmo conforme o exemplo abaixo:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Runtime.Serialization;

using System.ServiceModel;

using System.Text;

 

namespace WCFService

{

    // NOTE: If you change the class name "Service1" here, you must also update the reference to "Service1" in App.config.

    public class Service1 : IService1

    {

        /// <summary>

        /// Método responsável por simular a carga de dados;

        /// </summary>

        /// <returns></returns>

        private List<Pessoa> CriarListaPessoas()

        {

            List<Pessoa> listaPessoas = new List<Pessoa>()

            {

                new Pessoa(){Nome="Claudia", SobreNome="Borges", Idade=30},

                new Pessoa(){Nome="Nelson", SobreNome="Borges", Idade=30},

                new Pessoa(){Nome="João", SobreNome="Ferreira", Idade=10},

                new Pessoa(){Nome="Pedro", SobreNome="Henrique", Idade=8}

            };

            return listaPessoas;

        }

 

        #region IService1 Members

 

        /// <summary>

        /// Método responsável por Buscar uma lista de pessoas sem filtro.

        /// </summary>

        /// <returns></returns>

        public List<Pessoa> BuscarPessoas()

        {

            return CriarListaPessoas();

        }

 

        /// <summary>

        /// Método responsável por Buscar uma pessoa com a idade mencionada no parâmetro

        /// </summary>

        /// <param name="idade"></param>

        /// <returns></returns>

        public Pessoa BuscarPessoaPorIdade(int idade)

        {

            return CriarListaPessoas().Find(pResult => pResult.Idade == idade);

        }

 

        #endregion

    }

}

 

 

Repare que estamos implementando nosso serviço de acordo com o contrato (interface), e estamos disponibilizando 2 métodos sendo eles:

BuscarPessoas-> Retorna uma lista de pessoas , para simular a carga de dados estamos utilizando um método interno do serviço chamado CriarListaPessoas.

BuscarPessoaPorIdade -> Neste método iremos passar uma idade e o mesmo irá retornar uma pessoa que contenha essa idade.

 

5-) Agora iremos criar nosso projeto de serviceHost que irá disponibilizar este serviços para isso crie um projeto  tipo -> New Project – Web -> WCF Service Application, deixe o nome do mesmo como WCFServiceHost conforme imagem abaixo:

 

 

6-) Deixe o seu projeto conforme a imagem abaixo, apagando os itens como Service1.cs e o IService.cs, exemplo:

 

Continua …   

Nelson Borges

Categorias:WCF
  1. sabrina
    21 de junho de 2010 às 0:59

    fazer msn

  2. sabrina
    21 de junho de 2010 às 1:00

    quero que minha irma aprenda a fazer msn

  3. William
    23 de setembro de 2012 às 2:05

    nao encontro o template New Project – Web -> WCF Service Application
    Como faco para encontra-lo. Tentei pelo template online do Visual Studio e nao achei. Obrigado!

  1. No trackbacks yet.

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: