Est-ce que quelqu'un connaît les fournisseurs de cache pour .NET qui prennent en charge la transmission directe des données par clé, plutôt que la sérialisation/désérialisation des objets? J'espérais plutôt qu'AppFabric (Velocity) le ferait, mais il ne semble traiter que des objets comme le cache ASP.NET intégré.. Les fournisseurs de cache .NET prenant en charge le streaming?
Répondre
NCache Enterprise est le seul fournisseur de cache .NET je peux trouver qui prend en charge le streaming:
// Insert
using (var cacheStream = cache.GetCacheStream("mykey", StreamMode.Write))
cacheStream.Write(...);
// Retrieve
using (var cacheStream = cache.GetCacheStream("mykey", StreamMode.Read))
cacheStream.Read(...);
Vous pouvez facilement mettre en œuvre vous-même dans votre service WCF (je suppose que est ce que vous vouliez faire.)
ont soit le vote rapide des clients pour les nouvelles données périodiquement, ou mettre en œuvre le callback pattern d'envoyer de nouvelles données à la clients abonnés à mesure qu'ils arrivent, en fonction des clés auxquelles ils sont également abonnés.
Sinon, vous pourriez avoir chaque client se connecter à votre service via une socket, et répétez les données que vous recevez de la source à ces sockets, plus garder les données vous-même si un nouveau client se connecte, vous pouvez envoyer données à eux, dans leurs morceaux faciles à digérer.
De plus, vous pouvez concevoir l'application sans se soucier des données qu'elle diffuse, simplement qu'elle diffuse un blob et l'utilise pour d'autres applications dans le futur. Edit: Vous pouvez toujours utiliser la build streaming transport dans WCF pour diffuser à vos utilisateurs, mais ne résoudrait toujours pas votre problème de récupération des données de la source, sauf si elles devaient également l'implémenter.
Notre service utilise déjà le transport en flux WCF de blobs vers les clients. Nous avons juste besoin de mettre un fournisseur de cache derrière, qui supporte aussi les flux. –
Quelle différence vous essayez de faire entre le streaming et sérialisation? Pour diffuser un objet, vous devrez le convertir en octets de toute façon. –
Pouvez-vous préciser le type d'utilisation que vous aimeriez voir ici? –
Désolé - mon cas d'utilisation concerne les données binaires brutes - les tableaux d'octets de données financières - qui proviennent d'un système dorsal très lent, qui transitent par des centaines d'utilisateurs via un service WCF. Chaque buffer peut avoir jusqu'à 100MB + (bien que généralement moins de 10MB), donc nous voulons les diffuser aux clients plutôt que de tout mettre en mémoire tampon en même temps. Un système de fichiers à distribution rapide pourrait également fonctionner ici - nous avons regardé Hadoop HDFS mais il ne semble pas très bien supporté sous Windows. –