我爲亞音速2.x ActiveRecord寫了一個CacheUtil類。它基於某些在舊亞音速論壇上發佈的代碼。 (這是從最後一個論壇被刪除之前刪除的論壇中獲得的,這就是爲什麼軟件論壇應該是永久性的。)下面是一個緩存Find方法的例子。你可以適應ss3。還有插入,fetchall,刪除,清除等。羅布康納裏當時說,緩存是有問題的,它被故意排除在ss2之外。通過使用HttpRuntime.Cache,我可以同時在Web應用程序和服務之間共享緩存。我相信我可以做到這一點,因爲它是一個小應用程序,始終在一臺服務器上。
public static RecordBase<T> Find<T, ListType>(object primaryKeyValue)
where T: RecordBase<T>, new()
where ListType: AbstractList<T, ListType>, new()
{
string key = typeof(T).ToString();
if(HttpRuntime.Cache[key] == null)
FetchAll<T, ListType>();
if(HttpRuntime.Cache[key] != null)
{
ListType collection = (ListType)HttpRuntime.Cache[key];
foreach(T item in collection)
{
if(item.GetPrimaryKeyValue().Equals(primaryKeyValue))
return item;
}
}
return null;
}
我已經使用HttpRuntime.Cache與基於SQL Server的緩存。這樣我解決了我對高可用性和高併發性的需求。 這個答案是關閉我已經實現的。 – BigBoss 2011-11-23 15:42:12