none
关于remoting的singleton RRS feed

  • 问题

  • 我有一个文件放在服务器,允许各个客户端用户同时打开,但对文件的修改要进行限制:在某个时刻,只允许一个用户对该文件进行写操作。我想利用remoting架构,做一个简单的控制程序:当一个客户写这个库时,将远程对象的一个布尔变量,如busy,置为真,直到写完再将该变量置为假。所有客户写该库前,都要循环访问远程对象的这个变量。1、如果是假,进行写库操作,与此同时,进行上述控制,即将该布尔变量值为真,写操作完成后,再将该变量置为假;2、如果是真,表示当前某个客户端用户正在进行写操作,继续访问直至为假。请问,微软的Remoting架构Singleton方式激活,是否可以实现上述算法。

    2007年12月20日 1:12

答案

  • 我记得写操作或者打开文件的时候可以选择排他方式打开,也就是说,可以以独占方式打开文件,你操作的时候,别的程序是操作不了的。具体你注意一下相关方法的重载。

    2008年1月27日 10:10
    版主

全部回复

  • Remoting不是很熟悉。不过如果是单体模式的话,应该是可以的吧。

    我想到的一个办法是,通过设置文件的只读属性来控制。

    当一个客户需要写这个库时,检查这个文件的只读属性,如果是只读,则把它改为可写(去掉只读),然后进行写操作。写操作完成之后,在置回只读;如果检查只读属性时发现只读为false,则表明当前有另一个客户正在写,因此需要等待,直至这个文件变成只读属性。

    和你思路完全一样,只是利用了文件自身的只读属性,而不用你自己设置变量而已。

    2007年12月23日 12:18
    版主
  • RickyLin先生,

    谢谢你的回复。不过,这个办法不行。当把文件改为可写状态时,别的程序也可以写了。不过,还是再次谢谢你。

    ly_he

    2008年1月26日 0:53
  • 我记得写操作或者打开文件的时候可以选择排他方式打开,也就是说,可以以独占方式打开文件,你操作的时候,别的程序是操作不了的。具体你注意一下相关方法的重载。

    2008年1月27日 10:10
    版主
  • RickyLin先生,谢谢提示。

    2008年2月5日 7:52