软件设计:使用ClientDataSet和套接字的第2层应用程序

时间:2009-08-07 12:31:58

标签: delphi 2-tier

我的任务是创建第2层应用程序,如下所示:

MSSQL数据库< - >服务器< - > n-Client(n为许多人)

客户端将数据发送到服务器。服务器从数据库中选择内容,然后将其发送回客户端。目前我正在使用Records和SendDataToSocket(url在下面)。

我想在客户端上使用通过服务器套接字收到的数据来使用TDBGrid。目前它是这样的:

服务器 DB - > ADOQuery - > DataSetProvider - > ClientDataSet - > SaveToStream(MemoryStream的)

客户端: ClientDataSet - > LoadFromStream(MemoryStream) - > DataSource - > DBGrid的

我正在使用SendDataToSocket(Socket: TCustomWinSocket; Data: Pointer; DataSize: Integer; Buffer: TMemoryStream): Integer;

所以我想要做的是将服务器端clientdataset创建的流发送给使用loadfromstream读取流的客户端。 SendDataToSocket在这里可行吗?

我希望你明白我的意思。

1 个答案:

答案 0 :(得分:1)

是的,只要客户端准备好接收数据。这可以很好地工作,但是根据您在发送之前可能希望压缩内存流的数据量和类型。我在以前的项目中执行过类似的方法,但我使用synapse进行数据传输......但基本概念是相同的。

zlib单元(包含在CodeGear中)包含一个简单的流包装器,它提供压缩和解压缩。由于您控制电线的两侧,压缩很可能通过缩短电线时间来提高性能。