Я много искал, извиняюсь, если пропустил что-то очевидное. И спасибо за чтение нижеследующего текста ниже.
У меня есть стороннее приложение (читай: нет доступа / изменения источника) здесь. Он состоит из сервера (службы Windows) и API, который взаимодействует с сервером через удаленное взаимодействие.
По нескольким причинам я хотел бы представить этот API поверх WCF (см. Тему: одна из причин - клиент WCF).
Проблема в том, что API
- неизменяемый (следует правилу третьей стороны)
- без использования самого WCF (он является сериализуемым / MarshalByRef, где это необходимо для удаленного взаимодействия)
- с использованием большого количества интерфейсов и внутренних классов реализации
После 1 я не могу использовать (довольно навязчивые) атрибуты WCF самостоятельно.
После 2 сам API можно использовать «по проводам» (они поддерживают удаленное взаимодействие через TCP и HTTP), но удаленное взаимодействие мне не подходит.
После 3 у меня есть в основном интерфейсы (которые WCF не будет хорошо обрабатывать, не может (де) сериализовать). Классы реализации могут быть отправлены, но я не могу получить к ним доступ.
Общее использование этого API основано на одном интерфейсе (и его элементах / свойствах), поэтому типичное использование похоже на
var entryPoint = new ApiClientEntryPoint();
entryPoint.SomeMethodCall();
entryPoint.PropertyExposingAnInterface.SomeOtherMethodCall();
и т. Д.
Что я действительно хотел бы сделать, так это сгенерировать (с минимальными усилиями / кодом, насколько это возможно) прокси (не в обычном смысле WCF), который я предоставляю через WCF и который сериализует эту иерархию, отображая каждый вызов / свойство в клиент к реальной вещи на сервере.
Ближайший, к которому я так далеко, наткнулся на этот проект , но мне интересно, есть ли еще / другие доступные инструменты, которые снимают среднюю или большую часть этой работы с моего плеча.
Если есть какие-либо общие советы, более эффективные подходы, чтобы обернуть что-то существующее и неизменное в WCF, пожалуйста, поделитесь.