Al codificar servicios web, ¿cómo se estructuran los valores devueltos? ¿Cómo manejas las condiciones de error (esperadas e inesperadas)? Si devuelve algo simple como un int, ¿lo devuelve o lo inserta en un objeto más complejo? ¿Todos los métodos web de un servicio devuelven una instancia de una sola clase o crea una clase de valor devuelto personalizada para cada método?¿Cuál es un buen patrón de diseño para los valores de retorno del método web?
Respuesta
Me gusta el patrón de objeto Solicitud/Respuesta, donde encapsula sus argumentos en una sola clase de Solicitud [Operación], que tiene propiedades públicas simples en ella.
Algo así como AddCustomerRequest, que devolvería AddCustomerResponse.
La respuesta puede incluir información sobre el éxito/error de la operación, cualquier mensaje que pueda ser utilizado por la interfaz de usuario, posiblemente el ID del cliente que se agregó, por ejemplo.
Otro buen patrón es hacer que todos estos se deriven de una simple interfaz de IMessage, donde su punto final general es algo así como Proceso (params IMessage [] mensajes) ... de esta manera puede pasar en múltiples operaciones en el mismo solicitud web
+1 por la respuesta de Ben.
Además, sugiero considerar que la respuesta genérica permite múltiples elementos de error/advertencia, para permitir que la respuesta sea lo más comprensible y procesable posible. (¿Le gustaría usar un compilador que se detuvo después del primer mensaje de error, o uno que le dijo tanto como sea posible?)
Si está utilizando servicios web SOAP, entonces SOAP faults son la forma estándar de devolver los detalles del error, donde los mensajes de falla pueden devolver cualquier detalle adicional que desee.
Las fallas de jabón son una práctica estándar donde la aplicación que llama es un cliente de Soap. Hay casos, como un cliente COM que usa XMLHTTP, donde el Soap se analiza como XML y las fallas de Soap no se pueden manejar fácilmente. Todavía no puedo votar, pero otro +1 para @Ben Scheirman.
- 1. ¿cuál es un buen patrón para convertir entidades de hibernación y objetos de transferencia de datos?
- 2. fábrica patrón de diseño método
- 3. ¿Cuál es un buen patrón para almacenar implementaciones de una interfaz y recuperar implementaciones específicas?
- 4. ¿Es este un patrón de diseño común? "Patrón de descriptor"?
- 5. ¿Cuál es un buen tamaño de método promedio?
- 6. ¿El patrón de diseño del prototipo es realmente justo?
- 7. Método de sobrecarga de los valores de retorno
- 8. ¿Cuál es un buen patrón de diseño en C# para las clases que necesitan hacer referencia a otras clases?
- 9. ¿Es este un patrón de diseño?
- 10. ¿Cuál es un buen patrón para escribir pruebas unitarias dentro de un cuaderno de Mathematica?
- 11. ¿Qué es un buen patrón de diseño para almacenar la información de último inicio de sesión del usuario?
- 12. ¿Es un buen diseño para devolver el valor por parámetro?
- 13. unidad de prueba del patrón de diseño método plantilla
- 14. Frustraciones del patrón de diseño
- 15. Cuál es el patrón de diseño para procesar los argumentos de línea de comando
- 16. ¿Cuál será un buen método minimalista de herencia de Javascript?
- 17. ¿Puede el método OnPostExcecute en los valores de RETORNO AsyncTask?
- 18. ¿Hay un patrón de diseño para esto?
- 19. ¿Cómo es MapReduce un buen método para analizar los registros del servidor http?
- 20. ¿Cuál es la mejor manera, utilizando el patrón de diseño "estatal", para cambiar los estados?
- 21. ¿Es el patrón DTO plus UnitOfWork un buen enfoque para diseñar un DAL para una aplicación web?
- 22. Diseño de patrón para hacer un ensamblador
- 23. ¿Cuál es un buen ejemplo de un método __eq__ para una clase de colección?
- 24. ¿Patrón de diseño para validar la entrada?
- 25. Un patrón de diseño para constructores
- 26. ¿Cuál es un buen método para manejar flujos de E/S de red basados en línea?
- 27. ¿Cuál es un buen método para evitar que un usuario envíe un formulario dos veces?
- 28. ¿Patrón de diseño más limpio para mostrar los datos del formulario y los errores de validación?
- 29. ¿Algún buen diseño de CSS para desarrolladores web no artísticos?
- 30. ¿Cuál es un buen enfoque para estudiar OpenGL es 2.0?