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





































Презентация на тему Виды носителей информации
Разработка фрагмента экспертной системы, предназначенной для выбора и покупки необходимой швейной машинки
Поиск информации
Ускорение прогресса
Работа педагога в информационном пространстве сети ИНтернет
2_LEKTsIYa (1)
Обязательная контрольная работа по дисциплине информационная технология. Вариант №8
Введение в E-Commerce
Интернет как виртуальное пространство и средство массовой коммуникации
Презентация на тему Устройства компьютера
Инструменты отладки Vscode. Программирование на Python. 6 занятие
Факториальная система счисления
Умный дом
Представление звука в памяти компьютера. Технические средства мультимедиа. 7 класс
Внедрение дополнительного кода в исполняемый файл
Представление чисел в памяти компьютера
Представление целых чисел в компьютере. 8 класс
Решу ЕГЭ. Обществознание
Операции инкремента и декремента в С++
Работа с библиотекой. Библиотечные ресурсы
Системы счисления
Ikonet.com — визуальная энциклопедия
Мастер класс по созданию презентации Презентация? Легко!
Что такое киберспорт?
DeepSpace. Your way to space world Russia
Презентация на тему Информация
Электронные справочные издания. Работаем с текстовым редактором. Словарь терминов