Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net WCF InstanceContextMode.PerCall,调用之间的共享数据_.net_Wcf_Windows Services_Singleton_Shared - Fatal编程技术网

.net WCF InstanceContextMode.PerCall,调用之间的共享数据

.net WCF InstanceContextMode.PerCall,调用之间的共享数据,.net,wcf,windows-services,singleton,shared,.net,Wcf,Windows Services,Singleton,Shared,如何在WCF服务的实例之间共享数据?当使用InstanceContextMode.PerCall时,我需要一个实例将写入和读取的共享列表 编辑 使用@usr idea,我创建了一个singleton类,该类有一个队列,WCF服务将在其中注册其消息,在singleton类中,我有一个正在运行的线程,该线程将使用队列中的消息,生产者/消费者问题。在与服务类不同的类中维护共享数据,并使服务类处于无状态。无状态服务可以获取单例实例并使用它 这是一张草图: class MySingleton { //Y

如何在WCF服务的实例之间共享数据?当使用InstanceContextMode.PerCall时,我需要一个实例将写入和读取的共享列表

编辑


使用@usr idea,我创建了一个singleton类,该类有一个队列,WCF服务将在其中注册其消息,在singleton类中,我有一个正在运行的线程,该线程将使用队列中的消息,生产者/消费者问题。

在与服务类不同的类中维护共享数据,并使服务类处于无状态。无状态服务可以获取单例实例并使用它

这是一张草图:

class MySingleton {
 //You can use any lazy initialization logic you like
 //I just used a static initializer as an example
 public static readonly MySingleton Instance = new ...();

 //Move all static data into this class
 //Use it from anywhere you like
}

class MyWcfService {
 //This WCF service has no state
 //Any instancing mode will do
 public void SomeServiceMethod() {
  MySingleton.Instance.DoSomething();
 }
}


这与问题无关:有状态的web服务和web应用程序应该被避免。您必须假设应用程序在任何时候都被终止(例如,电源故障、崩溃、错误等)。此外,您还需要一个高可用性解决方案,通常需要多次实例化应用程序。

还有一件事,我将在Windows服务中托管我的WCF服务,如果有意义的话,可能是在Windows服务级别而不是在WCF服务中提供数据的解决方案。是的,这也是有意义的。您只需要以某种方式向服务类提供对共享数据的引用。静态变量是一种简单的方法。是的,这可以解决我的问题,但我找不到将数据发送到WCF的方法。