我不了解zeromq的回购策略

时间:2019-02-05 05:08:17

标签: zeromq

zeromq(https://github.com/zeromq/libzmq)似乎是用C ++编写的,但也为C ++(https://github.com/zeromq/cppzmq)提供了单独的绑定。

制作libzmq时,它仅在其构建目录中提供以下文件:

String url = ele.getAttribute("href") //to get the url of the particular element 

并且没有头文件。

在单独的存储库中提供绑定和库有什么好处?即使绑定很多,也不应该总是包含一些标准绑定吗?

2 个答案:

答案 0 :(得分:1)

ZMQ用C ++实现,但不提供类。该API用C语言编写,具有函数zmq_sendzmq_poll等,为套接字和上下文使用void *参数。

cppzmq是libzmq的C ++绑定,主要定义类,因此无需编写:  int zmq_send (void *s_, const void *buf_, size_t len_, int flags_);  你会写:

zmq::socket_t s; s.send(zmq::message_t);

它使您可以使用面向对象的设计并使语法更清晰(IMO)。

答案 1 :(得分:1)

libzmq在内部用C ++实现,仅公开了C API / ABI,以确保API / ABI的广泛可用性和长期稳定性。使用C API / ABI可以轻松地提供其他语言(如cppzmq)或更高级别的库(如czmq)的直接绑定,该库又具有C API / ABI和大量的语言绑定。

此外,以不影响现有用户的方式来发展API / ABI相对容易。

请注意,此保证仅适用于声明为STABLE的API / ABI部分。较新的功能会一直拖到成熟为止。

公开C ++ API将使其他语言的绑定更加困难,并且难以确保ABI稳定性。