Сообщение .Net Core, AppDomain, WCF, RPC маршалинг по Tcp/Ip свой вело от 19.02.2017 14:30
Изменено 06.03.2017 7:20 Serginio1
Сейчас в .Net Core нет AppDomain и RPC .
Но RPC можно легко сделать на базе
Кроссплатформенное использование классов .Net из неуправляемого кода. Или аналог IDispatch на Linux
CEF, ES6, Angular 2, TypeScript использование классов .Net Core. Создание кроссплатформенного GUI для .Net с помощью CEF
Там применяется аналог COM и структура типа Variant
Несложно их запаковать и распаковать в Stream
И используя аналог
.Net Core, обмен с 1C по TCP/IP между различными устройствами
На стороне клиента использовать DinamicObject с финализатором.
Можно использовать События по аналогии
CEF, Angular 2 использование событий классов .Net Core
Может это будет интересно? А то все в стол пишу.
Вопрос заключается в том, что на данный момент в .Net Core нет AppDomain да и WCF пока только Soap. Но можно на данных разработках сделать аналог AppDomain в котором можно создавать и управлять любыми объектами. Вопрос заключается в том, стоит ли делать свой велосипед, или уже существуют в проекте инструменты от MS.
Данная технология ближе к Remouting, но без в ней каждый объект является MarshalByRefObject
В ней подробно рассказывается как создавать удаленные объекты и вызывать их методы.
Само решение очень близко с COM out process взаимодействием на IDispatch.
Помню с удовольствием разбирался с внутренностями TSocketConnection.
Но, в отличие от Idispatch, используется перегрузка методов и операторов, вызов Generic методов с выводом типов или с заданием Generic аргументов.
Поддержка методов расширений для классов, находящихся в одной сборке и для Linq методов.
Также поддержка асинхронных методов и подписка на события, ref и out параметры, доступ по индексу [], поддержка итераторов в foreach.
В отличии от Web Api, не нужно писать специально серверный код Controller, Hub ы.
Это близко к AppDomain c Remouting но, в отличие от Remoting, каждый класс является аналогом MarshalByRefObject. То есть, мы можем создать любой объект на стороне сервера и вернуть ссылку на него (некоторые языки из чисел поддерживают только double).
При вызове методов, напрямую сериализуются параметры только следующих типов: числа, строки, дата, Guid и byte[]. Для остальных типов нужно их создать на стороне сервера, а в параметрах методов уже передаются ссылки на них.