Smart Client Performance

1 view
Skip to first unread message

Oxford

unread,
Apr 15, 2008, 10:01:57 AM4/15/08
to DotNetDevelopment, VB.NET, C# .NET, ADO.NET, ASP.NET, XML, XML Web Services,.NET Remoting
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.

Andrew Badera

unread,
Apr 15, 2008, 1:04:11 PM4/15/08
to DotNetDe...@googlegroups.com
First: why 1.1? 2.0 improved SO MANY THINGS over 1.1. I suspect you'd find a large performance increase simply by going to 2.0 here.

Try to avoid sending large, or large numbers of, datatables/datasets. No, offhand, it doesn't sound like you're sending too much or too many, but still, less is better. Prefer data transfer objects instead. There is no "reasonable" amount stamped on a metal rule somewhere -- it depends on your architecture, your deployment configuration, and more than anything else, the pipe between the client and the datasource. What's the client device? PC, or something handheld? (Assuming PC since you said 1.1 and not 1.0 which was the pre-2 version of Compact Framework.)

Also, rather than a web service, consider using remoting if your hardware/deployment/etc. supports it. Even better, consider going to 3.0/3.5 and using WCF and net.tcp binding.

As far as your subsequent load issue, what's your Ethernet trace look like? Is it pulling everything down fresh on you, or is that 1mb "something else"? Is there some sort of negotiation process going on that's getting choked by your network configuration? (Just throwing out guesses.)
--
--Andy Badera
http://andrew.badera.us/ http://flipbitsnotburgers.blogspot.com/
and...@badera.us
(518) 641-1280
Google me: http://www.google.com/search?q=andrew+badera
Reply all
Reply to author
Forward
0 new messages