[zeromq-dev] I've written a completely new C# API for ZeroMQ

Michael Compton michael.compton at littleedge.co.uk
Tue Dec 21 20:04:39 CET 2010


You do know that clrzmq2 supported all of what you mentioned besides the
reference counting.

If you had of submitted a patch for clrzmq2 it would have been very
welcome.

On Tue, 2010-12-21 at 09:00 -0200, Vinicius Chiele wrote:
> Great job Alex, your implementation is very clean and simple, I liked
> it.
> 
> Vinicius Chiele
> 
> 2010/12/21 Alex Forster <alex at alexforster.com>
>         I have quite a few gripes with clrzmq and clrzmq2, and NZMQ is
>         incomplete in several areas, so over a few weekends this past
>         month I've written a new C# API for ZeroMQ based on the 2.0.10
>         release of zmq.h.
>         
>         
>         ZeroMQ Interop v0.8.190.10354 (beta)
>         http://zeromq.codeplex.com
>         
>         
>         * Feature-complete
>         * MIT licensed
>         * Targeted at both Microsoft and Mono .NET 2.0 CLRs (though it
>         does require a 3.5 compatible compiler, basically for lambda
>         syntax)
>         * Includes binaries for both 32 and 64bit platforms (without
>         any #ifdefs)
>         
>         
>         Here's an example using Pub/Sub sockets-
>         
>         
>         
>         > // Set up a publisher.
>         > 
>         > 
>         > var publisher = new ZmqPublishSocket {
>         > Identity = Guid.NewGuid().ToByteArray(),
>         > RecoverySeconds = 10
>         > };
>         > 
>         > 
>         > publisher.Bind( address: "tcp://127.0.0.1:9292" );
>         > 
>         > 
>         > // Set up a subscriber.
>         > 
>         > 
>         > var subscriber = new ZmqSubscribeSocket();
>         > 
>         > 
>         > subscriber.Connect( address: "tcp://127.0.0.1:9292" );
>         > 
>         > 
>         > subscriber.Subscribe( prefix: "" ); // subscribe to all
>         > messages
>         > 
>         > 
>         > // Add a handler to the subscriber's OnReceive event
>         > 
>         > 
>         > subscriber.OnReceive += () => {
>         > 
>         > 
>         > String message;
>         > subscriber.Receive( out message, nonblocking: true );
>         > 
>         > 
>         > Console.WriteLine( message );
>         > };
>         > 
>         > 
>         > // Publish a message to all subscribers.
>         > 
>         > 
>         > publisher.Send( "Hello world!" );
>         
>         
>         A few things that make this sample stand out from the other
>         two ZeroMQ C# libraries-
>         
>         
>         * There's no need to manage your ZeroMQ context; it's taken
>         care of on a per-AppDomain basis using refcounting.
>         * There is no "message" object because it provides no added
>         benefit in C#. Messages are simply Byte[]s, with overloads
>         throughout the API that accept Strings.
>         * First-class support for .NET events programming, implemented
>         using zmq_poll() (but that's completely transparent to the
>         user).
>         
>         
>         I'd love some feedback. I'm just starting to use it in a
>         project I'm working on, and so far it all seems to be working
>         smoothly and at high throughput, but I'm releasing it as
>         "beta" because I don't feel that it has enough real-world
>         experience yet.
>         
>         
>         Alex Forster
>         
>         _______________________________________________
>         zeromq-dev mailing list
>         zeromq-dev at lists.zeromq.org
>         http://lists.zeromq.org/mailman/listinfo/zeromq-dev
>         
> 
> 
> _______________________________________________
> zeromq-dev mailing list
> zeromq-dev at lists.zeromq.org
> http://lists.zeromq.org/mailman/listinfo/zeromq-dev





More information about the zeromq-dev mailing list