3

我最近开始在 Delphi 中使用 DataSnap 来生成 RESTful Web 服务。在遵循该人本人 Marco Cantu 和其他几个人在互联网上的指导后,我成功地让整个“链条”正常工作。

但是速度有一个小问题;客户端现在可以向服务器发送一个流(连同它的大小)(因为这里的错误DataSnap XE2 和 TStream 方法参数,被读取到发送的大小),服务器会将它重新组合成一个文件并保存它在磁盘上。

但是对于一个 3.66MiB 的文件,这需要 50 多秒!

应该是这样吗?在我的服务器上:

try
   F := TFileStream.Create('written.dat', fmCreate);
   F.Position := 0;
   F.CopyFrom(Data, DataSize);
finally 
   F.Free; 

在客户端:

var
  Server: TServerMethods1Client;
  DBStream: TFileStream;
begin
  Server := TServerMethods1Client.Create(SQLConnection1.DBXConnection);
  try
    DBStream := TFileStream.Create('DataSnapServer.exe', fmOpenRead);
    DBStream.Position := 0;
    Showmessage(IntToStr(Server.SendData(DBStream, DBStream.Size)));
  finally
    Server.Free;

任何帮助表示赞赏!

干杯,阿德里安

4

1 回答 1

1

在服务器端,尝试调整组件的BufferKBSize属性TDSHTTPWebDispatcherTsqlConnection在客户端的组件上可以找到相同的属性。

于 2012-09-14T10:16:04.823 回答