支持流式传输的.NET缓存提供程序?

3

有没有人知道为.NET提供支持按键直接流入/流出数据的缓存提供程序,而不是对对象进行序列化/反序列化的呢?

我原本希望AppFabric(Velocity)能够做到这一点,但它似乎只处理类似于内置ASP.NET缓存的对象。


你试图在流和序列化之间做出什么区别?无论如何,要将对象流化,你都需要将其转换为字节。 - Adam Houldsworth
你能澄清一下你想在这里看到的使用类型吗? - Marc Gravell
抱歉 - 我的用例是针对原始二进制数据 - 金融数据的字节数组 - 它们通过 WCF 服务从非常慢的后端系统流式传输到数百个用户。每个缓冲区可以高达100MB+(尽管通常小于10MB),因此我们希望将它们流式传输到客户端,而不是一次性在内存中缓冲整个内容。一个快速的分布式文件系统也可以在这里起作用 - 我们看了看 Hadoop HDFS,但似乎在 Windows 下支持不太好。 - Richard Dingwall
2个回答

1

NCache Enterprise 是我能找到的唯一支持流式传输的 .NET 缓存提供程序:

// Insert
using (var cacheStream = cache.GetCacheStream("mykey", StreamMode.Write))
    cacheStream.Write(...);

// Retrieve
using (var cacheStream = cache.GetCacheStream("mykey", StreamMode.Read))
    cacheStream.Read(...);

0

你可以在 WCF 服务中很容易地自己实现这一点(我假设这是你想要做的)。

要么让客户端定期轮询新数据,要么实现回调模式将新数据发送到已订阅客户端,具体取决于它们订阅的键。

否则,您可以让每个客户端通过套接字连接到您的服务,并将您从源接收的数据重复到这些套接字中并保留数据本身,以便如果新客户端连接,则可以将整个数据流以易于消化的块发送给他们。

此外,您可以设计应用程序不关心正在流式传输的数据是什么,只需流式传输一个 blob,并将其用于将来的其他应用程序。

编辑:您始终可以使用内置于 WCF 中的流传输向用户进行流传输,但除非他们也实施了,否则仍无法解决检索数据源的问题。


我们的服务已经使用了WCF流传输来向客户端传递blob。我们只需要在其后面加上一些缓存提供程序,同时也支持流。 - Richard Dingwall

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接