C# asp.net中的类库和静态变量
我有类库,它应该封装orm逻辑。为了避免一些db调用,它应该包含某种缓存或静态变量(我想避免它们)。它用于asp.net和wcf应用程序中。因为它是类库,所以我不想访问缓存或其他与asp.net相关的内容。我还希望避免使用静态变量,因为它们的应用范围性质 我应该如何实现这一点?你如何做到这一点 编辑:C# asp.net中的类库和静态变量,c#,asp.net,static-variables,C#,Asp.net,Static Variables,我有类库,它应该封装orm逻辑。为了避免一些db调用,它应该包含某种缓存或静态变量(我想避免它们)。它用于asp.net和wcf应用程序中。因为它是类库,所以我不想访问缓存或其他与asp.net相关的内容。我还希望避免使用静态变量,因为它们的应用范围性质 我应该如何实现这一点?你如何做到这一点 编辑: 为了简化:想象类库封装DAL。它与数据库通信。里面有一些代价高昂的查询。其中一些应该每个用户提取一次并存储在某处,而其中一些可以每个应用程序使用(也可以存储以避免将来调用DB)。问题是,通常我会使
为了简化:想象类库封装DAL。它与数据库通信。里面有一些代价高昂的查询。其中一些应该每个用户提取一次并存储在某处,而其中一些可以每个应用程序使用(也可以存储以避免将来调用DB)。问题是,通常我会使用缓存,但因为它是DAL类库,所以我希望在其中包含此功能(而不是在asp.net中)。希望现在更清楚;) 您应该使用缓存:
- 微软Appr Fabrik(前)
- glyntucker.Cache
- 共享缓存
@Andreas Rehm,Velocity的真名现在是AppFabric Cache。我最近一直在做一些研究,它看起来很有希望。在这里下载,是的-现在是AppFabric-您可以在这里找到更多信息:抱歉,但我询问了可以在类库内部使用的静态的替代方法。我不想用Asp.net的好东西。安德烈亚斯,我有。你为什么老是重复?你能给我一个具体的例子,说明从模式中可以使用什么来帮助我解决这个问题吗?这取决于-但我会使用工厂模式。伙计,我不明白你想说什么。你可以尝试使用一些psedoo代码或显示示例场景的工作流吗。我只是不明白你在问什么:(
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())
}
}
}