22 messaggi dal 19 dicembre 2002
Salve a tutti,
io vorrei sviluppare un WebService che mi aggiorni (a partire da una applicazione Win client) un database prodotti residente su Web (..fin qui niente di nuovo...).
Non vorrei però farmi restituire da Web l'intera tabella per poi aggiornarla e risalvarla su Web (è enorme ci sono più di 80000 record) poichè penso che sia pessimo dal punto di vista delle performance (e poi mi fa traffico sulla linea... e io pago..):

Questo è quello che faccio adesso:
.............
Dim MyService As New localhost.Service1
dg.DataSource = MyService.GetProdotti()
dg.DataMember = "Cust"
.......
e per salvarla faccio:
....
Dim dsMod As DataSet = dg.DataSource
Dim dsChanges As DataSet = dsMod.GetChanges()
Dim ds As New DataSet("dsProdotti")
ds.Merge(MyService.UpdateProdotti(dsMod), True)
.....

dove GetProdotti è:
<WebMethod()> Public Function GetProdotti() As DataSet
Dim con As New SqlConnection("Server=SERVERWEB;uid=xx;pwd=yyyy;database=zzzzzzzz")
Dim daCust As New SqlDataAdapter("Select * From Prodotti", con)
Dim ds As New DataSet
daCust.Fill(ds, "Prod")
Return ds
End Function

e la funzione per salvare i dati del WebService è:

<WebMethod()> Public Function UpdateProdotti(ByVal ds As DataSet) As DataSet
Dim con As New SqlConnection("Server=SERVERWEB;uid=xx;pwd=yyyy;database=zzzzzzz")
Dim daCust As New SqlDataAdapter("Select * From Prodotti", con)
Dim cbCust As New SqlCommandBuilder(daCust)
daCust.Update(ds, "Cust")
con.Close()
Return ds
End Function

Come vi dicevo, il tutto funziona perfettamente, ma non esiste un sistema migliore in cui io possa spedire su Web solo i record modificati (inseriti, cancellati o modificati) senza prima farmi restituire l'intera tabellona da Web? In questo modo farei viaggiare sulla linea solo i dati modificati dal Client (che sono molti molti meno).

Spero di essere stato abbastanza chiaro.

Attendo "con ansia" qualsiasi tipo di risposta/proposta per migliorare questo codice.

Ciao a tutti.

Fulvio .NET is on the air
642 messaggi dal 25 luglio 2003
Aggiungi un campo dove c'é la data dell'ultima dodifica del record alla tabella, poi crea una vista e invecie di fare la select sulla tabella la fai sulla vista che magari ha la condizione che se il campo aggiornato è uguale a 1 allora lo legge altrimenti no, oppure se il campo aggiornato è uguale o maggiore alla data di oggi meno un'ora allora lo legge oppure no ;)

P.S. Usi SQL Server vero?!
22 messaggi dal 19 dicembre 2002
Ok Bronzo,
grazie per la risposta.
Se ho capito bene mi suggerisci di gestirmi le modifiche in maniera "logica", cioè costruirmi una struttura che tenga conto delle date di ultima modifica dei record per ridurre il numero record recuperati/spediti da Web.

L'idea potrebbe funzionare ma quindi secondo vio non esiste la possibilità di aggiornare/inserire/modificare dei record in un dataset su un database Web senza farselo restituire prima dal WebService?
Mi sembra strano che non esiste questa possibilità.....

Cmq uso SQL Server 2000.


Fulvio .NET is on the air
642 messaggi dal 25 luglio 2003
Quello che ti so dire è che ti puoi costruire la vista in SQL SERVER, quindi non crei una vera e propria struttura, ma imposti una select che viene effettuata dal server e che tu leggi come se fosse una tabella!

Spero di essere stato semplice e concreto nel mio piccolo
642 messaggi dal 25 luglio 2003
Se no, puoi costrure una struttura che salva i dati su lato client (Cookies) e poi quando voglio modificarli, non fai altro che far partire un UPDATE con i dati da cambiare e la chiave primaria dell'elemento e della tabella! Ma mi sembra un po' lunga come cosa, ma chiedi meglio agli altri, sapranno di sicuro darti risposte migliori delle mie!
Modificato da Bronzo il 04 dicembre 2003 16.06 -
22 messaggi dal 19 dicembre 2002
Grazie mille Bronzo per i tuoi suggerimneti ma a questo punto rimane valida la mia domanda:
Esiste la possibilità di aggiornare/inserire/modificare dei record in un dataset su un database Web senza farselo restituire prima dal WebService, ma spedendo solo un dataset con dei record da modificare???

Se qualcuno conosce la risposta batta un colpo.

Fulvio .NET is on the air

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.