Remoting Dataset LENTO

mercoledì 09 novembre 2005 - 08.58

spyto Profilo | Newbie

Ciao a tutti,
ho un problema, ho tirato su un dataset in Host che vorrei passare ad un client, per fare questa operazione ho utilizzato il metodo Remoting.
Il problema è il trasferimento del Dataset in locale che avviene in quasi due minuti, quando invecie a tirlo su dall'HDD impiego 3 secondi.
Come posso risolvere questo problema??
Grazie.

Brainkiller Profilo | Guru

>Ciao a tutti,
>ho un problema, ho tirato su un dataset in Host che vorrei passare
>ad un client, per fare questa operazione ho utilizzato il metodo
>Remoting.
>Il problema è il trasferimento del Dataset in locale che avviene
>in quasi due minuti, quando invecie a tirlo su dall'HDD impiego
> 3 secondi.

Credo che ci sia un problema di Link. L'host e il tuo client come sono connessi ? Quando è la quantità di byte necessari per il trasferimento ossia quanto occupa su disco il tuo dataset ?

Ciao

David De Giacomi
Microsoft MVP
http://blogs.dotnethell.it/david/

spyto Profilo | Newbie

Ho fatto delle prove il Dataset (da 100.000 record) è caricato sul server pesa 100MB ho una linea da 100mb/s, nel momento in cui lo voglio passare al mio Client ci mette 1 minuto e mi occupa 140MB mi sembra troppo lento. :(
Come posso fare a consumare meno memoria e aumentare la velocità ??

Vi ringrazio a tutti, e scusate le mie sono domande sciocche ma sono un newbie di VB.net

Codice:
*************Client
Dim url As String = "tcp://localhost:50000/calculator.rem"

'RemotingConfiguration.RegisterWellKnownClientType(GetType(Calculator), url)

Dim calc As Calculator = DirectCast(RemotingServices.Connect( _
GetType(Calculator), url), Calculator)
'Dim calc As New Calculator

Dim result As Object = calc.oDatasetIcon.Copy
MsgBox(result.tables(0).rows.count, MsgBoxStyle.Information)

*************Server
Sub Main()

Console.WriteLine("Starting Server...")
'Crea e registra un canale sever TCP in ascolto sulla porta 50000
Dim channel As New TcpChannel(50000)
ChannelServices.RegisterChannel(channel)


'Crea e pubblica l'oggetto calcolatore
Dim calc As New Calculator
calc.Add(1, 2)
RemotingServices.Marshal(calc, "calculator.rem")

'Attendere finchè l'operatore termina il programma
Dim line As String
line = InputBox("per chiudere")
While line Is Nothing
line = InputBox("per chiudere")
End While
'Deregistra il canale
ChannelServices.UnregisterChannel(channel)
End Sub


Brainkiller Profilo | Guru

>Ho fatto delle prove il Dataset (da 100.000 record) è caricato
>sul server pesa 100MB ho una linea da 100mb/s, nel momento in
>cui lo voglio passare al mio Client ci mette 1 minuto e mi occupa
>140MB mi sembra troppo lento. :(

Ciao,
è abbastanza una pazzia creare un DataSet di 100 mila record. Un DataSet non è studiato per usare una mole così "enorme" di dati.

>Come posso fare a consumare meno memoria e aumentare la velocità
>??

Non ci sono molte soluzioni. Puoi provare ad elaborare 10 mila record alla volta invece di 100 mila. Oppure comprimere in qualche formato lo stream (per esempio con ZLib) prima di inviarlo tramite remoting. Oppure perfezionare la query ed inviare solo i dati che effettivamente ti servono. Non conosco lo scenario ma 100 mila mi sembrano tanti.

Oppure rifare completamente la soluzione approcciandola diversamente magari con file .TXT ed FTP, o DTS o altro.
Ciao

David De Giacomi
Microsoft MVP
http://blogs.dotnethell.it/david/

spyto Profilo | Newbie

Grazie,
sono arrivato alla soluzione proponendo un approccio diverso, ovvero caricare quello che mi serve dal DataSet e far passare 20 record per volta, modello paginazione weeb. L'utente scorre con le frecce e trova le informazioni tramite i filtri.

Scusate le domande sciocche ma il mio capo sa programmare in C# e non capisce quasi niente del .net e qualche volta arrivano delle richieste strane.

Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2023
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5