#rest #http #com #idl
#rest #http #com #idl
Вопрос:
Я работаю над проектом, в котором мы поддерживаем объектно-ориентированные COM интерфейсы, определенные в файлах языка определения интерфейса (IDL). Это обеспечивает простое и эффективное использование C , C # и Python (с использованием comtypes
) при запуске на том же компьютере с Windows, что и поставщик услуг. Однако в настоящее время связь привязана к одному компьютеру.
В настоящее время моя организация сталкивается со случаями использования, когда было бы полезно иметь возможность вызывать одни и те же интерфейсы удаленно с другого компьютера. Я понимаю, что HTTP / REST в настоящее время является «стандартным» способом предоставления удаленных API-интерфейсов по сети. Поэтому меня интересует любой SW, который мог бы упростить процесс создания HTTP / REST (или аналогичного) сервера-оболочки существующих интерфейсов COM / IDL. Я полностью осознаю, что сгенерированные интерфейсы, вероятно, не будут соответствовать рекомендациям REST «best practice». Просто хочу автоматически сгенерированное решение, чтобы избежать необходимости вручную поддерживать API-интерфейсы оболочки самостоятельно.
Комментарии:
1. Обычный способ удаленного доступа к COM-компонентам — через DCOM. Если удаленная система понимает COM, возможно, стоит использовать DCOM для удаленного доступа
2. Пожалуйста, поправьте меня, если я ошибаюсь, но я боюсь, что DCOM может ограничить совместимость для клиентов, отличных от Windows, по сравнению с HTTP / REST. Кроме того, брандмауэры могут вызвать проблемы, если порт DCOM не открыт. Поэтому я бы предпочел переносимую технологию API, если это возможно.
3. COM / DCOM использует RPC в качестве транспортного механизма. Когда-то (~ 20 лет назад) существовал способ предоставлять DCOM через HTTP, используя «Поддержку RPC через HTTP-прокси», которая есть в Windows. Я даже не уверен, что это все еще можно включить / использовать, поскольку я могу найти документ только для удаления этого: support.microsoft.com/en-us/help/825819 /… . Другими словами, в Windows для вас в этой области нет ничего современного, встроенного, AFAIK.