Desenvolvimento - WCF

WCF em Aplicação Gerenciável (Managed Application)

Este artigo mostra como hospedar um serviço WCF através de uma aplicação gerenciável como uma aplicação Console e Windows Form.

por Pedro Henrique Barbosa Fernandes



Neste artigo vou mostrar como podemos hospedar um serviço WCF usando uma aplicação gerenciável como uma aplicação Console ou Windows Form, isto é, através do código podemos iniciar e parar o serviço, assim como podemos também definir suas propriedades e opções de segurança.

Crie um novo Console Application e em seguida adicione uma referência para o componente System.ServiceModel

Abra o Program.cs e adicione o seguinte código no início do arquivo onde ficam as diretivas using

using System.ServiceModel;

using System.ServiceModel.Description;

Vamos agora definir o serviço e a implementação do mesmo, em nosso exemplo o serviço irá ter uma operação simples que irá somar dois números.

Crie uma interface chamada IService e uma classe chamada ServiceImpl

IService.cs:

using System.ServiceModel;

namespace ConsoleApplication1

{

    [ServiceContract]

    public interface IService

    {

        [OperationContract]

        decimal Soma(decimal x, decimal y);

    }

}

ServiceImpl.cs:

namespace ConsoleApplication1

{

    public class ServiceImpl : IService

    {

        public decimal Soma(decimal x, decimal y)

        {

            return y + y;

        }

    }

}

Agora vamos criar uma instancia da classe ServiceHost e passar em seu construtor um Type que representa o tipo do serviço e um objeto Uri que representa o endereço url onde será iniciado o serviço.

using System;

using System.ServiceModel;

using System.ServiceModel.Description;

namespace ConsoleApplication1

{

    class Program

    {

        static void Main(string[] args)

        {

            Uri baseAddress = new Uri("http://localhost:8080/calc");

            using (ServiceHost host = new ServiceHost(typeof(ServiceImpl), baseAddress))

            {

                ServiceMetadataBehavior smb = new ServiceMetadataBehavior();

                smb.HttpGetEnabled = true;

                smb.MetadataExporter.PolicyVersion = PolicyVersion.Policy15;

                host.Description.Behaviors.Add(smb);

                host.Open();

                Console.WriteLine("O serviço foi iniciado em {0}", baseAddress);

                Console.WriteLine("Pressione <Enter> para parar o serviço.");

                Console.ReadLine();

                host.Close();

            }

        }

    }

}

Inicie a aplicação, o serviço será iniciado e hospedado no endereço http://localhost:8080/calc

Referências:

http://msdn.microsoft.com/en-us/library/ms731758%28v=VS.100%29.aspx

Pedro Henrique Barbosa Fernandes

Pedro Henrique Barbosa Fernandes