如题,服务端应用程序池如果启用了多个工作进程,那么会有多个W3WP.exe进程,这个时候通过lock关键字实现的单例是不是不再起作用,如果要实现单例该怎么做。
无效。
无效的话,那怎么实现单例呢
@深蓝色左手: 你的单例是干嘛用的?
@Launcher: 比如我要一个对象管理在线用户
@深蓝色左手: 那么你这里第一个涉及到的问题,就是你需要在一个位置放置你的在线用户,对吧!假设是 List<User> onlineUsers,那么你需要在多个应用程序域(或进程)中去访问 onlineUsers 。那么,现在这样来看,你有多个进程(.exe ),需要访问同一份在线用户列表(onlineUsers),你会怎么做?
@Launcher: 只能提供一个唯一的进程存放onlineUsers,所有进程都去这个进程里取,就像,开启多个W3WP的时候回话状态需要使用状态服务器一样, 是这个意思吗?,难道要弄个windows服务? 在不存数据库的前提下有没有更好的方式啊
@深蓝色左手: 是的,这就是最好的方式。松耦合,易扩展,把它独立为一个子系统,外部系统只需要添加用户,读取统计就 OK 了。
当然你也可以看下这个:http://blog.163.com/yhs020@126/blog/static/372982182006328938370/
进程间同步的话最简单的是使用 CreateMutex 。
@Launcher: 谢谢!