Pergunta

Quando a codificação de serviços da web, como você estrutura o seu devolução de valores?Como você lida com condições de erro (esperadas e inesperadas)?Se você estiver retornando algo simples como um int, você só devolvê-lo ou incorporá-lo em um mais complexo do objeto?Faço todos os métodos da web dentro de um serviço de retornar uma instância de uma classe única, ou você criar um valor de retorno personalizado classe para cada método?

Foi útil?

Solução

Eu gosto de Solicitação/Resposta padrão de objeto, onde você encapsular seus argumentos em uma única [Operação]Solicitação de classe, que é de simples propriedades públicas sobre ele.

Algo como AddCustomerRequest, que deve retornar AddCustomerResponse.

A resposta pode incluir informações sobre o sucesso/insucesso da operação, todas as mensagens que podem ser usados pela INTERFACE de utilizador, possivelmente, a IDENTIFICAÇÃO do cliente que foi adicionado, por exemplo.

Outro bom padrão é fazer com que todas elas derivam de uma simples interface de IMessage, onde o ponto final é algo como Processo(params IMessage[] mensagens)...desta forma, você pode passar várias operações na mesma solicitação da web.

Outras dicas

+1 para o Ben resposta.

Além disso, eu sugiro considerando que o genérico de resposta permitem que vários de erro/aviso itens, para permitir que a resposta seja tão abrangentes e úteis possível.(Você gostaria de usar um compilador que parou após a primeira mensagem de erro, ou uma que disse a você o máximo possível?)

Se você estiver usando serviços web SOAP, em seguida, Falhas SOAP são a forma padrão para retornar detalhes do erro, onde as mensagens de falha pode retornar qualquer detalhe adicional que você gosta.

Sabão falhas são um padrão da prática, onde o aplicativo de chamada é um cliente Soap.Há casos, como o de um cliente COM a utilização XMLHTTP, onde o Sabonete é analisada como XML e Soap falhas não podem ser facilmente manipulados.Não pode votar ainda, mas outro +1 para @Ben Scheirman.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top