Un servizio Web che utilizzo utilizza XSD per descrivere la sua API. Di recente, hanno aggiunto un campo a un messaggio di risposta in cui non era presente xsd:any
, quindi, quando il nostro validatore dello schema ha provato a convalidare rispetto al precedente xsd, non è riuscito. Abbiamo considerato questa incompatibilità a ritroso e aperto un ticket.
Il loro architetto ha risposto che dovremmo convalidare i nostri messaggi in uscita (richieste), ma non preoccuparci di convalidare le risposte. Dovremmo scegliere i campi che vogliamo nelle risposte e ignorare il resto. Ha anche detto che dovremmo impostare il nostro validatore di schemi per ignorare i "nuovi" campi e convalidare il resto.
Se esiste una tale impostazione per alcuni validatori di schemi, allora forse questo architetto non ha torto, ma d'altra parte se la mia applicazione si rompe perché un campo di cui non ho bisogno di preoccuparmi di cambiare (o di essere creato) non lo fa che indicano una violazione del principio di segregazione dell'interfaccia ? È davvero accettabile per me convalidare i singoli campi dell'oggetto frammentario invece di aspettarsi che sia tutto o niente corretto?
Mi rendo conto che non convalidare i dati in arrivo da un servizio esterno ha implicazioni di sicurezza, ma in questa domanda sto cercando di conoscere i principi architettonici più degli aspetti di sicurezza.