🗊 Презентация HotReload кода C# другим кодом C#

Категория: Информатика
Нажмите для полного просмотра!
HotReload кода C# другим кодом C#, слайд №1 HotReload кода C# другим кодом C#, слайд №2 HotReload кода C# другим кодом C#, слайд №3 HotReload кода C# другим кодом C#, слайд №4 HotReload кода C# другим кодом C#, слайд №5 HotReload кода C# другим кодом C#, слайд №6 HotReload кода C# другим кодом C#, слайд №7 HotReload кода C# другим кодом C#, слайд №8 HotReload кода C# другим кодом C#, слайд №9 HotReload кода C# другим кодом C#, слайд №10 HotReload кода C# другим кодом C#, слайд №11 HotReload кода C# другим кодом C#, слайд №12 HotReload кода C# другим кодом C#, слайд №13 HotReload кода C# другим кодом C#, слайд №14 HotReload кода C# другим кодом C#, слайд №15 HotReload кода C# другим кодом C#, слайд №16 HotReload кода C# другим кодом C#, слайд №17 HotReload кода C# другим кодом C#, слайд №18 HotReload кода C# другим кодом C#, слайд №19 HotReload кода C# другим кодом C#, слайд №20 HotReload кода C# другим кодом C#, слайд №21 HotReload кода C# другим кодом C#, слайд №22 HotReload кода C# другим кодом C#, слайд №23

Вы можете ознакомиться и скачать презентацию на тему HotReload кода C# другим кодом C#. Доклад-сообщение содержит 23 слайдов. Презентации для любого класса можно скачать бесплатно. Если материал и наш сайт презентаций Mypresentation Вам понравились – поделитесь им с друзьями с помощью социальных кнопок и добавьте в закладки в своем браузере.

Слайды и текст этой презентации


Слайд 1


HotReload кода C# Другим кодом C#
Описание слайда:
HotReload кода C# Другим кодом C#

Слайд 2


Прикладная разработка DirectumRX
Описание слайда:
Прикладная разработка DirectumRX

Слайд 3


Зачем нам HotReload Быстрая локальная отладка прикладного кода. Обычный deploy хорош и надёжен для прода, но медленный из-за перезапуска сервера.
Описание слайда:
Зачем нам HotReload Быстрая локальная отладка прикладного кода. Обычный deploy хорош и надёжен для прода, но медленный из-за перезапуска сервера.

Слайд 4


Дополнительные ограничения и требования Не спасёт, если поменялась структура БД. Надо, чтобы при Hot Reload могла работать отладка в Dev Studio....
Описание слайда:
Дополнительные ограничения и требования Не спасёт, если поменялась структура БД. Надо, чтобы при Hot Reload могла работать отладка в Dev Studio. Хорошо бы, чтобы можно использовать не только для серверного кода, но и для клиента (который уже запущен).

Слайд 5


Основная идея Избавиться от перезапуска сервера. Делаем на стороне сервера точку (контроллер WebApi, например), которая встроит поданный код в...
Описание слайда:
Основная идея Избавиться от перезапуска сервера. Делаем на стороне сервера точку (контроллер WebApi, например), которая встроит поданный код в работающее приложение.

Слайд 6


Решения в лоб Возня с reflection – LoadAssembly (в т. ч. Shadow Copy Assemblies). Managed Extensibility Framework (MEF); в том числе VS-MEF....
Описание слайда:
Решения в лоб Возня с reflection – LoadAssembly (в т. ч. Shadow Copy Assemblies). Managed Extensibility Framework (MEF); в том числе VS-MEF. Mono.Cecil.

Слайд 7


Решения в лоб. Проблемы Никак не повлияем на уже существующие в памяти объекты, Новые объекты, создаваемые через new в прикладном коде будут...
Описание слайда:
Решения в лоб. Проблемы Никак не повлияем на уже существующие в памяти объекты, Новые объекты, создаваемые через new в прикладном коде будут ссылаться на старые типы. Чтобы это работало нужно: писать свой загрузчик типов. Если где-то в прикладном коде какая-то прикладная сущность создаётся через new, то придётся модифицировать прикладной код (это плохо); в случае с MEF по коду надо либо раскидывать специальные атрибуты, либо наследоваться от нужных интерфейсов.

Слайд 8


Компилять на сервере и Emit (v1) CodeDom – компиляция c# в Assembly сразу в память в AppDomain. Emit – генерация IL-кода.
Описание слайда:
Компилять на сервере и Emit (v1) CodeDom – компиляция c# в Assembly сразу в память в AppDomain. Emit – генерация IL-кода.

Слайд 9


Компилять на сервере и Emit Проблемы: Emit работает только с DynamicAssembly (соответстввенно – DynamicMethod). А в результатет работы CodeDom и...
Описание слайда:
Компилять на сервере и Emit Проблемы: Emit работает только с DynamicAssembly (соответстввенно – DynamicMethod). А в результатет работы CodeDom и компиляции мы получаем, по сути, обычную Assembly. Чтобы динамический класс отправить в работу, нужно вызвать у него CreateType(). Это блокирует дальнейшие его модификации

Слайд 10


Edit and Continue Встроенный в Visual Studio хитрый механизм, генерирующий некоторые дельты. Общедоступного API нет. Даже в самой VS механизм не...
Описание слайда:
Edit and Continue Встроенный в Visual Studio хитрый механизм, генерирующий некоторые дельты. Общедоступного API нет. Даже в самой VS механизм не работает в ряде случаев.

Слайд 11


­Method inject v1 Замена указателя на метод:
Описание слайда:
­Method inject v1 Замена указателя на метод:

Слайд 12


Как хранятся описания классов в .NET
Описание слайда:
Как хранятся описания классов в .NET

Слайд 13


Суть Method Inject v1
Описание слайда:
Суть Method Inject v1

Слайд 14


­Method inject (v1)
Описание слайда:
­Method inject (v1)

Слайд 15


Method Inject v1. Что нам надо сделать ещё Сравнить прикладные исходники и найти изменившиеся методы. Передать исходные тексты методов (+ доп. инфа)...
Описание слайда:
Method Inject v1. Что нам надо сделать ещё Сравнить прикладные исходники и найти изменившиеся методы. Передать исходные тексты методов (+ доп. инфа) на сервер Создать новый класс, засунуть в него методы и скомпилировать в память (Перед компиляцией надо заменить вcе обращения к this на обращения через Reflection) Найти старый метод и сделать MethodInject на новый

Слайд 16


Method Inject v1. ПРОБЛЕМА! Прекрасно работает, пока мы не вызываем метод. После первого вызова срабатывает JIT и вся магия пропадает.
Описание слайда:
Method Inject v1. ПРОБЛЕМА! Прекрасно работает, пока мы не вызываем метод. После первого вызова срабатывает JIT и вся магия пропадает.

Слайд 17


Method Inject v2 Использование EasyHook Основная идея: Переопределение compileMethod, Сброс состояния Jitted с помощью MethodDesc.Reset()
Описание слайда:
Method Inject v2 Использование EasyHook Основная идея: Переопределение compileMethod, Сброс состояния Jitted с помощью MethodDesc.Reset()

Слайд 18


Method Inject v2. Проблемки Нормально заработало только на .NET Framework 3.5. Уж очень рискованно такое применять в продакшене. Поддерживать такое...
Описание слайда:
Method Inject v2. Проблемки Нормально заработало только на .NET Framework 3.5. Уж очень рискованно такое применять в продакшене. Поддерживать такое от версии к версии .NET – хз, как, потому что влезли конкретно внутрь кухни CLR

Слайд 19


Что за прикладной код
Описание слайда:
Что за прикладной код

Слайд 20


Class swap Платформенный код создаёт объекы, содержащие прикладной код. Зачем менять изворачиваться с методами, если можно просто подсунуть объект
Описание слайда:
Class swap Платформенный код создаёт объекы, содержащие прикладной код. Зачем менять изворачиваться с методами, если можно просто подсунуть объект

Слайд 21


Сlass swap. Работающий прототип
Описание слайда:
Сlass swap. Работающий прототип

Слайд 22


Мораль Исследования – офигенная тема Правильно, что не стали бросаться делать первое попавшееся. Нужно смотреть шире. Упёрлись в подмену кода на...
Описание слайда:
Мораль Исследования – офигенная тема Правильно, что не стали бросаться делать первое попавшееся. Нужно смотреть шире. Упёрлись в подмену кода на низком уровне. Документирование исследования – вообще тема. Фича не забыта и может быть когда-нибудь...

Слайд 23


HotReload кода C# другим кодом C#, слайд №23
Описание слайда:



Похожие презентации
Mypresentation.ru
Загрузить презентацию