Ho appena scoperto una cosa che mi ha lasciato di stucco. Il DataContractSerializer utilizzato di default da WCF non supporta gli XMLAttribute, ma solo gli XMLElement.
Quindi un poveretto come me che deve leggere tramite Biztalk un messaggio XML con attributi da un sistema Java e girarlo a WCF (e viceversa) si trova costretto ad usare il mapping di Biztalk per passare da uno schema con attributi ad uno senza oppure switchare dal DataContractSerializer all'XMLSerializer nel servizio WCF con tutto ciò che ne deriva:
- Modifica totale del funzionamento
- Definizione esplicita di cosa serializzare e cosa no (XMLIgnore), perchè il buon XMLSerializer serializza di default tutte le proprietà public
- Definizione esplicita degli XMLArray, degli enum
- Mancanza di supporto per IList (vedi http://www.pluralsight.com/blogs/craig/archive/2005/10/21/15770.aspx e peggio il fatto che MS dica che il DataContractSerializer li supporta, mentre XMLSerializer non lo farà mai)
Qui un articolo utile sull'uso dell'XMLSerialzier con WCF: http://msdn2.microsoft.com/en-us/library/ms733901.aspx
A questo mi chiedo: come mai WCF che va a sostituire le "vecchie" tecnologie (.NET Remoting, ASMX, WSE, etc.) e si pone come standard futuro per le comunicazione e l'interoperabilità non supporta una cosa di base come gli attributi XML ?