Multicaster.Distributed.Nats 0.1.12
dotnet add package Multicaster.Distributed.Nats --version 0.1.12
NuGet\Install-Package Multicaster.Distributed.Nats -Version 0.1.12
此命令旨在在 Visual Studio 的包管理器控制台中使用,因为它使用 NuGet 模块的 Install-Package 版本。
<PackageReference Include="Multicaster.Distributed.Nats" Version="0.1.12" />
对于支持 PackageReference 的项目,将此 XML 节点复制到项目文件中以引用包。
paket add Multicaster.Distributed.Nats --version 0.1.12
NuGet 团队不提供对此客户端的支持。请联系其 维护者 以获得支持。
#r "nuget: Multicaster.Distributed.Nats, 0.1.12"
#r 指令可用于 F#Interactive 和 Polyglot Notebooks。将此复制到交互式工具或脚本的源代码中以引用包。
// Install Multicaster.Distributed.Nats as a Cake Addin #addin nuget:?package=Multicaster.Distributed.Nats&version=0.1.12 // Install Multicaster.Distributed.Nats as a Cake Tool #tool nuget:?package=Multicaster.Distributed.Nats&version=0.1.12
NuGet 团队不提供对此客户端的支持。请联系其 维护者 以获得支持。
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>
)
ValueTask AddAsync(TKey key, TReceiver receiver, CancellationToken cancellationToken = default);
ValueTask RemoveAsync(TKey key, CancellationToken cancellationToken = default);
ValueTask<int> CountAsync(CancellationToken cancellationToken = default);
IMulticastSyncGroup<TKey, T>
接口(实现 IMulticastGroup<TKey, T>
)
void Add(TKey key, TReceiver receiver);
void Remove(TKey key);
int Count();
传输和支持的特性
传输 | 多播 | 同步 | Count/CountAsync | 客户端结果 |
---|---|---|---|---|
InMemory | ✔️ | ✔️ | ✔️ | ✔️ |
远程 (InMemory) | ✔️ | ✔️ | ✔️ | ✔️ |
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已计算。 |
-
net6.0
- MessagePack (>= 2.5.140)
- Microsoft.Extensions.Options (>= 8.0.2)
- Multicaster (>= 0.1.12)
- NATS.Net (>= 2.2.2)
-
net8.0
- MessagePack (>= 2.5.140)
- Microsoft.Extensions.Options (>= 8.0.2)
- Multicaster (>= 0.1.12)
- NATS.Net (>= 2.2.2)
NuGet包
此包没有被任何NuGet包使用。
GitHub仓库
此包没有被任何流行的GitHub仓库使用。