运行方式:客户端激活。//远程对象类定义
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。谢谢!
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。谢谢!
Console.WriteLine("服务器开始启动!");
RemotingConfiguration.Configure("Server.config");
ClassObj=new SMSClassObj();
ObjRef obj = RemotingServices.Marshal(ClassObj,"SMSMeun");其中ClassObj就是这个实例,类SMSClassObj就是远程调用类,Server.config中包含服务中的一些配置
%%%%%%%%%%%%%
又遇到另外一个问题:(各位注意:仍然是“客户端激活”)对于客户端激活的对象类型,可否在一个程序中既作服务器端,又作客户端?Remoting是否允许这么作?
这有些类似使用Remoting作聊天程序。
注册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");
以上是我的程序上复制下来的,可以参考一下.
你帖的代码似乎与我得问题没关系。 再顶。
.net 中 “对象释放”是由“垃圾回收”GC完成的,对象被arraylist关联后,应该不会被GC回收的。我试试。另外:对于客户端激活的对象类型,在一个程序中既作服务器端,又作客户端是可以的。
时间太久了,不记得当初为什么没实现。找时间我把实现后的Demo贴上来。
谢谢各位!
http://wayfarer.cnblogs.com/articles/75213.html