WCF中的静态变量

我有一些WCF服务。 这些服务在ASP.NET中运行。 我希望这些服务能够访问静态变量。 我的问题是,我不确定适当的服务器级存储机制在哪里。 我不想因为速度而使用数据库。 但是,我希望静态变量尽可能长时间保留在内存中。 事实上,如果可能的话,我希望它能保持到重新启动我的服务器。

任何人都可以提供任何想法吗?

您可以在WCF中使用静态变量,但必须正确地同步对它们的访问,因为它们可能同时从多个线程访问。 存储在静态变量中的值可以从AppDomain中的任何位置访问,并保留在内存中,直到服务器重新启动。

你可以有这样的东西

public static class StaticVariables { private static string _variable1Key = "variable1"; public static Object Variable1 { get { return Application[_variable1Key]; } set { Application[_variable1Key] = value; } } } 

Application集合本身是线程安全的,但你添加的东西可能不是; 所以记住这一点。

如果所有服务都在单个ServiceContract并且服务中的所有成员变量都可以在所有会话中共享,那么您可以将ServiceBehavior设置为具有单个实例 。

 [ServiceBehavior( InstanceContextMode = InstanceContextMode.Single )] public class MyService : IMyServiceContract { }