运行方式:客户端激活。//远程对象类定义
public class RemoteObj:MarshalByRefObject
{
//状态
private int _state = 0; //客户端调用
public void CalledByClient(int state)
{
_state = state;
}
//服务端调用?
public void CalledByServer(int state)
{
_state = state;
}
}
问题是:
    1、客户端激活远程对象时,如何让服务器端程序知道?——在构造函数中处理?
    2、如果问题1解决,也就是可以在服务器端获取客户端激活的对象的应用,是否可以在服务器端直接调用该对象的CalledByServer方法;
    3、如果问题2解决,是否会影响对象的租借期?
    4、对应问题1,对象的销毁可否由类似操作?初学Remoting。谢谢!

解决方案 »

  1.   

    直接实例化这个类就可以了!!!
    Console.WriteLine("服务器开始启动!");
    RemotingConfiguration.Configure("Server.config");
    ClassObj=new SMSClassObj();
    ObjRef obj = RemotingServices.Marshal(ClassObj,"SMSMeun");其中ClassObj就是这个实例,类SMSClassObj就是远程调用类,Server.config中包含服务中的一些配置
      

  2.   

    不过上面只是在Singleton模式才行!!!
      

  3.   

    Singleton模式或许可以,但“客户端激活”的对象处理起来比较困难——主要设计我的问题中的后面几个——主要是垃圾回收。
    %%%%%%%%%%%%%
    又遇到另外一个问题:(各位注意:仍然是“客户端激活”)对于客户端激活的对象类型,可否在一个程序中既作服务器端,又作客户端?Remoting是否允许这么作?
    这有些类似使用Remoting作聊天程序。
      

  4.   

    SERVER端:
    注册TCP/HTTP通道:
    TcpChannel tcp=new  TcpChannel(8085);
    ChannelServices.RegisterChannel(tcp);
    RemotingConfiguration.RegisterWellKnownServiceType(typeof(dataconn.dataClass),"Dataconn",WellKnownObjectMode.SingleCall);HttpChannel http=new   HttpChannel(8086);
    ChannelServices.RegisterChannel(http);
    RemotingConfiguration.RegisterWellKnownServiceType(typeof(dataconn.dataClass),"Dataconn",WellKnownObjectMode.SingleCall);
    CLIENT 端:
    HttpChannel httpchan = new HttpChannel();
    ChannelServices.RegisterChannel(httpchan);
    dataconn.dataClass dtconntemp1 = (dataconn.dataClass)Activator.GetObject(typeof(dataconn.dataClass), "http://192.168.0.25:8086/Dataconn");
    以上是我的程序上复制下来的,可以参考一下.
      

  5.   

    To wujun510():
       你帖的代码似乎与我得问题没关系。   再顶。
      

  6.   

    哈哈,这个问题我也想问,不过我是在服务器端做了个静态的arraylist每次有客户激货对象生成的时候就往arraylist加,当对象释放的时候就清理arraylist这样就可以记录了
      

  7.   

    to xiaxilin(good good study, day day up!) :
    .net 中 “对象释放”是由“垃圾回收”GC完成的,对象被arraylist关联后,应该不会被GC回收的。我试试。另外:对于客户端激活的对象类型,在一个程序中既作服务器端,又作客户端是可以的。
    时间太久了,不记得当初为什么没实现。找时间我把实现后的Demo贴上来。
    谢谢各位!
      

  8.   

    最好使用远程事件.
    http://wayfarer.cnblogs.com/articles/75213.html