我从此站点http://msdn.microsoft.com/en-us/data/gg577610下载了Stable版本的Reactive Extensions v1.0 SP1 ,我在.Net Framework 3.5环境中使用它(Visual Studio 2008)
我尝试在项目中使用Reactive Extensions,并注意到启动速度非常慢.去LinqPad,我输入了以下"C#Expression":
(new int[0]).ToObservable()
Run Code Online (Sandbox Code Playgroud)
我还引用了System.Reactive.dll并导入了System.Reactive.Linq命名空间.当我运行它时,编译和运行需要12秒.
我打开了Process Monitor并监控了LinqPad.我发现它正在向124.155.222.226或124.155.22.59发送HTTP请求.(当你打开它时,FYI LinqPad本身也会打电话给157.55.161.150).使用WireShark,我注意到它正在发送HTTP GET请求
http://crl.microsoft.com/pki/crl/products/MicCodSigPCA_08-31-2010.crl
Run Code Online (Sandbox Code Playgroud)
当代码使用Reactive.Extensions编译时,有谁知道为什么它会像这样打电话回家?此外,还有什么方法可以关闭它,因为在开发应用程序(并在生产中运行)时,给家里电话延迟12秒特别不方便.
注意:当您编译代码时(或JIT在调试时编译它),它会像这样打电话回家.实际上并不是这样做的运行时行为.
简而言之,.Net生态系统中存在哪些SIMPLE内存缓存?
我在寻找的是:
var myCache = new SimpleCache(1024 * 1024 * 100); // 100 MB我已经研究过这些选项:
我正在使用Google Protocol Buffers(protobuf-net),因此我对每个项目的内存占用量进行了相对准确的估算.我正在缓存从数据库访问返回的数据,但我不想使用正式的ORM(我实际上正在使用PetaPoco,但这不是重点).
在这个阶段,我计划实现我自己的缓存,使用双链表和哈希(字典)来提供一旦达到缓存限制就从缓存中删除最近最少使用的项.但是,在我推出自己的选项之前,我想查看是否有人知道任何合适的选项.