Erlang:与 Xalan 接口:端口驱动程序还是 nif?
我想要一个真正的 XSLT 处理器与 erlang 一起工作。 nif 或端口驱动程序哪个是最好的接口?根据 nif 文档,nif 调用会阻塞运行时,因此不会花费很长时间。处理长 xml 文档是否太长?
另外,我想在转换期间允许 erlang 回调。这看起来可能吗?可以使用 nif 但不能使用端口驱动程序,反之亦然?
我从未写过任何 C 语言,所以我认为这将是一个很好的介绍。 Xalan 是 C++。我想 nif 可以用它,对吗?
I'd like to get a real XSLT processor working with erlang. Which would be the best interface, nif or port driver? According to the nif documentation, nif calls block the runtime, so they should not take long. Is processing a long xml document too long?
Also, I'd like to allow erlang callbacks during the transformation. Does that seem possible? Possible with nif but not port drivers or vice versa?
I've never written any C, so I figured this would be good introduction. Xalan is C++. I assume nif can work with that, right?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我建议构建一个端口驱动程序。
NIF 工具是一种向语言添加新的内置函数的方法
并加速那些在纯 Erlang 中实现起来太慢的事情。
NIF 无论如何都被认为是实验性的,因此接口可能
在未来的版本中将发生根本性的改变。
编写端口驱动程序意味着实现
一个 C(或 C++)共享库,其行为类似于整个 erlang 进程。
这提供了更大的灵活性,因为您可以与
转换文档时的其他进程(回调...)等。
它甚至不必是驱动程序。如果你没有通过很多
您的端口程序和您可能的其他 Erlang 代码之间的数据
考虑编写一个普通端口(这更容易)。
I would recommend building a port driver.
The NIF facility is a way to add new built-in functions to the language
and speed up things that would be too slow to implement in pure Erlang.
NIFs are considered experimental anyway, so the interface might
change radically in future releases.
Writing a port driver means implementing
a C (or C++) shared library that behaves like a whole erlang process.
This allows for greater flexibility as you can communicate with
other processes while transforming a document (callbacks...), etc.
It doesn't even have to be a driver. If you don't pass lots of
data between your port program and other Erlang code you might
consider writing a plain port instead (it's easier).