Наиболее совместимый протокол межпроцессного взаимодействия - PullRequest
1 голос
/ 14 августа 2011

Я работаю над мультимедийным приложением, для которого я хотел бы предоставить внешнюю библиотеку API, которая позволила бы другому приложению связываться с моей информацией о состоянии запроса.Мое приложение написано на C #, и API DLL будет такой же.Первоначально я думал просто использовать WCF и именованные каналы, поскольку это обеспечило бы чрезвычайно простой способ кодирования всего интерфейса.

Однако я понял, что выполнение этого в значительной степени помешает любым другим языкам или платформам взаимодействовать с приложением, если я когда-либо захочу сделать, например, Android или Web-пульт для него.

Итак, какой протокол я мог бы использовать, который позволял бы быстрый и простой интерфейс из моего кода C #, но также позволял бы писать API на других платформах.

Основные требования:

  • Локальная и удаленная связь
  • Низкие издержки
  • Вызовы процедур
  • Передача файлов (для отправки мультимедиа)
  • Предварительно существующий C #, библиотека с открытым исходным кодом будетбудьте добры.

Я уже рассмотрел множество вариантов, ранее использовал XML-RPC и JSON-RPC, но хотел бы знать, что сообщество считает лучшим вариантом.

1 Ответ

2 голосов
/ 14 августа 2011

Я думаю, что использование WCF - лучший способ делать то, что вы хотите. Он будет прост в обслуживании, охватит все ваши требования и будет легко расширяться. Только не ограничивайте доступ к вашему API только по net.pipe. Я думаю, что вы должны использовать net.pipe, net.tcp и, возможно, базовый http в качестве основных привязок. Я имею в виду несколько конечных точек для каждого сервиса. Таким образом, клиентское приложение, независимо от того, на каком языке оно написано, сможет выбрать, какую привязку использовать для доступа к вашему API-серверу.

Например:

  • C # клиентское приложение на том же компьютере - используйте net.pipe
  • клиентское приложение PHP в сети - используйте базовый http
  • Клиентское приложение Java на другом компьютере - используйте net.tcp

Как пример:

http://www.kevingao.net/wcf-java-interop/java-client-and-wcf-server.html

...