Contesto:
Ho un servizio web che si occupa di oggetti richiesta / risposta. Esistono schemi rigidi, definiti esternamente, che limitano sia la struttura che il contenuto di entrambe le richieste e le risposte. Devo convalidare tutte le richieste non appena vengono ricevute e tutte le risposte prima che vengano rispedite (sul servizio web fine del filo).
Non voglio replicare le regole di convalida nel codice, quindi convaliderò gli oggetti di richiesta / risposta serializzati (XML), probabilmente usando XmlReader come punto di partenza (per la velocità). Sarà oggetto a 1 via - > Metodo di convalida XML che urla se la validazione fallisce, altrimenti l'oggetto originale sarà usato per il lavoro effettivo.
Sto usando WCF, ma con XMLSerializer poiché gli schemi sono complessi e ho bisogno del supporto XSD aggiuntivo.
Domanda:
1) C'è un modo per evitare la serializzazione degli oggetti mentre colpiscono la mia estremità del filo? Idealmente mi piacerebbe arrivare all'XML prima che sia de-serializzato prima di entrare, e dopo che è serializzato, prima che vada, in uscita.
Sono a conoscenza delle annotazioni [OnSerializing] e [OnSerialized], ma non funzioneranno con XMLSerializer. Non penso che dovrei scrivere ReadXml () e WriteXml () usando IXmlSerializable - gli schemi sono complessi e soggetti a modifiche.
2) Dato che i documenti XML sono piuttosto piccoli (122kb sembra essere il massimo nel set di dati di esempio che ho) ho ragione nel sostenere che il successo delle prestazioni di ri-serializzazione sarà trascurabile?
3) Qualche idea migliore?