測試環境:
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的測試圖可以看到差別。多層代理對象的建立對效能的影響比較嚴重,因此遇到這情況要特別注意。