Niels_H

Niels_H

  • NA
  • 5
  • 0

Remoting: Serializing datasets (or datatables for that matter)

May 24 2005 3:44 PM
Hi ! I'm new to .NET so please forgive my possible misunderstandings. I have made a remoting service, supporting a MarshalByRefObject which delivers a datatable I(or dataset) from an ODBC connection to a Progress database. This works fine, but the overall performance makes me wonder about the serialization process, and if I'm setting things up correctly. I have compared the service to both a ASP.NET based service (providing the exact same data, using the exact same connection etc) and to a direct client connected ODBC, again with the same database logic. What confuses me a bit, is that where the client connected version gives a much better response than the ASP.NET (not surprisingly) it seems that the remoting version only gives a slightly better performance than the ASP.NET. This is a surprise to me, as the ASP.NET service spends a lot of networking ressources, transmitting an XML serialization of the dataset, whereas the remoting version shoul stay inside the binary domain, thus expectedly working much faster. (I use the tcp channel and a BinaryChannelServer- (and client-) SinkProvider. What even confuses me more is that Progress' Open Edge (the 4GL of Progress) offers me the opportunity to make a proxy, based on some native Progress code running on an AppServer, providing the exact same data once again as a .NET datset. Given that the ODBC connection itself works (almost) as fast as the native progress dataretrieval (which it does), the performance of the Proress Proxy should compare to the remoting, as they both do almost the same thing (the Progress Proxy is a DLL that you use as a reference in your project, the same way you use a .NET remoting proxy) but the Progress proxy more than halves the responsetime compared to the remoting service. I have tried to use the [serialiable()] option and even tried implementing the ISerializable interface on the MarshalByRefObject but it changes nothing. Am I overlooking some serialization/deserialization issue here ? Thanx in advance