[英]Class library and static variables in asp.net
我有類庫,應該封裝orm邏輯。 為了避免一些db調用,它應該包含某種緩存或靜態變量(我想避免它們)。 它用於asp.net和wcf應用程序。 由於它是類庫,我不想訪問Cache或其他asp.net相關的東西。 我還想避免靜態變量,因為它們的應用范圍本質。
我應該如何實現呢? 你怎么做到這一點?
編輯:
簡化:想象一下封裝DAL的類庫。 它與數據庫對話。 里面有一些昂貴的查詢。 其中一些應該每個用戶獲取一次並存儲在某個地方,其中一些可以按應用程序使用(也存儲以避免將來調用DB)。 通常我會使用Cache,但由於它是DAL類庫,我想在其中包含此功能(而不是在asp.net中)。 希望現在更清楚了;)
你應該使用緩存:
使用模式,接口等:
你的類庫應該松散耦合。 (易於交換,沒有交叉參考)
示例(我如何簡化):
namespace MyDbContext
{
var cache;
var db;
public MyDbContext()
{
// Cache init
cache = ....;
// DB init (can be factory or singleton)
db = DataBase.Instance();
}
public class Car
{
// Db tuple id
public CarId { get; set; }
public Car(int id)
{
CarId = id;
}
public Car GetFromDb()
{
// your db code will be here
Car myCar = ....;
// cache your object
cache.Put("Car" + CarId.ToString(), myCar);
return myCar;
}
public Car Get()
{
// try to get it from cache or load from db
Car mycar = cache.Get("Car" + CarId.ToString()) as Car ?? GetFromDb();
}
public ClearCache()
{
cache.Put("Car" + CarId.ToString(), null);
// maybe cache.Remove("Car" + CarId.ToString())
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.