We currently have a Smart Client
VB.NET (framework 1.1) application
that uses a Web Service to communicate with a .NET assembly on the
server. The data is stored in SQL. The users have a shortcut to the
EXE (located on the server) through an http URL. I understand that on
the first access of the EXE, the components will be downloaded to the
client. On subsequent hits, the version of the assemblies on the
server will be compared to the version of the assemblies on the
client. If the version differs, then the components are downloaded.
As a result, the first hit the load of the application will take
longer because the components are downloaded; however, subsequent
loads should be very quick. Through testing, we have found that the
subsequent loads (where the version has NOT changed and files should
not be downloaded), 1 MB of data is being transferred from the server
to the client. How is this possible?? I would expect very little data
to be moved because the components already exist on the client.
Furthermore, we are struggling with the amount of data that is
transferred whenever data is retrieved from the DB. Here is an
example of our architecture and how much data we retrieve and how much
data is being passed across the network:
Scenario: On the load of a form. The client makes three calls to the
WebService to retrieve data:
The Client calls webService.Function1 (byref dsData as DataSet). The
function returns a dataset with three data tables
dataTable1 - 19 columns 1 row
datatable2 - 8 columns 34 rows
datatable3 - 3 columns 34 rows
Client calls webService.Function2 (byref dsData as DataSet). The
function returns a dataset with 1 data table
Datatable1 - 1 column 6 rows
Client calls webService.Function3 (byref dsData as DataSet). The
function returns a dataset with 1 data table
Datatable1 - 2 columns 9 rows
This process moves about 200K from the server to the client. Is this
reasonable for the amount of data in the datasets??? Does anyone have
an opinion on a reasonable amount of data that should be sent from the
server to the client when retrieving data from the database? Are
datasets too heavy to pass back and forth between the client and the
WebService?
We just finished and installed this application in production and
realized the hit the server was taking and how that hit was affecting
performance. We are starting development on another Smart Client
vb.NET application that is MUCH bigger. If our architecture is
inefficient, then we need to adjust immediately. Any help would be
GREATLY appreciated!!!
Thanks in advance.