.net remoting函数调用传对象作入参与传对象引用作入参的区别

1. 关于.net remoting生存期的问题
  如果不熟悉.net remoting生存期问题,可能会出现莫名其妙的调用对象被销毁,其实这是.net remoting生存期到了,
  一般在服务端应用,都希望永久不过期,于是重写下面函数。
    ///


    /// 永久不失效
    ///

    ///
    public override Object InitializeLifetimeService()
    {
        return null;
    }    
    返回null表示永久不失效。
2. .net remoting调用对象的值的修改问题,当希望调用remoting方法后,传入的对象值能在远程对象中改变,一定要传引用。
对比以下测试
2.1 传递对象,不通过remoting调用
    public void TestList(List dataList)
    {
        dataList.Add(100);
    }    
    public void Test()
    {
        List dataList = new List();
        TestList(dataList);
    }    
    调用Test(),dataList元素加入了100.    
    现在改为remoting调用TestList,这时100并没有加入dataList,返回还是空的列表。
2.2 传对象引用,不通过remoting调用
    public void TestList(ref List dataList)
    {
        dataList.Add(100);
    }
    public void Test()
    {
        List dataList = new List();
        TestList(ref dataList);
    }    
    调用Test(),毫无疑问,dataList元素加入了100.
    现在改为remoting调用TestList,这时dataList元素加入了100,和不通过remoting调用一样.
    
   通过以上例子,.net remoting对象调用传入引用才能改变其内容和值,具体什么原因未知。

    

你可能感兴趣的:(rpc,传对象,传引用,remoting问题,remoting生存期,.NET,Remoting,Windows应用编程)