C#

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