2014-10-16 2 views
2

Существуют различные языки обмена - json, ect - которые обеспечивают возможность быстрого и надежного экспорта и анализа данных в общий формат. Это благом между языками, и для него существует Piqi, который в основном генерирует разборные форматы обмена для любого типа, который вы определяете; он автоматизирует процесс написания кода котла (записывает функции, которые читаются в некоторой информации об обмене и создает экземпляр некоторого произвольного типа). В принципе, лучшим вариантом на сегодняшний день является протокол буферов, и я абсолютно хочу, если я иду по маршруту ocaml-rpc, использовать буферы протокола.Как лучше всего открыть библиотеку ocaml на других языках?

Было бы неплохо, если бы был какой-то декларативный шаблон для управления экспозицией функции, так что библиотеку ocaml можно было бы получить через некоторую среду (например, RPC или сопоставить функцию с URL-адресом с кодировкой для аргументов).

Представьте, что вы предлагаете библиотеку как услугу; где вы не хотите или не можете создавать фактические привязки между каждой отдельной парой языков. Но серверы и синтаксический анализ данных уже были написаны ... так что не было бы какого-то способа интегрировать эти два, и просто указать, какие функции должны быть раскрыты и где/как?

Наконец, мне кажется, что протокольные буферы - это механизм, с помощью которого вы можете быстро кодировать/декодировать данные, но не транспортный механизм ... есть ли какая-то спецификация ocaml-RPC или некоторая ocaml-библиотека RPC? Разве не существуют различные протоколы RPC (и ergo, если я попытаюсь указать два языка, используя протоколы diff друг на друга, добиться отказа)? Кроме того, серверный механизм, который ожидает и принимает вызовы RPC, является (возможно) другим модулем (?)

Как это достичь?

ответ

0

Чтобы обновить это, последние усилия в рамках проекта piqi направлены на создание рабочей службы OCaml RPC. Из этого можно было бы легко определить, какие функции выставлять на конце службы RPC, а выбор целевой функции на стороне клиента должен позволить некоторому механизированному средству разрешить выбор этих открытых функций.

В настоящее время эта система RPC для ocaml облегчает межязычный обмен данными, которые могут быть восстановлены парсерами с использованием протобуферов; он находится в разработке и все еще being discussed here

0

Я думаю, что ocaml-rpc библиотека соответствует вашим требованиям. Он может вызывать функции сериализации, а также может генерировать код клиента и сервера. Интересная часть состоит в том, что они используют OCaml в качестве языка IDL. Например, это определение функции rpc:

external rpc2 : ?opt:string -> variant -> unit = "" 

Из которых будет определен сервер и клиент functorized код, который будет заботиться о транспортировке сортировочных и demarshaling данных, так что вам нужно работать только с чистыми типами данных OCaml.

Проблема с этой библиотекой заключается в том, что она едва документирована, поэтому вам может быть трудно ее использовать.

Кроме того, как теперь я знаю, что вы занимаетесь BAP, я хотел бы обратить ваше внимание на новый BAP 1.x, который будет готов в ближайшее время, и у него будут привязки, которые позволят вызвать его из любой язык, хотя в настоящее время мы в основном нацелены на python.

+0

Мне нужен какой-либо другой язык для доступа к службе ocaml, поэтому я упомянул REST, в частности, я говорил о способах сделать мою библиотеку доступной по сети самым простым способом. –

+0

@AdamMiller, я изменил свой ответ, так как теперь я понимаю ваши требования. Надеюсь, это поможет вам. – ivg

+0

Ah man, bap 1.x? Я хотел помочь и освободить свой код в каждом из piqi и bap для правильной модульности, но я уже использовал piqi для предоставления бэка. Теперь вопрос освобождения его для других. Есть ли способ помочь? –

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