Domanda

Quando codifichi i servizi web, come strutturi i valori restituiti?Come gestite le condizioni di errore (previste e impreviste)?Se stai restituendo qualcosa di semplice come un int, lo restituisci semplicemente o lo incorpori in un oggetto più complesso?Tutti i metodi Web all'interno di un servizio restituiscono un'istanza di una singola classe o crei una classe del valore di ritorno personalizzata per ciascun metodo?

È stato utile?

Soluzione

Mi piace il modello di oggetto Richiesta/Risposta, in cui incapsulate i vostri argomenti in una singola classe [Operazione]Richiesta, che ha semplici proprietà pubbliche su di essa.

Qualcosa come AddCustomerRequest, che restituirebbe AddCustomerResponse.

La risposta può includere informazioni sul successo/fallimento dell'operazione, eventuali messaggi che potrebbero essere utilizzati dall'interfaccia utente, eventualmente l'ID del cliente che è stato aggiunto, ad esempio.

Un altro buon modello è far sì che tutti questi derivino da una semplice interfaccia IMessage, in cui il punto finale generale è qualcosa come Process(params IMessage[] message)...in questo modo puoi passare più operazioni nella stessa richiesta web.

Altri suggerimenti

+1 per la risposta di Ben.

Inoltre, suggerisco di considerare che la risposta generica consenta più elementi di errore/avviso, per consentire alla risposta di essere quanto più completa e utilizzabile possibile.(Vorresti utilizzare un compilatore che si fermasse dopo il primo messaggio di errore o uno che ti dicesse il più possibile?)

Se stai utilizzando i servizi Web SOAP, allora Difetti SOAP sono il modo standard per restituire i dettagli dell'errore, in cui i messaggi di errore possono restituire qualsiasi dettaglio aggiuntivo desiderato.

Gli errori Soap sono una pratica standard in cui l'applicazione chiamante è un client Soap.Esistono casi, come un client COM che utilizza XMLHTTP, in cui Soap viene analizzato come XML e gli errori Soap non possono essere gestiti facilmente.Non posso ancora votare, ma un altro +1 per @Ben Scheirman.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top