.net WCF InstanceContextMode.PerCall,调用之间的共享数据
如何在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
使用@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的方法。