簡體   English   中英

asp.net中的類庫和靜態變量

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM