Информация об изменениях

Сообщение .Net Core, AppDomain, WCF, RPC маршалинг по Tcp/Ip свой вело от 19.02.2017 14:30

Изменено 06.03.2017 7:20 Serginio1

.Net Core, AppDomain, WCF, RPC маршалинг по Tcp/Ip свой вело
Кто о чем, а вшивый о бане.

Сейчас в .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
.Net Core, AppDomain, WCF, RPC маршалинг по Tcp/Ip свой вело
Написал статью .Net Core, AppDomain, WCF, RPC маршалинг по Tcp/Ip свой велосипед

В ней подробно рассказывается как создавать удаленные объекты и вызывать их методы.

Само решение очень близко с COM out process взаимодействием на IDispatch.
Помню с удовольствием разбирался с внутренностями TSocketConnection.

Но, в отличие от Idispatch, используется перегрузка методов и операторов, вызов Generic методов с выводом типов или с заданием Generic аргументов.
Поддержка методов расширений для классов, находящихся в одной сборке и для Linq методов.

Также поддержка асинхронных методов и подписка на события, ref и out параметры, доступ по индексу [], поддержка итераторов в foreach.

В отличии от Web Api, не нужно писать специально серверный код Controller, Hub ы.
Это близко к AppDomain c Remouting но, в отличие от Remoting, каждый класс является аналогом MarshalByRefObject. То есть, мы можем создать любой объект на стороне сервера и вернуть ссылку на него (некоторые языки из чисел поддерживают только double).
При вызове методов, напрямую сериализуются параметры только следующих типов: числа, строки, дата, Guid и byte[]. Для остальных типов нужно их создать на стороне сервера, а в параметрах методов уже передаются ссылки на них.