我有一个用C ++编写的xmlrpc
服务器(使用libxmlrpc++
)。它提供了一个返回字符串的函数getversion()
。
从Perl
(使用RPC::XML::Client
)拨打,100拨打1.25。
从C#
(using XMLRPC.NET
)拨打电话,100拨打50.322。
这是在Windows7 Pro上运行。
有什么想法,以及如何修复它?
[XmlRpcUrl("http://localhost:9000/RPC2")]
public interface ICutControl : IXmlRpcProxy
{
[XmlRpcMethod]
string getversion();
}
class Program
{
public static void do_test()
{
ICutControl proxy;
proxy = XmlRpcProxyGen.Create<ICutControl>();
int count = 100;
try
{
for (int i = 0; i < 100; i++)
{
string version = proxy.getversion();
Console.WriteLine("{0}:{1}", i, version);
}
}
catch (System.Net.WebException ex)
{
Console.Error.WriteLine("exception: {0}", ex.Message);
}
}
proxy = null;
}
[更新]
我尝试过压缩,但它并没有什么不同。由于这似乎发生在客户端,没有重新启动服务器,我没有想法。 我使用的perl是cygwin。我在下面添加了perl。
#!/usr/bin/perl
use warnings;
use strict;
use RPC::XML;
use RPC::XML::Client;
my $url = 'http://localhost:9000/RPC2';
my $cli = RPC::XML::Client->new($url);
for (my $i = 0; $i < 100; $i++) {
my $resp = $cli->send_request('getversion', ());
print "version:", $resp->value, "\n";
}
[更新]
我没有找到关于为什么XMLRPC.NET变慢的答案。
但是通过在libxmlrpc ++库周围编写C ++ / CLR包装器,我的速度提高了100倍。