Logo UGIdotNET

Discussione 'Problema di serializzazione di un oggetto XmlSchema...'

# Pubblicato il 12 dic 2002 15.20 - Rispondi
Fabio Parise
Problema di serializzazione di un oggetto XmlSchema...
Ciao a tutti, ho il seguente problema:
Ho un metodo di un'applicazione COM+ di tipo Server che ritorna un oggetto di tipo XmlSchema.
La chiamata mi da a runtime la seguente eccezione.

An unhandled exception of type 'System.Runtime.Serialization.SerializationException' occurred in system.enterpriseservices.dll

Additional information: The type System.Xml.Schema.XmlSchema in Assembly System.Xml, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 is not marked as serializable.

Qualcuno ha un idea di come posso risolvere questo problema?
Grazie, Fabio
# Pubblicato il 13 dic 2002 11.06 - Rispondi
Andrea Bini [MS]
Re: Problema di serializzazione di un oggetto XmlSchema...
Quando fai una chiamata da un cliente .NET verso un ServicedComponent contenuto in una applicazione COM+ di tipo server, nonostante il protocollo utilizzato sia DCOM, in realtà quasi sempre viene usato remoting per trasformare la chiamata in un IMessage, il quale viene serializzato in una stringa ed inviato al server.
Questo significa che tutti i parametri del metodo devono essere di tipi "remotizzabili" (serializzabili o MarshalByRef), e purtroppo XmlSchema non è serializzabile.
Nel tuo caso mi sa che l'unica soluzione è salvarsi l'XmlSchema in una stringa e passare la stringa, oppure farti una classe wrapper serializzabile

Andrea Bini [MS]
Il presente posting viene fornito “così come é”, senza garanzie, e non conferisce alcun diritto
# Pubblicato il 13 dic 2002 11.32 - Rispondi
Fabio Parise
Re: Problema di serializzazione di un oggetto XmlSchema...
Ok. Grazie mille.
Non riesco comunque a comprendere il motivo per cui alcune classi banalmente serializzabili come XmlDocument o XmlSchema non siano serializzabili dal framework al pari di quanto avviene per la maggiorparte delle altre classi del FWK.
# Pubblicato il 13 dic 2002 12.05 - Rispondi
Andrea Bini [MS]
Re: Problema di serializzazione di un oggetto XmlSchema...
Mi sono informato sull'argomento.
Il motivo per cui XmlDocument & XmlSchema non hanno l'attributo [Serializable] è che l'implementazione di default del serializzatore produceva documenti serializzati molto più grandi di quelli originali (ad esempio, a fronte di un documento xml di 40 bytes, l'immagine serializzata era più di 100K!!!). Il motivo sta nel fatto che il parser xml è ottimizzato per l'accesso ai nodi in memoria, a scapito dell'occupazione di memoria del documento parsato.
Si sarebbe anche potuto decidere di fornire un'implementazione custom di ISerializable, ma trattandosi di documenti XML, che sono già una specie di formato di serializzazione, si è pensato che non fosse necessario.
Segnalo comunque al gruppo di sviluppo l'effetto collaterale che hai incontrato (magari per la versione 2.0 di .NET cambiano qualcosa...)

Andrea Bini [MS]
Il presente posting viene fornito “così come é”, senza garanzie, e non conferisce alcun diritto

© 2001 User Group Italiano UGIdotNET. Tutti i diritti riservati. Note legali. - Partita IVA 01927050185