Multicaster.Distributed.Redis 0.1.12

dotnet add package Multicaster.Distributed.Redis --version 0.1.12                
NuGet\Install-Package Multicaster.Distributed.Redis -Version 0.1.12                
此命令旨在在 Visual Studio 的包管理器控制台中使用,因为它使用 NuGet 模块的 Install-Package 版本。
<PackageReference Include="Multicaster.Distributed.Redis" Version="0.1.12" />                
对于支持 包引用 的项目,请将此 XML 节复制到项目文件中以引用包。
paket add Multicaster.Distributed.Redis --version 0.1.12                
#r "nuget: Multicaster.Distributed.Redis, 0.1.12"                
#r 指令可用于 F# Interactive 和 Polyglot Notebooks。请将此内容复制到交互式工具或脚本的源代码中,以引用包。
// Install Multicaster.Distributed.Redis as a Cake Addin
#addin nuget:?package=Multicaster.Distributed.Redis&version=0.1.12

// Install Multicaster.Distributed.Redis as a Cake Tool
#tool nuget:?package=Multicaster.Distributed.Redis&version=0.1.12                

Multicaster

此框架提供了一个代理,可以透明地通过接口调用多个 POCO 实例或远程客户端的方法。

例如,对 IGreeter.Hello 的单个调用可以调用多个对象的方法或将调用广播到使用 MagicOnion 或 SignalR 等远程客户端。

该框架结合了组的概念,将接收者(目标)捆绑在一起以实现透明调用,允许灵活地将接收者添加或从组中删除,从而便于管理。

使用方法

内存中(原始 CLR 对象)

public interface IGreeterReceiver
{
    void OnMessage(string sender, string message);
}

public class GreeterReceiver(string name) : IGreeterReceiver
{
    public void OnMessage(string sender, string message)
        => Console.WriteLine($"[{name}] <{sender}> {message}")
}
// Create receivers.
var receiverA = new GreeterReceiver("A");
var receiverIdA = Guid.NewGuid();
var receiverB = new GreeterReceiver("B");
var receiverIdB = Guid.NewGuid();
var receiverC = new GreeterReceiver("C");
var receiverIdC = Guid.NewGuid();

// Create a in-memory group provider.
var groupProvider = new InMemoryGroupProvider(DynamicInMemoryProxyFactory.Instance);

// Create a group and add receivers to the group.
var group = groupProvider.GetOrAddSynchronousGroup<Guid, IGreeterReceiver>("MyGroup");
group.Add(receiverIdA, receiverA);
group.Add(receiverIdB, receiverB);
group.Add(receiverIdC, receiverC);

// Call receivers via proxy.
group.All.OnMessage("System", "Hello");
group.Except([receiverIdA]).OnMessage("System", "Hello without A");

// Call the receiver directly. (Normal method call)
receiverA.OnMessage("DirectMessage", "Sent a message to the receiver directly.");
输出
[A] <System> Hello
[B] <System> Hello
[C] <System> Hello
[B] <System> Hello without A
[C] <System> Hello without A
[A] <DirectMessage> Sent a message to the receiver directly.

API

IMulticastGroupProvider 界面

  • GetOrAddGroup<TKey, TReceiver>(string name);
  • GetOrAddSynchronousGroup<TKey, TReceiver>(string name);

IMulticastGroup<TKey, T> 界面

  • TReceiver All { get; }
  • TReceiver Except(ImmutableArray<TKey> excludes);
  • TReceiver Only(ImmutableArray<TKey> targets);
  • TReceiver Single(TKey target);
  • void Dispose()
    • 从组提供程序注销组并释放。

IMulticastAsyncGroup<TKey, T> 界面(实现 IMulticastGroup<TKey, T>

  • AddAsync(TKey key, TReceiver receiver, CancellationToken cancellationToken = default);
  • RemoveAsync(TKey key, CancellationToken cancellationToken = default);
  • CountAsync(CancellationToken cancellationToken = default);

IMulticastSyncGroup<TKey, T> 接口(实现了 IMulticastGroup<TKey, T>

  • void Add(TKey key, TReceiver receiver);
  • void Remove(TKey key);
  • int Count();

传输方式和支持的功能

传输方式 组播 同步 计数/异步计数 客户端结果
内存中 ✔️ ✔️ ✔️ ✔️
远程(内存中) ✔️ ✔️ ✔️ ✔️
Redis ✔️ ✔️ - -
NATS ✔️ ✔️ - -
产品 兼容的和额外的计算目标框架版本。
.NET net6.0 是兼容的。 net6.0-android 是计算的。 net6.0-ios 是计算的。 net6.0-maccatalyst 是计算的。 net6.0-macos 是计算的。 net6.0-tvos 是计算的。 net6.0-windows 是计算的。 net7.0 是计算的。 net7.0-android 是计算的。 net7.0-ios 是计算的。 net7.0-maccatalyst 是计算的。 net7.0-macos 是计算的。 net7.0-tvos 是计算的。 net7.0-windows 是计算的。 net8.0 是兼容的。 net8.0-android 是计算的。 net8.0-browser 是计算的。 net8.0-ios 是计算的。 net8.0-maccatalyst 是计算的。 net8.0-macos 是计算的。 net8.0-tvos 是计算的。 net8.0-windows 是计算的。
兼容的目标框架
包含的目标框架(在包中)
了解更多关于 目标框架.NET Standard 的信息。

NuGet 包 (1)

显示顶层 1 个依赖于 Multicaster.Distributed.Redis 的 NuGet 包

下载
MagicOnion.Server.Redis

用于 MagicOnion 的 Redis 背平面。

GitHub 仓库

本包未被任何流行的GitHub仓库使用。

版本 下载 最后一个更新
0.1.12 214 7/11/2024
0.1.11 287 6/17/2024
0.1.10 67 6/12/2024
0.1.9 114 6/7/2024
0.1.8 71 6/7/2024
0.1.7 61 6/3/2024
0.1.6 74 6/3/2024
0.1.5 88 5/30/2024
0.1.4 86 5/30/2024
0.1.3 97 5/30/2024
0.1.2 77 5/29/2024
0.1.1 98 5/29/2024
0.1.0 79 5/28/2024