Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
O Visual Studio fornece ferramentas para trabalhar com o Windows Communication Foundation (WCF) e WCF Data Services, tecnologias da Microsoft para criar aplicativos distribuídos. Este artigo fornece uma introdução aos serviços de uma perspetiva do Visual Studio. Para obter a documentação completa, consulte WCF Data Services 4.5.
O Windows Communication Foundation (WCF) é uma estrutura unificada para criar aplicativos distribuídos seguros, confiáveis, transacionados e interoperáveis. Ele substitui tecnologias de comunicação entre processos mais antigas, como serviços Web ASMX, comunicação remota .NET, serviços corporativos (DCOM (Distributed Component Object Model)) e MSMQ (Microsoft Message Queue). O WCF reúne a funcionalidade de todas essas tecnologias sob um modelo de programação unificado. Essa abordagem simplifica a experiência de desenvolvimento de aplicativos distribuídos.
WCF Data Services
WCF Data Services é uma implementação do padrão Open Data (Open Data Protocol (OData)) Protocol. O WCF Data Services permite expor dados tabulares como um conjunto de APIs REST, o que permite retornar dados usando comandos HTTP padrão como GET, POST, PUTe DELETE. No lado do servidor, ASP.NET Web API substitui o WCF Data Services para criar novos serviços OData. A biblioteca de cliente WCF Data Services continua a ser uma boa opção para consumir serviços OData em um aplicativo .NET do Visual Studio (Project>Add Service Reference). Para obter mais informações, consulte WCF Data Services 4.5.
Modelo de programação WCF
O modelo de programação WCF é baseado na comunicação entre duas entidades: um serviço WCF e um cliente WCF. O modelo de programação é encapsulado no System.ServiceModel namespace no .NET.
Serviço WCF
Um serviço WCF é baseado em uma interface que define um contrato entre o serviço e o cliente. O serviço é marcado com um ServiceContractAttribute atributo, conforme mostrado no código a seguir:
Você define funções ou métodos que são expostos por um serviço WCF marcando-os com um OperationContractAttribute atributo.
Você também pode expor dados serializados marcando um tipo composto com um DataContractAttribute atributo, que permite a vinculação de dados em um cliente.
Depois que uma interface e seus métodos são definidos, eles são encapsulados em uma classe que implementa a interface. Uma única classe de serviço WCF pode implementar vários contratos de serviço.
Um serviço WCF é exposto para consumo através do que é conhecido como um endpoint. O ponto de extremidade fornece a única maneira de se comunicar com o serviço. Você não pode aceder ao serviço por meio de uma referência direta como faz com outras classes.
Um ponto de extremidade consiste em um endereço, uma vinculação e um contrato. O endereço define onde o serviço está localizado, como uma URL, um endereço FTP (File Transfer Protocol) ou um caminho de rede ou local. Uma associação define a maneira como você se comunica com o serviço. As ligações WCF fornecem um modelo versátil para especificar um protocolo como HTTP ou FTP com um mecanismo de segurança como a Autenticação do Windows ou nomes de usuário e senhas. Um contrato inclui as operações expostas pela classe de serviço WCF.
Vários pontos de extremidade podem ser expostos para um único serviço WCF. Essa abordagem permite que diferentes clientes se comuniquem com o mesmo serviço de maneiras diferentes. Por exemplo, um serviço bancário pode fornecer um ponto de extremidade para funcionários e outro para clientes externos, onde cada um usa um endereço, vinculação ou contrato diferente.
Cliente WCF
Um cliente WCF consiste em um proxy que permite que um aplicativo se comunique com um serviço WCF e um ponto de extremidade que corresponde a um ponto de extremidade definido para o serviço. O proxy é gerado no lado do cliente no arquivo app.config e inclui informações sobre os tipos e métodos que são expostos pelo serviço. Para serviços que expõem vários pontos de extremidade, o cliente pode selecionar o que melhor se adapta às suas necessidades, por exemplo, para se comunicar por HTTP e usar a Autenticação do Windows.
Depois que um cliente WCF é criado, você faz referência ao serviço em seu código assim como faz com qualquer outro objeto. Por exemplo, para chamar o GetData método mostrado anteriormente, você escreve código semelhante ao exemplo a seguir:
private void button1_Click(System.Object sender, System.EventArgs e)
{
ServiceReference1.Service1Client client = new
ServiceReference1.Service1Client();
string returnString;
returnString = client.GetData(textBox1.Text);
label1.Text = returnString;
}
Ferramentas WCF no Visual Studio
Visual Studio fornece ferramentas para ajudá-lo a criar serviços WCF e clientes WCF. Para obter mais informações, consulte Passo a passo: Criando um serviço WCF simples no Windows Forms.
Criar e testar serviços WCF
Você pode usar os modelos do WCF Visual Studio como base para criar rapidamente seu próprio serviço. Em seguida, você pode usar o WCF Service Auto Host e WCF Test Client para depurar e testar o serviço. Essas ferramentas fornecem um ciclo de depuração e teste rápido e conveniente e eliminam a necessidade de se comprometer com um modelo de hospedagem em um estágio inicial.
Modelos WCF
Os modelos do WCF Visual Studio fornecem uma estrutura de classe básica para o desenvolvimento de serviços. Vários modelos WCF estão disponíveis na caixa de diálogo Adicionar Novo Projeto , incluindo projetos de biblioteca de serviço WCF, sites de serviço WCF e modelos de item de Serviço WCF.
Quando você seleciona um modelo, os arquivos são adicionados para um contrato de serviço, uma implementação de serviço e uma configuração de serviço. Todos os atributos necessários já foram adicionados, criando um tipo de serviço simples "Hello World", e você não precisou escrever nenhum código. Você pode adicionar código para fornecer funções e métodos para seu serviço do mundo real, mas os modelos fornecem a base básica.
Para obter mais informações, consulte Modelos do WCF Visual Studio.
Host de serviço WCF
Quando você inicia o depurador do Visual Studio (selecionando F5) para um projeto de serviço WCF, a ferramenta WCF Service Host é iniciada automaticamente para hospedar o serviço localmente. A ferramenta enumera os serviços em um projeto de serviço WCF, carrega a configuração do projeto e instancia um host para cada serviço encontrado.
A ferramenta ajuda você a testar um serviço WCF sem escrever código extra ou se comprometer com um host específico durante o desenvolvimento. Para obter mais informações, consulte Host de serviço WCF (WcfSvcHost.exe).
Cliente de teste WCF
A ferramenta WCF Test Client permite que você insira parâmetros de teste, envie a entrada para um serviço WCF e exiba a resposta do serviço. A ferramenta fornece uma experiência de teste de serviço conveniente quando você a combina com o WCF Service Host. O local da ferramenta é Common7\IDE na pasta de instalação do Visual Studio.
Quando você seleciona F5 para depurar um projeto de serviço WCF, WCF Test Client abre e exibe uma lista de pontos de extremidade de serviço definidos no arquivo de configuração. Você pode testar os parâmetros e iniciar o serviço, e repetir esse processo para testar e validar continuamente seu serviço. Para obter mais informações, consulte WCF Test Client (WcfTestClient.exe).
Acessar serviços WCF no Visual Studio
O Visual Studio simplifica a tarefa de criar clientes WCF gerando automaticamente um proxy e um ponto de extremidade para os serviços que você adiciona na caixa de diálogo Adicionar Referência de Serviço . Todas as informações de configuração necessárias são adicionadas ao arquivo app.config . Na maioria das vezes, tudo o que você precisa fazer é instanciar o serviço para começar a usá-lo.
Na caixa de diálogo Adicionar Referência de Serviço , especifique o endereço de um serviço ou procure um serviço definido na sua solução. O sistema retorna uma lista de serviços e operações fornecidos pelos serviços. Você também pode definir o namespace para referenciar os serviços no código.
Na caixa de diálogo Configurar referências de serviço , você personaliza a configuração de um serviço. Você pode alterar o endereço de um serviço, especificar o nível de acesso, o comportamento assíncrono e os tipos de contrato de mensagem e configurar a reutilização de tipo.
Ponto final de serviço
Alguns serviços WCF expõem múltiplos pontos de extremidade através dos quais os clientes podem comunicarem-se com o serviço. Um serviço pode expor um ponto de extremidade que usa uma associação HTTP com um nome de usuário e segurança de senha e um segundo ponto de extremidade que usa FTP com Autenticação do Windows. O primeiro ponto de extremidade é usado por aplicações para aceder ao serviço a partir de fora de um firewall, enquanto o segundo pode ser usado numa intranet.
Nesse cenário, você especifica o endpointConfigurationName parâmetro com o construtor para uma referência de serviço.
Observação
As instruções neste artigo ilustram a versão mais recente da experiência de desenvolvimento interativo (IDE) disponível no Visual Studio. Seu computador pode mostrar nomes ou locais diferentes para alguns dos elementos da interface do usuário. Você pode estar usando uma versão diferente do Visual Studio ou configurações de ambiente diferentes. Para obter mais informações, consulte Personalizar o IDE.
Selecionar ponto de extremidade de serviço
Selecione um ponto de extremidade de serviço seguindo estas etapas:
Adicione uma referência a um serviço WCF clicando com o botão direito do mouse no nó do projeto no Gerenciador de Soluções e selecionando Adicionar referência de serviço.
No Editor de Código, adicione um construtor para a referência de serviço. Substitua
ServiceReferencepelo namespace para a referência de serviço e substituaService1Clientpelo nome do serviço.
Quando você insere o código, uma lista IntelliSense é exibida que inclui as sobrecargas para o construtor. Selecione a sobrecarga
endpointConfigurationName As String.Depois de selecionar a sobrecarga, digite
="<ServiceEndpoint>", em que<ServiceEndpoint>é o nome do serviço de ponto de extremidade que pretende usar.Sugestão
Os nomes dos pontos de extremidade disponíveis são definidos no arquivo app.config .
Encontre endpoints disponíveis para o serviço WCF
Para localizar os pontos de extremidade disponíveis para um serviço WCF, execute estas etapas:
No Gerenciador de Soluções, clique com o botão direito do mouse no arquivo deapp.config do projeto que contém a referência de serviço e selecione Abrir. O arquivo é aberto no Editor de Códigos.
Procure a
<Client>tag no arquivo.<Client>Na seção de tags, procure uma tag aninhada que comece com<Endpoint>.Quando a referência de serviço fornece vários pontos de extremidade, há duas ou mais
<Endpoint>tags.Na definição da tag
<EndPoint>, localize o parâmetroname="<ServiceEndpoint>"(onde<ServiceEndpoint>representa um nome de ponto final para o serviço). Este valor é o nome do ponto de extremidade de serviço que pode ser passado para aendpointConfigurationName As Stringsobrecarga de um construtor de referência de serviço.
Chamar métodos de serviço de forma assíncrona
A maioria dos métodos nos serviços WCF pode ser chamada de forma síncrona ou assíncrona. Quando você chama um método de forma assíncrona, seu aplicativo pode continuar a funcionar enquanto o método está sendo chamado. Essa abordagem é útil quando o sistema opera em uma conexão lenta.
Quando uma referência de serviço é adicionada a um projeto, a configuração padrão é chamar métodos de forma síncrona. Você pode alterar o comportamento para chamar métodos de forma assíncrona no diálogo Configurar Referência de Serviço.
A opção é definida numa base por serviço. Se um método para um serviço é chamado de forma assíncrona, todos os métodos devem ser chamados de forma assíncrona.
Observação
As instruções neste artigo ilustram a versão mais recente da experiência de desenvolvimento interativo (IDE) disponível no Visual Studio. Seu computador pode mostrar nomes ou locais diferentes para alguns dos elementos da interface do usuário. Você pode estar usando uma versão diferente do Visual Studio ou configurações de ambiente diferentes. Para obter mais informações, consulte Personalizar o IDE.
Chamar um método de forma assíncrona
Para chamar um método de serviço de forma assíncrona, siga estas etapas:
No Gerenciador de Soluções, selecione a referência de serviço.
Selecione Project>Configure Service Reference.
Na caixa de diálogo Configurar Referência de Serviço , marque a caixa de seleção Gerar operações assíncronas .
Vincular dados retornados pelo serviço
Você pode vincular dados retornados por um serviço WCF a um controle da mesma forma que vincula qualquer outra fonte de dados a um controle. Quando você adiciona uma referência a um serviço WCF, se o serviço contiver tipos compostos que retornam dados, eles serão adicionados automaticamente à janela Fontes de Dados .
Vincular o controle ao campo de dados retornado pelo serviço WCF
Para vincular um controle a um único campo de dados retornado por um serviço WCF, use estas etapas:
Selecione Dados>Mostrar Fontes de Dados. A janela Fontes de dados é aberta.
Na janela Fontes de Dados, expanda o nó para a sua referência de serviço. Todos os tipos compostos retornados pelo serviço são exibidos.
Expanda um nó de tipo e exiba os campos de dados relacionados ao tipo.
Selecione um campo e expanda a lista suspensa para ver os controles disponíveis para o tipo de dados.
Selecione o tipo de controle ao qual você deseja vincular.
Arraste o campo para um formulário. O controlo é adicionado ao formulário juntamente com um componente BindingSource e um componente BindingNavigator.
Repita as etapas 4 a 6 e vincule quaisquer outros campos.
Vincular o controle ao tipo composto retornado pelo serviço WCF
Para vincular um controle a um tipo composto retornado por um serviço WCF, execute estas etapas:
Selecione Data>Mostrar Fontes de Dados. A janela Fontes de dados é aberta.
Na janela Fontes de Dados, expanda o nó para a sua referência de serviço. Todos os tipos compostos retornados pelo serviço são exibidos.
Selecione um elemento de um tipo e expanda o menu suspenso para ver a lista de opções disponíveis.
Selecione DataGridView e exiba os dados em uma grade ou selecione Detalhes e exiba os dados usando controles individuais.
Arraste o nó para o formulário. Os controles são adicionados ao formulário junto com os componentes BindingSource e BindingNavigator.
Configurar serviços para reutilizar tipos existentes
Quando uma referência de serviço é adicionada a um projeto, todos os tipos definidos no serviço são gerados no projeto local. Em muitos casos, essa abordagem cria tipos duplicados quando um serviço usa tipos .NET comuns ou quando tipos são definidos em uma biblioteca compartilhada.
Para evitar esse problema, os tipos em assemblies referenciados são compartilhados por padrão. Se desejar desativar o compartilhamento de tipos para um ou mais assemblies, altere as configurações na caixa de diálogo Configurar referências de serviço.
Desabilitar o compartilhamento de tipos em um assembly
Pode desativar o compartilhamento de tipos num único assembly seguindo estas etapas:
No Gerenciador de Soluções, selecione a referência de serviço.
Selecione Project>Configure Service Reference.
Na caixa de diálogo Configurar Referências de Serviço, selecione a caixa de seleção Reutilizar tipos em especificados assemblies referenciados.
Marque a caixa de seleção para cada assembly onde você deseja habilitar o compartilhamento de tipos. Para desativar o compartilhamento de tipos para um assembly, deixe a caixa de seleção desmarcada.
Desativar o compartilhamento de tipos em todos os conjuntos
Você também pode desativar o compartilhamento de tipo em todos os conjuntos com os seguintes passos:
No Gerenciador de Soluções, selecione a referência de serviço.
Selecione Project>Configure Service Reference.
Na caixa de diálogo Configurar Referências de Serviço, desmarque a caixa de seleção Reutilizar tipos em assemblies referenciados.
Explore conceitos semelhantes
Os artigos a seguir descrevem conceitos e procedimentos relacionados aos serviços WCF e serviços de dados WCF.
| Título | Descrição |
|---|---|
| Passo a passo: Criar um serviço WCF básico no Windows Forms | Fornece uma demonstração passo a passo da criação e uso de serviços WCF no Visual Studio. |
| Passo a passo: Criar um serviço de dados WCF com WPF e Entity Framework | Fornece uma demonstração passo a passo de como criar e usar WCF Data Services no Visual Studio. |
| Usar as ferramentas de desenvolvimento do WCF | Descreve como criar e testar serviços WCF no Visual Studio. |
| Como: Adicionar, atualizar ou remover uma referência de serviço de dados WCF | Descreve como usar a caixa de diálogo Adicionar referência de serviço para procurar WCF Data Services na solução. |
| Solucionar problemas de referências de serviço | Apresenta alguns erros comuns que podem ocorrer com referências de serviço e como evitá-los. |
| Depurar serviços WCF | Descreve problemas comuns de depuração e técnicas que você pode encontrar ao depurar serviços WCF. |
| Passo a passo: Criar um aplicativo de dados de n camadas | Fornece instruções passo a passo para criar um conjunto de dados tipado e separar o TableAdapter e o código do conjunto de dados em vários projetos. |
| Revise a caixa de diálogo Configurar Referência de Serviço | Descreve os elementos da interface de utilizador do diálogo Configurar referência de serviço. |
Conteúdo relacionado
- Ferramentas para manipulação de dados do Visual Studio para .NET
- System.ServiceModel espaço de nomes
- System.Data.Services espaço de nomes