我有一些WCF服務。這些服務在ASP.NET中運行。我希望這些服務能夠訪問靜態變量。我的問題是,我不確定適當的服務器級存儲機制在哪裏。由於速度,我不想使用數據庫。但是,我希望靜態變量儘可能長時間保持在內存中。事實上,我希望它保持到我重新啓動我的服務器,如果可能的話。WCF中的靜態變量
任何人都可以提供任何想法嗎?
我有一些WCF服務。這些服務在ASP.NET中運行。我希望這些服務能夠訪問靜態變量。我的問題是,我不確定適當的服務器級存儲機制在哪裏。由於速度,我不想使用數據庫。但是,我希望靜態變量儘可能長時間保持在內存中。事實上,我希望它保持到我重新啓動我的服務器,如果可能的話。WCF中的靜態變量
任何人都可以提供任何想法嗎?
您可以在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
設置爲single instance。
[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single)]
public class MyService : IMyServiceContract
{
}
但是,如何將它們存儲在AppDomain中? – user609886 2011-02-13 14:35:15
您可以在某個類中創建一個靜態變量,並從服務中訪問它。 – 2011-02-13 14:45:40