Наиболее совместимый протокол межпроцессного взаимодействия
Я работаю над мультимедийным приложением, для которого я хотел бы предоставить внешнюю библиотеку API, которая позволила бы другому приложению связываться с моей информацией о состоянии запроса. Мое приложение написано на C#, и API DLL будет такой же. Первоначально я думал просто использовать WCF и именованные каналы, поскольку это обеспечило бы чрезвычайно простой способ кодирования всего интерфейса.
Тем не менее, я понял, что выполнение этого в значительной степени помешает любым другим языкам или платформам взаимодействовать с приложением, если я когда-либо захочу сделать, например, Android или Web-пульт для него.
Итак, какой протокол я мог бы использовать, который позволял бы быстрый и простой интерфейс из моего кода C#, но также позволял бы писать API на других платформах.
Основные требования:
- Локальная и удаленная связь
- Низкие накладные расходы
- Процедурные вызовы
- Передача файлов (для отправки медиа)
- Ранее существовавший C#, библиотека с открытым исходным кодом была бы хороша.
Я рассмотрел множество вариантов, ранее использовал XML-RPC и JSON-RPC, но хотел бы знать, что сообщество считает лучшим вариантом.
1 ответ
Я думаю, что использование 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