2010-05-26 3 views
4

Я хотел бы получить настоящий XSLT-процессор, работающий с erlang. Какой будет лучший интерфейс, nif или драйвер порта? Согласно документации nif, никакие вызовы блокируют время выполнения, поэтому они не должны занимать много времени. Является ли обработка длинного XML-документа слишком длинным?Erlang: Взаимодействие с Xalan: драйвер порта или nif?

Кроме того, я хотел бы разрешить обратные вызовы erlang во время преобразования. Кажется ли это возможным? Возможно с nif, но не с драйверами портов или наоборот?

Я никогда не писал ни одного C, поэтому я решил, что это будет хорошее введение. Xalan - это C++. Я полагаю, что ниф может работать с этим, верно?

ответ

5

Я бы рекомендовал построить портовый драйвер.

Объект NIF - это способ добавить новые встроенные функции в язык и ускорить работу, которая будет слишком медленной для реализации в чистом Erlang. NIFs все равно считаются экспериментальными, поэтому в будущих версиях интерфейс может радикально измениться в .

Написание драйвера порта означает реализацию C (или C++) общей библиотеки, которая ведет себя как целое erlang процесс. Это обеспечивает большую гибкость, поскольку вы можете общаться с другими процессами при преобразовании документа (обратные вызовы ...) и т. Д.

Это даже не должен быть водитель. Если вы не передадите много данных между программой вашего порта и другим кодом Erlang, вы можете рассмотреть возможность написания простого порта (это проще).

+0

Я думаю, что простой порт - это, пожалуй, лучшая идея, конечно, учитывая мою неопытность с C. Получение всего, что работает вообще, является моей первой заботой. – mwt

+0

Я предлагаю начать с руководства пользователя erl_interface –

Смежные вопросы