Ao desenvolver um novo projeto, usando asp.net tecnologia central, o projeto antigo pode ser um serviço WCF desenvolvido usando o .NET Framework 4, pois o custo de reconstrução é muito alto, sendo necessário usar asp.net núcleo para chamar a interface de serviço WCF.
Primeiro, crie dois novos projetos:
ASP.NET Projeto Core 3.1: dotnet-core-call-wcf Projeto .NET Framework 4 (aplicação de serviço WCF): schools-wcf-service
O Visual Studio 2019 quer criar um serviço WCF, mas não encontra o modelo, solução:
Selecione Instalar mais ferramentas e recursos para abrir o Instalador do Visual Studio. Selecione a aba Componentes Individuais, role para baixo até Atividades de Desenvolvimento, selecione Fundação de Comunicação do Windows e clique em Modificar.
O WCF cria duas interfaces da seguinte forma:
O código de implementação da interface é o seguinte:
Um contrato de serviço é uma coleção de operações de serviço relacionadas, e quando aplicamos um AtributoContratoServiço em uma interface, atribuímos a ele um atributo de contrato de serviço. No entanto, para tal tipo, seu idioma não se torna automaticamente uma operação de serviço contratual, e somente quando a funcionalidade OperationContractAttribute é aplicada o membro correspondente do método pode se tornar uma operação de serviço que pode ser acessada por chamada de serviço.
Quando você iniciar o projeto wcf, ele executará automaticamente o WcfTestClient e tentará chamá-lo, conforme mostrado na figura abaixo:
Use ASP.NET projetos centrais para chamar os serviços WCF
Clique com o botão direito em Serviços Conectados, selecione o serviço ao qual deseja adicionar uma conexão e selecione o serviço WCF, como mostrado na imagem a seguir:
Endereço de serviço preenchido: http://localhost:3705/Service1.svc
Possíveis erros:
Como é impossível escrever o endereço do serviço WCF até a morte, adicione o seguinte código ao arquivo appsettings.json:
Edite o arquivo Startup.cs e registre o serviço WCF com o seguinte código:
Chame o serviço wcf no controlador HomeControler, primeira injeção de construtor, o código é o seguinte:
Ligando para o serviço WCF:
Administre o site asp.net Core, o efeito é o que mostra abaixo:
Tentamos modificar o serviço WCF para que a interface retorne o resultado após 3 minutos, e então reiniciamos asp.net núcleo para chamar o serviço WCF, e o erro é o seguinte:
AggregateException: One or more errors occurred. (The request channel timed out attempting to send after 00:01:00. Increase the timeout value passed to the call to Request or increase the SendTimeout value on the Binding. The time allotted to this operation may have been a portion of a longer timeout.) Neste momento, precisamos modificar o timeout padrão, personalizar a vinculação BasicHttpBinding e reeditar o arquivo Startup.cs, conforme segue:
Código fonte para download:
Turistas, se quiserem ver o conteúdo oculto deste post, por favor Resposta
|