C#
对于 C# 开发者,有两种选择:NetMQ,它是 zeromq 到 C# 的移植;或者 clrzmq4,它是 libzmq 的 C# 绑定。
NetMQ 是推荐的选择,它实现了曲线加密 (curve encryption) (https://github.com/zeromq/netmq/blob/master/src/NetMQ.Tests/CurveTests.cs))。
NetMQ
Github | https://github.com/zeromq/netmq |
---|---|
文档 | https://netmq.readthedocs.io/en/latest/ |
Nuget | https://nuget.net.cn/packages/NetMQ |
请求-响应
客户端
using (var client = new RequestSocket())
{
client.Connect("tcp://127.0.0.1:5556");
client.SendFrame("Hello");
var msg = client.ReceiveFrameString();
Console.WriteLine("From Server: {0}", msg);
}
服务器
using (var server = new ResponseSocket())
{
server.Bind("tcp://*:5556");
string msg = server.ReceiveFrameString();
Console.WriteLine("From Client: {0}", msg);
server.SendFrame("World");
}
发布-订阅
订阅者
using (var subscriber = new SubscriberSocket())
{
subscriber.Connect("tcp://127.0.0.1:5556");
subscriber.Subscribe("A");
while (true)
{
var topic = subscriber.ReceiveFrameString();
var msg = subscriber.ReceiveFrameString();
Console.WriteLine("From Publisher: {0} {1}", topic, msg);
}
}
发布者
using (var publisher = new PublisherSocket())
{
publisher.Bind("tcp://*:5556");
int i = 0;
while (true)
{
publisher
.SendMoreFrame("A") // Topic
.SendFrame(i.ToString()); // Message
i++;
Thread.Sleep(1000);
}
}
clrzmq4
Github | https://github.com/zeromq/clrzmq4 |
---|---|
Nuget | https://nuget.net.cn/packages/ZeroMQ/ |
包中包含适用于 Windows 的 libzmq,对于 OSX 和 Linux,你需要安装 libzmq。