2 messaggi dal 25 settembre 2003
Ciao Cristian,
complimenti anche per questo articolo.
Una domanda: ma se volessi serializzare bidirezionalmente linq to sql come dovrei fare?

Saluti
Andrea
In che senso bidirezionale? Vuoi che ti restituisca IQueryable? Con questo scriipt ti restituisce il risultato. Non ha molto senso restituire una query ancora da eseguire. O forse non ho capito la domanda

Ciao

Il mio blog
Homepage
2 messaggi dal 25 settembre 2003
Mi spiego meglio, come ti ho accennato di persona al Real Code Day a Firenze, stiamo realizzando la nuova versione di un applicativo esistente in VB6. La caratteristica fondamentale di questo programma è che deve funzionare sia su rete geografica in modalità on-line, sia in modalità disconessa. Non sto a dilungarmi sulle problematiche di sincronizzazione, che per altro abbiamo già risolto. Il vecchio software per poter funzionare necessitava di avere l'accesso diretto a SQL Server tramite internet o tramite una VPN, ovviamente questo non è accettabile, per cui nella nuova versione dot.net volevamo superare questo problema.
Per ridurre al minimo i tempi di sviluppo, per semplificare la struttura del client e per ridurre l'impatto degli aggiornamenti, la business logic è "cablata" nel programma. Per quanto il Data Access Layer è stato scelto di utilizzare direttamente le classi Linq.
Dal punto di vista puramente teorico non è sicuramente la soluzione ottimale, ma è, per noi, un buon compromesso.

I problemi che ho sono due:
-Utilizzando un webservice sono in grado di leggere e caricare i dati in una classe linq2sql, ma se modifico i record come posso poi riflettere queste modifiche sul DB?
-Utilizzando un webservice classico ho un decadimento notevole delle prestazioni, per la maggiore quantità di dati trasferiti tra server e client su internet, causato dalla differenza dei dati trasmessi nel caso di comunicazione binaria diretta con SQL Server rispetto alla comunicazione tramite XML del webservice. Qual'è secondo te il sistema più veloce per ridurre al minimo questo problema? E' pensabile comprimere i flussi dati?

Vista la tua competenza in materia, ogni consiglio sarà più che gradito.

Saluti
A.V.
Modificato da absolute il 08 dicembre 2009 08.33 -
Bella domanda. Partiamo dalla fine  Per ottimizzare il flusso di dati si può cambiare il serializzatore. Per esempio guarda questo script http://www.winfxitalia.com/script/57/Ottimizzare-Trasferimento-Dati-Binari-WCF.aspx. Nel tuo caso meglio però se usi il binaryMessageEncoding che serializza tutto in binario http://msdn.microsoft.com/en-us/library/ms731802.aspx. Occhio che poi avrai problemi di message quota. In questa pagina si parla per bene di queste problematiche http://msdn.microsoft.com/en-us/library/ms733742.aspx

Per il primo punto, quello che tu cerchi è un sistema di tracking client che rifletta le modifiche però tramite servizio WCF. Non c'è niente se non gli ADO.NET Data Services che appunto offrono un context che traccia le modifiche che fai e le invia con GET/POST al server. Sul nostro sito ne abbiamo parlato un po' http://www.aspitalia.com/ricerca/super.aspx?key=ado.net+data+services. In base alla mia esperienza però ti dico di provarlo un po', soprattutto di valutare quando hai delle relazioni o grosse quantità di dati. E' un po' macchinoso (scordati la semplicità di EF) ed è limitato nelle query.

Altrimenti ci sono i WCF Ria Services che offrono un bel approccio più di Domain ma attualmente sono pensati per essere consumati da SL e non da applicazioni WPF.

Insomma, non c'è ancora quello che cerchi. Il più vicino sono gli ADO.NET Data Services. L'esempio di questo script permette solo di rendere più intelligente la query che si fa al servizio.

Ciao

Il mio blog
Homepage

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.