考虑到具有以下要求的项目。
决定使用易于开发的亚音速原因以及在高交通环境中工作的潜力。
虽然很少有东西尚未找到/解决使用SubSonic 3
答案 0 :(得分:3)
我为亚音速2.x ActiveRecord编写了一个CacheUtil类。它基于某些人在旧的亚音速论坛上发布的代码。 (这是在删除最后一个论坛之前删除的论坛。这就是软件论坛应该是永久性的原因。)以下是一个缓存Find方法的示例。你可以将它改编为ss3。还有插入,fetchall,删除,清除等。当时Rob Connery说缓存有问题,而且它故意被排除在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;
}
答案 1 :(得分:1)
我wrote a post about how I used caching with SubSonic 2.x。它与3.x不是100%兼容,但概念是相同的。
答案 2 :(得分:1)
我在这里Thread-safe cache libraries for .NET同样回答了这个问题。基本上你需要一个CollectionCacheManager - 然后我在每个类型的顶部添加一个层,并通过这个单独的缓存控制器汇集所有请求,而这些缓存控制器又使用1个collectioncachecontroller。在外层,我混合了纯亚音速,linq,无论什么都符合当时的法案。这就是SubSonic的美妙之处在于它不应该妨碍你。至于存储的proc性能,我会指出Jeff Atwoods在CodingHorror上发表的文章并重新说明你的积蓄。硬件很便宜,内存和数据库都不便宜。就个人而言,我保持数据库超级简单和轻量级,并且更喜欢让我的web服务器缓存内存中的所有内容。数据库服务器可以做很少的工作,这是我喜欢的方式。添加一些额外的负载平衡Web服务器并不像增加数据库吞吐量,群集或分片数据库那么大。 SQL&amp;存储过程也可能非常难以编写和维护。拿你花在你那个时间上的预算,而不是加强你的硬件......记住硬件很便宜,好的开发人员不是。祝你好运!