RESOLVIDO – Artigo sobre WCF Web Services, Retornando uma String de Erro/Exceção com C#, AngularJS, Serviços Web, WCF e Manipulação de Erros
Introdução
No desenvolvimento de aplicativos e sistemas distribuídos, é comum o uso de serviços web para comunicação entre diferentes componentes. Um dos frameworks populares para a implementação de serviços web é o Windows Communication Foundation (WCF), que permite a criação e a exposição de serviços web interoperáveis. Neste artigo, abordaremos a implementação de um serviço WCF que retorna uma string de erro ou exceção, explorando as técnicas de manipulação de erros tanto no lado do servidor (C#) quanto no lado do cliente (AngularJS).
Visão geral do WCF
O Windows Communication Foundation (WCF) é um framework da plataforma .NET para construção de serviços web seguros e interoperáveis. Ele oferece suporte a diversos protocolos de comunicação, como HTTP, TCP e MSMQ, além de fornecer recursos avançados de segurança e controle de transações.
Implementação do serviço WCF
Vamos considerar um cenário em que desejamos criar um serviço WCF simples que retorna uma string de erro ou exceção, dependendo de um determinado critério. A implementação do serviço pode ser feita usando a linguagem de programação C#.
Criação do projeto WCF
Inicie criando um novo projeto no Visual Studio e selecione o tipo de projeto “WCF Service Application”. Esse tipo de projeto configurará automaticamente os elementos necessários para um serviço WCF.
Definição do contrato do serviço
No projeto recém-criado, você encontrará um arquivo chamado “IService1.cs”. Abra esse arquivo e defina o contrato do serviço, que é uma interface contendo as operações que serão disponibilizadas pelo serviço.
csharp
Copy code
[ServiceContract]
public interface IService1
{
[OperationContract]
string GetErrorMessage(int errorCode);
}
Implementação do serviço
Agora, abra o arquivo “Service1.svc.cs” e implemente a lógica do serviço.
csharp
Copy code
public class Service1 : IService1
{
public string GetErrorMessage(int errorCode)
{
if (errorCode == 0)
{
throw new FaultException(“Erro personalizado: código de erro inválido.”);
}
else
{
return $”Erro genérico: código de erro {errorCode}”;
}
}
}
Configuração do serviço
Ainda no projeto, abra o arquivo “Web.config” e configure o serviço.
xml
Copy code
<system.serviceModel>
<services>
<service name=”NomeDoProjeto.Service1″>
<endpoint address=”” binding=”basicHttpBinding” contract=”NomeDoProjeto.IService1″/>
<endpoint address=”mex” binding=”mexHttpBinding” contract=”IMetadataExchange”/>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior>
<serviceMetadata httpGetEnabled=”true”/>
<serviceDebug includeExceptionDetailInFaults=”false”/>
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
Implantação do serviço
Agora que o serviço está implementado, você pode implantá-lo em um servidor IIS ou executá-lo localmente para testes.
Consumindo o serviço com AngularJS
Com o serviço WCF devidamente implementado, podemos criar um cliente AngularJS para consumi-lo e manipular os erros retornados.
Configuração do serviço
No arquivo “app.js” do seu projeto AngularJS, configure o serviço para consumir o serviço WCF.
javascript
Copy code
app.factory(‘MyService’, [‘$http’, function($http) {
return {
getErrorMessage: function(errorCode) {
return $http.get(‘http://localhost:port/Service1.svc/GetErrorMessage/’ + errorCode);
}
};
}]);
Manipulação de erros
Em um controlador AngularJS, injete o serviço e implemente a manipulação de erros.
javascript
Copy code
app.controller(‘MainController’, [‘$scope’, ‘MyService’, function($scope, MyService) {
$scope.error = ”;
$scope.handleError = function(errorCode) {
MyService.getErrorMessage(errorCode)
.then(function(response) {
$scope.error = response.data;
})
.catch(function(error) {
$scope.error = ‘Erro ao recuperar a mensagem de erro.’;
console.log(error);
});
};
}]);
Conclusão
Neste artigo, abordamos a implementação de um serviço WCF que retorna uma string de erro ou exceção. Exploramos a criação do serviço WCF em C# e a manipulação de erros no lado do cliente usando AngularJS. Com as técnicas apresentadas, você pode desenvolver sistemas distribuídos robustos, lidando eficientemente com erros e exceções ao longo da comunicação entre componentes.