Hello!
Recently I used SOAP transmit the data between two isomerism systems, the SOAP
client used Delphi 2005 write, the server end used Apache AXIS 1.2.1. The client
end and the server end exchange data work well, but the performance aspect meets
one question.
The Delphi client end parse the Soap data package of data is specially slow,
specially when analysis object array. If the array length in 500, the delphi
analysis speed lets the person endure with difficulty. But when I completely
changes to AXIS realization, in performance is very good.
Under is my test result:
complex object detail is follow:
========================================================================
1 TAddress = class(TBaseObject)
2 private
3 Faddress: string;
4 Fcity: string;
5 Fcountry: string;
6 FpostalCode: string;
7 Fprovince: string;
8 published
9 property address: string read Faddress write Faddress;
10 property city: string read Fcity write Fcity;
11 property country: string read Fcountry write Fcountry;
12 property postalCode: string read FpostalCode write FpostalCode;
13 property province: string read Fprovince write Fprovince;
14 end;
15
16 ArrayOfRoleEntity = array of TRoleEntity;
17 {"http://types.soap.appfuse.org"}
18
19
20 //************************************************************************//
21 // Namespace : http://types.soap.appfuse.org
22 //************************************************************************//
23 TUserEntity = class(TRemotable)
24 private
25 Faddress: TAddress;
26 FconfirmPassword: string;
27 Femail: string;
28 Fenabled: Boolean;
29 FfirstName: string;
30 FlastName: string;
31 Fpassword: string;
32 FpasswordHint: string;
33 FphoneNumber: string;
34 Froles: ArrayOfRoleEntity;
35 Fusername: string;
36 Fversion: Integer;
37 Fwebsite: string;
38 public
39 destructor Destroy; override;
40 published
41 property address: TAddress read Faddress write Faddress;
42 property confirmPassword: string read FconfirmPassword write
43 FconfirmPassword;
44 property email: string read Femail write Femail;
45 property enabled: Boolean read Fenabled write Fenabled;
46 property firstName: string read FfirstName write FfirstName;
47 property lastName: string read FlastName write FlastName;
48 property password: string read Fpassword write Fpassword;
49 property passwordHint: string read FpasswordHint write FpasswordHint;
50 property phoneNumber: string read FphoneNumber write FphoneNumber;
51 property roles: ArrayOfRoleEntity read Froles write Froles;
52 property username: string read Fusername write Fusername;
53 property version: Integer read Fversion write Fversion;
54 property website: string read Fwebsite write Fwebsite;
55 end;
56
57 ArrayOfUserEntity = array of TUserEntity;
58 {"http://service.soap.appfuse.org" }
59
60
61 //************************************************************************//
62 // Namespace : http://types.soap.appfuse.org
63 //************************************************************************//
64 TRoleEntity = class(TRemotable)
65 private
66 Fdescription: string;
67 Fname: string;
68 Fusers: ArrayOfUserEntity;
69 Fversion: Integer;
70 public
71 destructor Destroy; override;
72 published
73 property description: string read Fdescription write Fdescription;
74 property name: string read Fname write Fname;
75 property users: ArrayOfUserEntity read Fusers write Fusers;
76 property version: Integer read Fversion write Fversion;
77 end;
========================================================================
using AXIS both server and client, the result is follow:
array length 100 ,Invoke time 2078 ms
array length 200 ,Invoke time 1937 ms
array length 300 ,Invoke time 2015 ms
array length 400 ,Invoke time 2094 ms
array length 500 ,Invoke time 2781 ms
array length 600 ,Invoke time 3000 ms
array length 700 ,Invoke time 3235 ms
array length 800 ,Invoke time 3750 ms
array length 900 ,Invoke time 4359 ms
array length 1000 ,Invoke time 4641 ms
array length 1100 ,Invoke time 5407 ms
array length 1200 ,Invoke time 7453 ms
array length 1300 ,Invoke time 6375 ms
array length 1400 ,Invoke time 7157 ms
array length 1500 ,Invoke time 7078 ms
array length 1600 ,Invoke time 8047 ms
array length 1700 ,Invoke time 8703 ms
array length 1800 ,Invoke time 9266 ms
array length 1900 ,Invoke time 10250 ms
array length 2000 ,Invoke time 10875 ms
array length 2100 ,Invoke time 10985 ms
array length 2200 ,Invoke time 14250 ms
array length 2300 ,Invoke time 12156 ms
array length 2400 ,Invoke time 13000 ms
array length 2500 ,Invoke time 13516 ms
but when I change client using delphi 2005,when array length is about 500, invoking time > 30s.
|