Содержание
- 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. Скачать презентацию





































Антивирусы и средства антивирусной защиты
Функции в С++. Перегрузка функций. (Лекция 3)
Алгоритм записи на сайте
Создание spike prime роботов в cad-программах
Использование информационных технологий для прогнозирования социальных процессов
XQsHfj8q6ya0LkEdgtAKXA
VPN. Виртуальные частные сети. Защита сетевого трафика
Лекция
Основные понятия в области информационных технологий
Системный сканер Bosch KTS 560/590/350 и диагностическое программное обеспечение Bosch
Модель сервиса
Line graph essay
Телекоммуникационные сети. Сетевой трафик
Палитра для сайта, разработка сайта
Презентация на тему Практическая работа в программе WordPad
Требования к оформлению индивидуального проекта
Графические форматы и программная реализация базовых алгоритмов компьютерной графики
Технология блокчейн
Начала алгоритмизации и программирования
Методика работы с документами сайта Подвиг народа. Установление судьбы и анализ наград земляков
Google Chrome
YouTube Beeline Казакхстан
Введение в объектно-ориентированное программирование
Кооперация процессов и основные аспекты ее логической организации
Магистерская программа Моделирование в биотехническом приборостроении
Программное обеспечение компьютера
Цифровые интерфейсы микропроцессорных терминалов
Табличные расчеты и электронные таблицы