Ferramenta WCF dotnet-svcutil para .NET Core
A ferramenta dotnet-svcutil do Windows Communication Foundation (WCF) é uma ferramenta .NET que recupera metadados de um serviço Web em um local de rede ou de um arquivo WSDL e gera uma classe WCF contendo métodos de proxy de cliente que acessam as operações do serviço Web.
Semelhante à ferramenta Service Model Metadata - svcutil para projetos do .NET Framework, o dotnet-svcutil é uma ferramenta de linha de comando para gerar uma referência de serviço Web compatível com projetos .NET Core e .NET Standard.
A ferramenta dotnet-svcutil é uma opção alternativa ao provedor de serviços conectados WCF Web Service Reference Visual Studio que foi fornecido pela primeira vez com o Visual Studio 2017 versão 15.5. A ferramenta dotnet-svcutil como uma ferramenta .NET, está disponível multiplataforma no Linux, macOS e Windows.
Importante
Você só deve fazer referência a serviços de uma fonte confiável. Adicionar referências de uma fonte não confiável pode comprometer a segurança.
Pré-requisitos
- SDK do .NET Core 2.1 ou versões posteriores
- Seu editor de código favorito
Introdução
O exemplo a seguir orienta você pelas etapas necessárias para adicionar uma referência de serviço Web a um projeto Web .NET Core e invocar o serviço. Você criará um aplicativo Web .NET Core chamado HelloSvcutil e adicionará uma referência a um serviço Web que implemente o seguinte contrato:
[ServiceContract]
public interface ISayHello
{
[OperationContract]
string Hello(string name);
}
Neste exemplo, vamos supor que o serviço Web será hospedado no seguinte endereço: http://contoso.com/SayHello.svc
Em uma janela de comando do Windows, macOS ou Linux, execute as seguintes etapas:
Crie um diretório chamado HelloSvcutil para seu projeto e torne-o seu diretório atual, como no exemplo a seguir:
mkdir HelloSvcutil cd HelloSvcutil
Crie um novo projeto Web C# nesse diretório usando o
dotnet new
comando da seguinte maneira:dotnet new web
Instale o
dotnet-svcutil
pacote NuGet como uma ferramenta CLI:dotnet tool install --global dotnet-svcutil
Execute o comando dotnet-svcutil para gerar o arquivo de referência do serviço Web da seguinte maneira:
dotnet-svcutil http://contoso.com/SayHello.svc
O arquivo gerado é salvo como HelloSvcutil/ServiceReference/Reference.cs. A ferramenta dotnet-svcutil também adiciona ao projeto os pacotes WCF apropriados exigidos pelo código proxy como referências de pacote.
Usando a referência de serviço
Restaure os pacotes WCF usando o
dotnet restore
comando da seguinte maneira:dotnet restore
Encontre o nome da classe do cliente e da operação que você deseja usar.
Reference.cs
conterá uma classe que herda deSystem.ServiceModel.ClientBase
, com métodos que podem ser usados para chamar operações no serviço. Neste exemplo, você deseja chamar a operação Hello do serviço SayHello.ServiceReference.SayHelloClient
é o nome da classe cliente e tem um método chamadoHelloAsync
que pode ser usado para chamar a operação.Abra o
Startup.cs
arquivo no editor e adicione umausing
diretiva para o namespace de referência de serviço na parte superior:using ServiceReference;
Edite o
Configure
método para invocar o serviço Web. Para fazer isso, crie uma instância da classe que herda e chame o método no objeto clienteClientBase
:public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } app.Run(async (context) => { var client = new SayHelloClient(); var response = await client.HelloAsync(); await context.Response.WriteAsync(response); }); }
Execute o aplicativo usando o
dotnet run
comando da seguinte maneira:dotnet run
Navegue até o URL listado no console (por exemplo,
http://localhost:5000
) no navegador da Web.
Você deve ver a seguinte saída: "Olá dotnet-svcutil!"
Para obter uma descrição detalhada dos parâmetros da dotnet-svcutil
ferramenta, invoque a ferramenta que passa o parâmetro help da seguinte maneira:
dotnet-svcutil --help
Feedback e perguntas
Se você tiver alguma dúvida ou feedback, abra um problema no GitHub. Você também pode revisar quaisquer perguntas ou problemas existentes no repositório WCF no GitHub.
Notas de versão
- Consulte as Notas de versão para obter informações atualizadas sobre a versão, incluindo problemas conhecidos.