有谁知道.NET 的任何缓存提供程序支持直接按键输入/输出流数据,而不是序列化/反序列化对象?
我宁愿希望 AppFabric (Velocity) 能,但它似乎只处理像内置 ASP.NET 缓存这样的对象。
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(...);
您可以在自己的 WCF 服务中轻松实现这一点(我认为这就是您想要做的。)
要么让客户端定期轮询新数据,要么实现回调模式以在新数据到达时将新数据发送给订阅的客户端,这取决于它们也订阅了哪些键。
否则,您可以让每个客户端通过套接字连接到您的服务,并将您从源接收到的数据重复到这些套接字,加上自己保留数据,这样如果新客户端连接,您可以将全部数据发送给他们,在它们易于消化的块中。
另外,您可以将应用程序设计为不关心它正在流式传输什么数据,只关心它正在流式传输 blob,并将其用于将来的其他应用程序。
编辑:您始终可以使用内置于 WCF 的流式传输向您的用户流式传输,但仍然无法解决您从源检索数据的问题,除非他们也实施它。