小编Mat*_*t G的帖子

为什么Reactive Extensions将HTTP GET发送到microsoft ON COMPILATION?

我从此站点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在调试时编译它),它会像这样打电话回家.实际上并不是这样做的运行时行为.

c# linqpad system.reactive

11
推荐指数
1
解决办法
612
查看次数

.Net简单的内存缓存

简而言之,.Net生态系统中存在哪些SIMPLE内存缓存?

我在寻找的是:

  • 无配置(除了简单的API调用).我不想搞乱外部配置文件,因为它们只会使部署复杂化.
  • 相同进程(不是某些外部进程或服务器).最好像创建一样容易
    var myCache = new SimpleCache(1024 * 1024 * 100); // 100 MB
  • 指定的内存限制
  • 根据最少使用情况从缓存中清除的项目
  • 基于时间的到期(不是必需的,但在其他情况下可能有用)
  • 适用于.Net 3.5

我已经研究过这些选项:

  • ASP.Net System.Web.Caching
    • 它的API不支持对缓存大小的任何控制,也不支持基于使用的优先级.因此,当它决定是否有足够的内存压力来清空缓存时,你完全处于怜悯之中.
  • System.Runtime.Caching
  • Microsoft企业库 - 缓存块
    • 除了拥有重量级的声誉之外,我不喜欢使用XML文件或app.config进行配置.此外,虽然它支持基于存储的对象的NUMBER来限制高速缓存的大小,但是它没有用于限制那些对象的SIZE的机制.
  • NCACHE
    • 对于我想要的用例可能有点过分,但最重要的是它是一个付费产品,这不是我想要处理的东西(与我相比,我只需要在一两天内写一个).与往常一样,其快递版具有使用限制,不鼓励其用于任何生产目的.
  • Memcached的
    • 与我想要的完全相反(外部分布式流程)

我正在使用Google Protocol Buffers(protobuf-net),因此我对每个项目的内存占用量进行了相对准确的估算.我正在缓存从数据库访问返回的数据,但我不想使用正式的ORM(我实际上正在使用PetaPoco,但这不是重点).

在这个阶段,我计划实现我自己的缓存,使用双链表和哈希(字典)来提供一旦达到缓存限制就从缓存中删除最近最少使用的项.但是,在我推出自己的选项之前,我想查看是否有人知道任何合适的选项.

.net caching

8
推荐指数
1
解决办法
3983
查看次数

标签 统计

.net ×1

c# ×1

caching ×1

linqpad ×1

system.reactive ×1