Pregunta

Estoy confundido sobre cómo debo devolver los errores a un cliente usando SOAP.

Tengo un servicio wcf, pero no estoy seguro de qué tecnología está utilizando el cliente, por lo que me gustaría cumplir con la especificación SOAP.

Por lo que he leído, los mensajes de error parecen ser la mejor manera de manejar esto.

Puedo ver que mi servicio tiene muchas fallas diferentes posibles:

  • Nulo \ errores de datos esperados
  • Errores de formato de datos (es decir: db solo permite 3 caracteres)
  • Errores de rango de datos " El cliente ya existe " ;, " No se puede procesar su solicitud " errores de tipo

¿Sería apropiado crear un nuevo objeto para cada una de esas fallas y lanzar como tal:

FaultException<NullFault>(nf);  
FaultException<InvalidDataFault>(idf);  
FaultException<ArguementFault>(af);  
FaultException<RangeFault>(rf);  

El cliente pasa objetos grandes con muchas propiedades a prácticamente todos los métodos (es decir, cliente, pedido, etc.).

¿Sería esta la forma correcta de manejar los errores y enviarlos de vuelta al cliente?

Parece fuera de lugar tener que agregar cada falla a los atributos sobre el método.

IE:

[OperationContract]  
[FaultContract(typeof(NullFault))]  
[FaultContract(typeof(InvalidDataFault))]  
[FaultContract(typeof(ArguementFault))]  
[FaultContract(typeof(RangeFault))]  
void CreateCustomer(Customer customer);  

Además, ¿qué pasa con un GenericFault? ¿Cómo manejaría los errores de las reglas de negocio? es decir: ¿El cliente ya existe, demasiadas líneas de pedido, no se envían a esa área, no se acepta el método de pago, etc.?

Avíseme si este método es adecuado o si hay otra solución aceptada y cómo manejaría la situación de la "regla comercial".

¿Fue útil?

Solución

Devolver una falla es la forma correcta de hacerlo en general, pero también debe preguntarse qué va a hacer el programa cliente con la información que devuelve en una falla. Si el cliente solo necesita saber que ocurrió una falla, entonces todo lo que necesita es una sola falla. Esa falla podría incluir un mensaje de texto que el cliente podría mostrar a su usuario.

Si el cliente necesita tomar medidas diferentes en función de si es un Fallo Nulo o un Fallo de Rango, entonces es cuando necesita fallas separadas. Pero si no hay diferencia entre uno y otro, ahorre tiempo a usted y a los programas del cliente y solo defina un solo error.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top