关于Remoting的一个疑惑
先看代码:
TcpChannel chan = new TcpChannel();
ChannelServices.RegisterChannel(chan,true);
ServiceLib.ServiceClass obj = (ServiceLib.ServiceClass)Activator.GetObject(
typeof(ServiceLib.ServiceClass), "tcp://localhost:8085/Service ");
if (obj == null)
{
System.Console.WriteLine( "无法定位服务器 ");
}
else
{
// 调用方法两次
Console.WriteLine( "服务器当前日期为1: " + obj.GetServerDateTime());
Console.WriteLine( "服务器当前日期为2: " + obj.GetServerDateTime());
}
在调用Activator.GetObject方法时客户端并不创建任何到服务端的实际连接。
在第一次调用远程对象的GetServerDateTime方法时,客户端发现尚未建立连接于是会创建一个到服务器的连接,然后在此连接上执行方法传输数据。
问题:
在第一次调用完成后,到服务器的连接是否会关闭?
当第二次调用GetServerDateTime方法时,客户端是否会复用第一次调用时创建的连接?
如果不会复用,则每次调用都会先创建连接再关闭连接?
如果两次调用使用的是同一个连接,则这个连接能持续多长时间?什么时候会超时,我如何控制?
------解决方案--------------------在第一次调用完成后,到服务器的连接是否会关闭?
当第二次调用GetServerDateTime方法时,客户端是否会复用第一次调用时创建的连接?
______________________________________________________
连接不会关闭,第二次调用GetServerDateTime方法时会复用第一次调用时创建的连接.
我理解你说的连接是指Socket连接.
以上所说来自我们对实际程序运行的观察,检测它的Socket连接情况.