远程调用时代码执行速度较慢吗? (.net remoting)

时间:2011-09-23 23:21:22

标签: .net performance remoting

我的VB.NET(框架2)程序中有一个子程序。该子程序不返回任何值,只是对本地数据库执行各种检查。

程序在启动后立即调用sub,大约需要6秒钟才能完成。

该程序还充当网络远程服务器。客户端可以连接到它并调用sub。

当远程客户端调用sub时,大约需要28秒才能完成。

为什么?在这两种情况下,sub都在服务器中本地执行,但是当远程调用时,即使任务完全相同,也需要花费更多的时间。

使用.net远程调用时,某种程度上代码是在一个慢得多的线程中执行的吗?

你知道为什么会这样吗?

你知道怎么解决吗?

感谢您的帮助!

编辑:

我很抱歉缺乏信息。我觉得这就够了。好的,这就是......

这是一个VB子,它不返回任何值。

网络速度很快,问题是没有到达远程计算机,问题是如果远程调用代码似乎需要更多工作。

如果你真的想知道,sub的主要部分是一个循环,它将DAO(yes DAO)记录集中的值复制到集合中:

Sub MySub
'This sub can be called both remotemy and locally.

Dim IDsAtTable As New Dictionary(Of Integer, Integer)

‘Open database and fast stuff. 
‘{…}

‘POINT A
RS = DB.OpenRecordset("SELECT ID FROM " & Table & " WHERE IDSucursalFuente=" & IDThisSucursal & " ORDER BY ID")
Fld = RS.Fields("ID")
Do While Not RS.EOF
    ID = Fld.Value
    If Not IDsAtTable.ContainsKey(ID) Then IDsAtTable.Add(ID, ID)
    RS.MoveNext()
Loop
RS.Close()
RS = Nothing
‘POINT B

'Check elements stored at IDsAtTable, this is fast.

‘Close database and fast stuff.
‘{…}    
End Sub

在这两种情况下(远程调用和在服务器上本地调用时)代码使用相同的DB(托管在服务器上),处于相同的状态(我的意思是在开头关闭),具有完全相同的记录。

如果你测量从POINT A到POINT B的时间,如果远程调用sub会花费更多的时间,但正如你所看到的,没有涉及网络。对我来说,它应该花费相同的时间,但事实并非如此。

我只拨打了2次。一个由服务器本地处理,另一个由远程客户端处理。

服务器的处理器负载是相同的。只有一个客户端在给定时间调用sub。

我不知道.NET框架在执行远程调用的代码时是否在幕后做其他事情,或者为远程调用创建的线程要慢得多。

0 个答案:

没有答案