我有一个普通的Windows服务,它处理大型数据集并将其存储到数据库中。此Windows服务还用于托管WCF服务,该服务将处理的数据提供给一个或多个GUI。
目前,WCF服务必须至少命中一次数据库以获取客户端的数据,但数据集的大小非常慢,并且因为重复而占用大量内存。数据。理想情况下,我想直接(在内存中)与WCF服务共享数据处理的结果。有没有办法做到这一点?
答案 0 :(得分:2)
是的,使用分布式缓存引擎。
基本上,分布式缓存引擎是在一台或多台机器上运行的独立进程,用于管理缓存。这个缓存站点在它自己的进程中,通常缓存引擎提供用于访问该数据的API
主要选项是
答案 1 :(得分:1)
实际上,我的一位同事发现可以通过静态方法从主机访问WCF服务,甚至不需要以单件模式提供服务。
[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerSession)]
public class MyWcfService : IMyWcfService
{
private static string messageFromHost;
public static void PassMessageFromHostToService(string message)
{
messageFromHost = message;
}
// Other methods fulfilling the service contract here...
}
然后,您可以从主持人进程调用方法:
MyWcfService.PassMessageFromHostToService("I'm a message from your host");
我不确定这是否被视为不良做法,或者是否会导致我们未考虑的任何问题,但它似乎对我有效:)
答案 2 :(得分:0)
是。您需要在singleton mode中创建WCF主机。请参阅此related question。