Supponiamo che qualcuno chiami un servizio Web su un server, che i dati rilevanti vengano recuperati in batch e che il messaggio venga trasmesso al client. Nel mezzo del messaggio si incontra qualche eccezione. Il mio attuale tipo di implementazione interrompe semplicemente il flusso del messaggio (in questo caso soap) e avvia lo streaming di un messaggio di errore, ma ovviamente il risultato non sarà un messaggio valido o un XML valido.
Ho preso in considerazione alcune opzioni, nessuna sembra avere molto senso:
- Metti tutti i dati rilevanti in memoria e poi trasmetti solo il messaggio stesso.
- Esegui un doppio prelievo, quindi verifica se funziona con un flusso falso e poi esegui il flusso reale.
- Scorrere prima su un disco e quindi utilizzare un flusso di input di file per eseguire lo streaming sul client
Poiché si tratta di un'implementazione per una piattaforma di applicazioni generiche, non so quanto saranno grandi i messaggi, ma ho sentito che le persone utilizzano i servizi Web nella nostra piattaforma di app con gigabyte di dati.
Come potete vedere, tutti hanno seri svantaggi in termini di consumo di memoria / disco, velocità / efficienza delle risorse o persino validità dei dati. Come potrei implementare al meglio la gestione degli errori in questa situazione? Devo solo scegliere la meno peggio di queste opzioni? Se è così, tendo a favorire la situazione attuale in cui il messaggio è invalido in casi come questi, perché almeno non influisce sul caso base in cui tutto va bene.