3

私は最近、Delphi で DataSnap を使用して、RESTful Web サービスになるものを作成し始めました。マルコ・カントゥ自身とインターネット上の他の何人かによるガイドに従った後、私は「チェーン」全体をうまく機能させることができました。

ただし、速度には小さな問題があります。クライアントはストリームを (そのサイズとともに) サーバーに送信できるようになりました (これは、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プロパティを調整してみてください。クライアントのコンポーネントでTDSHTTPWebDispatcher同じプロパティを見つけることができます。TsqlConnection

于 2012-09-14T10:16:04.823 に答える