我通过远程处理暴露了单例类,我遇到了一些问题.在我的服务器中,我有:
TcpChannel channel = new TcpChannel( Settings.Default.RemotingPort );
ChannelServices.RegisterChannel( channel, false );
RemotingConfiguration.RegisterWellKnownServiceType(
typeof( RemotableObject ), "RemotableObject",
WellKnownObjectMode.Singleton );
Run Code Online (Sandbox Code Playgroud)
RemotableObject是一个继承MarshalByRefObject的单例对象.
我的客户通过以下方式连接到它
remoteObject = (RemotableObject)Activator.GetObject(
typeof( RemotableObject ),
string.Format( "tcp://{0}:{1}/RemotableObject", serverIP, serverPort ) );
Run Code Online (Sandbox Code Playgroud)
就远程处理而言,一切都很好,但是当我在服务器代码中访问单例对象时,如下所示:
int someValue = RemotableObject.Instance.SomeDynamicValue;
Run Code Online (Sandbox Code Playgroud)
它访问与客户端不同的实例.我还验证了RemotableObject中的私有构造函数在调试时会被击中两次.
如果我通过我的服务器代码中的远程处理获得RemotableObject的实例,我可以获得所需的行为,但有没有办法可以从服务器访问与客户端相同的对象而没有远程处理开销?
我有一个客户端项目,包括管理MS Compute Cluster上的作业.我将在他们的网络之外开发应用程序,并且想要一种开发/调试我的应用程序的方法,而无需在他们的网络上.
我正在使用C#开发应用程序,到目前为止我所拥有的只是Microsoft Compute Cluster Pack SDK.