Domanda

Sto costruendo un'applicazione. Sto creando un client Silverlight 4 con l'aiuto di MVVM Light. Sto acquisendo dati da un servizio WCF. Almeno, questo è il piano.

Nel servizio WCF ho definito le "entità" che devo utilizzare nella mia applicazione. Quando nel client Silverlight aggiungo un riferimento al mio servizio WCF, Visual Studio ricrea sul lato client tutte le classi contrassegnate con l'attributo [DataContract] nel servizio.

Quello che vorrei sapere è se questa è una cattiva pratica e se fosse meglio creare i modelli all'interno del client. Per quanto ho capito, nel primo caso dovrei solo creare i ViewModels e le viste nel client Silverlight, mentre nel secondo caso dovrei creare viste, ViewModels e modelli all'interno del client Silverlight e popolare le istanze dei modelli con i modelli Valori provenienti dal servizio WCF.

Grazie per l'aiuto.

Saluti, G.

AGGIORNARE

Ok, non credo che la mia domanda sia stata abbastanza chiara perché non ho ricevuto molti feedback. Tuttavia, vorrei fornire un aggiornamento su questo. La risposta che stavo cercando è "NO! Oggetti di trasferimento dei dati!".

Stavo pensando di usare le mie classi di entità (quelle mappate sulle tabelle DB) come dataContract in un servizio WCF. L'aggiunta di un riferimento a questo servizio WCF in un client avrebbe creato anche tutte le classi decorate con DataContract sul client.

Il grosso problema nel mio caso è che il livello di dati si basa su Hibernate, che SoemTimes fa ampio uso in fase di esecuzione delle classi "Data Proxy" (vedi Proxy Castle). Bene, si è scoperto che esiste un problema di serializzazione con questi proxy di dati, e per quanto ho capito l'approccio migliore è adottare il modello di oggetti di trasferimento dei dati al fine di mappare le entità "complesse" su una classe simile ma "più leggera" (il dto).

Spero che questo possa aiutare qualcun altro.

Buona giornata! Gianluca.

È stato utile?

Soluzione

Hai guardato WCF Ria con Nhibernate? Per cercare di rispondere alla domanda però: non proverei a restituire le entità dal servizio WCF direttamente, creerei personalmente DTO. E poi probabilmente mappare quei DTO su una sorta di modello lato client. Quindi, è quello che proverei a fare se non fossi in grado di approfittare di Ria.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top