Come implementare la gestione degli errori / il ritorno durante lo streaming di un messaggio

2

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.

    
posta Sebastiaan van den Broek 18.01.2015 - 17:34
fonte

2 risposte

2

Se ho capito, devi applicare la business logic mentre esegui il downflow della risposta, quindi potresti ricevere un errore, che deve essere inoltrato al client.

In questo scenario, mentre stai componendo l'xml della risposta "al volo", puoi aggiungere alla fine della busta SOAP alcuni campi che indicano al client se la risposta era corretta & & completa.

In caso di errore, puoi completare il campo corrente (in modo che la busta sia ben formata) e aggiungere i campi di errore alla fine della risposta.

    
risposta data 19.01.2015 - 13:16
fonte
0

Che ne dici di lanciare un'eccezione SOAP dal lato server e gestirla sul lato client? Questo è un modo standard per gestire gli errori del sapone.

    
risposta data 19.01.2015 - 05:27
fonte

Leggi altre domande sui tag