2010-05-26 4 views
4

Je voudrais avoir un vrai processeur XSLT fonctionnant avec erlang. Quelle serait la meilleure interface, nif ou pilote de port? Selon la documentation nif, les appels nif bloquent l'exécution, ils ne devraient donc pas prendre trop de temps. Le traitement d'un long document XML est-il trop long?Erlang: Interfaçage avec Xalan: pilote de port ou nif?

En outre, je voudrais autoriser les rappels erlang pendant la transformation. Cela semble-t-il possible? Possible avec nif mais pas les pilotes de port ou vice versa?

Je n'ai jamais écrit de C, donc j'ai pensé que ce serait une bonne introduction. Xalan est C++. Je suppose que nif peut travailler avec ça, non?

Répondre

5

Je recommanderais de construire un pilote de port.

La fonctionnalité NIF est un moyen d'ajouter de nouvelles fonctions intégrées au langage et d'accélérer les choses qui seraient trop lentes à implémenter en langage Erlang pur. Les NIF sont considérés comme expérimentaux de toute façon, donc l'interface pourrait changer radicalement dans les versions futures .

L'écriture d'un pilote de port signifie l'implémentation d'une bibliothèque partagée C (ou C++) C (ou C++) qui se comporte comme un processus entier . Cela permet une plus grande flexibilité car vous pouvez communiquer avec d'autres processus lors de la transformation d'un document (rappels ...), etc.

Il n'est même pas nécessaire d'être un pilote. Si vous ne transmettez pas beaucoup de données entre votre programme portuaire et un autre code Erlang, vous pouvez écrire un port simple à la place (c'est plus facile).

+0

Je pense que le port simple est probablement la meilleure idée, certainement compte tenu de mon inexpérience avec C. Obtenir quelque chose de travailler du tout est ma première préoccupation. – mwt

+0

Je suggère de commencer par le guide de l'utilisateur erl_interface –