测试环境:
Server: P4 2.4G 1G内存
Client: P4 1.8G 1G 内容
Client使用ASP.NET 2.0创建远程对象;然后通过ACT对Clinet进行测试。
服务端代码:
ChannelServices.RegisterChannel(new HttpChannel (8081));
WellKnownServiceTypeEntry myWellKnownServiceTypeEntry =
new WellKnownServiceTypeEntry(typeof(HFSoft.ObjectService.Server),
"TestLogic",
WellKnownObjectMode.Singleton);
RemotingConfiguration.RegisterWellKnownServiceType(
myWellKnownServiceTypeEntry);
Console.WriteLine("Started the Server port:8081, Hit <enter> to exit...");
客户端代码:
using (ICreateInstance<TestLogic.Employee> logic =
ObjectFactory.ConfigObjectFactory.CreateInstance<TestLogic.Employee>())
{
//logic.Source.EmployeeID = 1;
logic.Source.Load();
}
客户端配置方式:
<objectservice>
<!--<server url="192.168.0.62:8081/TestLogic" type="http">
<objecttype type="TestLogic.Employee,TestLogic"/>
</server>-->
<server url="192.168.0.235:8081/TestLogic" type="http">
<objecttype type="TestLogic.Employee,TestLogic"/>
</server>
</objectservice>
可以配置多个服务器,由组件随机选择相关服务器。
|
(1)
|
测试名称:
|
ACTSamples: ObjectServiceTest
|
|
|
测试运行名称:
|
创建远程服务对象,并返回远程业务对象和设置业务对象一成员值、执行业务对象方法(在Client缓存10个相关代理对象)
|
|
|
测试开始时间:
|
2006-9-26 11:44:24
|
|
|
测试持续时间:
|
00:00:01:00
|
|
|
测试迭代次数:
|
6,792
|
|
|
测试说明:
|
-
|
|
(2)
|
测试名称:
|
ACTSamples: ObjectServiceTest
|
|
|
测试运行名称:
|
创建远程服务对象,并返回远程业务对象和执行业务对象方法(在Client缓存20个相关代理对象)
|
|
|
测试开始时间:
|
2006-9-26 11:41:58
|
|
|
测试持续时间:
|
00:00:01:00
|
|
|
测试迭代次数:
|
9,008
|
|
|
测试说明:
|
-
|
|
(3)
|
测试名称:
|
ACTSamples: ObjectServiceTest
|
|
|
测试运行名称:
|
创建远程服务对象,并返回远程业务对象
|
|
|
测试开始时间:
|
2006-9-26 11:17:36
|
|
|
测试持续时间:
|
00:00:01:00
|
|
|
测试迭代次数:
|
7,414
|
|
|
测试说明:
|
-
|
|
(4)
|
测试名称:
|
ACTSamples: ObjectServiceTest
|
|
|
测试运行名称:
|
创建远程服务对象,并返回远程业务对象和执行业务对象方法(在Client缓存10个相关代理对象)
|
|
|
测试开始时间:
|
2006-9-26 11:13:31
|
|
|
测试持续时间:
|
00:00:01:00
|
|
|
测试迭代次数:
|
8,921
|
|
|
测试说明:
|
-
|
|
(5)
|
测试名称:
|
ACTSamples: ObjectServiceTest
|
|
|
测试运行名称:
|
创建远程服务对象,并返回远程业务对象和执行业务对象方法
|
|
|
测试开始时间:
|
2006-9-26 11:10:39
|
|
|
测试持续时间:
|
00:00:01:00
|
|
|
测试迭代次数:
|
5,500
|
|
|
测试说明:
|
-
|
测试运行图形

显示错误
基于远程代理的对象调用,成员的操作对性能影响还是比较大的。从2和1测试用例对比可以看到,只是多了一个成员的调用并发率竟然能相差这么大。因此在调用远程对象时最好是基于无状态方法的调用,这样可以减少远程对象的访问次数,从而获取性能上的提高。
缓存的利用也是一个很重要的因素,这样可以避免远对象创建过程中带来的损耗问题。直接由RemotingConfiguration配置代理的对象内部已经提供这处机制,如果代理对象是通过另一个代理创建时缓存就变得很重要从2和5的测试图可以看到差别。多层代理对象的创建对性能的影响比较严重,因此遇到这情况要特别注意。
posted on 2006-09-26 12:41
henry 阅读(1201)
评论(1) 编辑 收藏 网摘