Содержание
- 2. Что за «Code hot reload»? Обновление кода приложения без перезапуска этого приложения. .NET Framework (4.6 +)
- 3. DirectumRX – ECM-система
- 4. DirectumRX Development Studio
- 5. Прикладная разработка DirectumRX Development Studio (IDE) Локальный сервер приложений Код платформы (framework) Прикладной код Новый прикладной
- 6. Зачем нам HotReload Development Studio (IDE) Локальный сервер приложений Код платформы (framework) Прикладной код Новый прикладной
- 7. Дополнительные ограничения и пожелания Если поменялась структура БД, одним HotReload не обойтись. HotReload и отладка в
- 8. Основная идея Избавиться от перезапуска сервера. Встраивать код напрямую в работающее приложение. Development Studio (IDE) Локальный
- 9. Решения в лоб Reflection – LoadAssembly (Shadow Copy Assemblies) Managed Extensibility Framework (MEF, VS-MEF) Mono.Cecil
- 10. Решения в лоб. Проблемы Не повлияем на уже существующие в памяти объекты. Новые объекты, создаваемые через
- 11. Emit CodeDom – компиляция С# в Assembly сразу в память в AppDomain. Emit – генерация IL-кода.
- 12. Emit. Проблемы Emit работает только с DynamicAssembly. А при компиляции CodeDom’a мы получаем обычную Assembly. Чтобы
- 13. Edit and Continue Встроенный в Visual Studio хитрый механизм, генерирующий некоторые дельты. Общедоступного API нет. Даже
- 15. Method Inject v1
- 16. Method Inject v1 Суть – замена указателя на метод. MethodInfo methodToReplace = … ; MethodInfo methodToInject
- 17. Как хранятся описания классов в .NET Заголовок MethodTable ptr Field value 1 Field value 2 …
- 18. Method Inject v1. Суть Заголовок MethodTable ptr Field value 1 Field value 2 … ObjectInstance …
- 19. Method Inject v1. Проверяем на практике Есть два класса… Target TargetMethod() Injection InjectionMethod() Injector
- 20. Method Inject v1. Проверяем на практике Исходный MethodTable TestClasses.Target.Test() TestClasses.Target.TargetMethod() TestClasses.Target.get_Value() TestClasses.Target..ctor (System.String) WinDbg + SOS
- 21. Method Inject v1. Проверяем на практике MethodTable после Inject TestClasses.Target.Test() TestClasses.Injection.InjectionMethod() TestClasses.Target.get_Value() TestClasses.Target..ctor (System.String)
- 22. Method Inject v1. Дополнительные работы Сравнить прикладные исходники и найти изменившиеся методы. Передать исходники методов на
- 23. Method Inject v1. ПРОБЛЕМА! Прекрасно работает пока мы не вызвали подменяемый метод.
- 24. Method Inject v1. ПРОБЛЕМА! …. Code ptr … … …. MyMethod1() ptr … MethodTable { Console.WriteLine(1);
- 25. Method Inject v2
- 26. Method Inject v2 public static class InjectionHelper { ... public static void Initialize() public static void
- 27. Method Inject v2 …. Code ptr … … …. MyMethod1() ptr … MethodTable IL MethodDesc Stub
- 28. Injector …. Code ptr … … …. MyMethod1() ptr … MethodTable IL MethodDesc Stub PreJitStub machine
- 29. Method Inject v2. Проблемки Нормально заработало только на .NET Framework 2.0 - 4.0 Inline маленьких методов.
- 30. Давайте вспомним, с чего мы начали Есть платформа. Она исполняет прикладной код. Мы хотим подменять прикладной
- 31. Что за прикладной код? Document Name Author Created … ServerHandlers BeforeSave() AfterSave() … ServerFunctions ServerFoo() …
- 32. Class swap Платформенный код создаёт прикладные объекты (Dependency Injection). Не возимся с методами – заменяем сразу
- 33. Class swap Document1 Document1ServerFunctions Foo() IDocument1ServerFunctions AppTypesManager Implementation Create ServerFunctions ()
- 34. Class swap … Document1 Document1ServerFunctions Foo() IDocument1ServerFunctions AppTypesManager Create ServerFunctions () Injector Create type C# sources
- 35. Class swap Document1 Document1ServerFunctions Foo() IDocument1ServerFunctions Document1ServerFunctions Foo() IDocument1ServerFunctions AppTypesManager Implementation Create ServerFunctions () Injector Create
- 36. Заключение В продакшен это не пошло :( Деплой мы ускорили иначе – оптимизации. Исследования – круто.
- 37. () .net core JIT disable Custom .NET CLR
- 38. THE END Асадуллин Тимур Directum, Уфа [email protected]
- 40. Скачать презентацию





































СМИ как источник биологической информации
BRC Calibration Tool — это новая программа для новых систем BRC
Проработка и тестирование по теме Access
Алгоритм участия в акции Диктант Победы 2021
Биллинговая система для операторов связи
Планировщик заданий
Architecture. Приложение Application Object
GSM. Сетевое покрытие
Понятие дерева целей
Электронный учебник Создание презентаций
Архитектура ПК для мобильных устройств
Рассылки
Применение электронной системы Hawk-Eye в различных видах спорта
Архитектура ПК
Проект: Библиотека без стен
Организация циклов в языке программирования Паскаль
English Time. Час Англійської. Запускаємо Appinvenor. Lesson 25
Программирование+ + настольные игры с ИКИТом. Выпуск №9
Web-технологии: PHP, MySQL, AJAX
Информационные процессы. Информация в информатике
Сложные условия. Программирование (Python), 8 класс
Электронные библиотечные системы
Понятие и системы организации цифрового информационного пространства
Интернет-мошенничество
Системы управления базами данных
Живые рисунки на компьютере
Конечный порядок действий, приводящий к результату
Возможности электронных таблиц