1. 关于.net remoting生存期的问题
如果不熟悉.net remoting生存期问题,可能会出现莫名其妙的调用对象被销毁,其实这是.net remoting生存期到了,
一般在服务端应用,都希望永久不过期,于是重写下面函数。
/// <summary>
/// 永久不失效
/// </summary>
/// <returns></returns>
public override Object InitializeLifetimeService()
{
return null;
}
返回null表示永久不失效。
2. .net remoting调用对象的值的修改问题,当希望调用remoting方法后,传入的对象值能在远程对象中改变,一定要传引用。
对比以下测试
2.1 传递对象,不通过remoting调用
public void TestList(List<int> dataList)
{
dataList.Add(100);
}
public void Test()
{
List<int> dataList = new List<int>();
TestList(dataList);
}
调用Test(),dataList元素加入了100.
现在改为remoting调用TestList,这时100并没有加入dataList,返回还是空的列表。
2.2 传对象引用,不通过remoting调用
public void TestList(ref List<int> dataList)
{
dataList.Add(100);
}
public void Test()
{
List<int> dataList = new List<int>();
TestList(ref dataList);
}
调用Test(),毫无疑问,dataList元素加入了100.
现在改为remoting调用TestList,这时dataList元素加入了100,和不通过remoting调用一样.
通过以上例子,.net remoting对象调用传入引用才能改变其内容和值,具体什么原因未知。