'

Dynamic Language Runtime

Понравилась презентация – покажи это...





Слайд 0

Dynamic Language Runtime Евгений Рыбак. Tieto


Слайд 1

Содержание Часть I Введение Часть II Архитектура Часть III Ядро DLR Часть IV Common Hosting Часть V Вопросы & Ответы


Слайд 2

Часть I Введение


Слайд 3

Введение Первый анонс: MIX07 – 30 апреля 2007 года


Слайд 4

Введение Основные цели: Портирование динамических языков на платформу .NET Добавление динамических возможностей в существующие языки ( C#, VB.NET)


Слайд 5

Часть II Архитектура


Слайд 6

Runtime Hosting model Language Implementation Архитектура DLR


Слайд 7

Dynamic Language Runtime IronPython Silverlight Others… VB.NET C# IronRuby Object Binder JavaScript Binder COM Binder Ruby Binder Python Binder Архитектура


Слайд 8

Протокол взаимодействия: 12 общих операций Бинарные операции Работа с методами Работа с индексаторами Архитектура


Слайд 9

Итак, DLR Имеет 12 общих операций м/д языками Позволяет динамическим и статическим языкам работать вместе Состоит из 3 компонент Надстройка над CLR


Слайд 10

Часть III Ядро DLR


Слайд 11

Ядро DLR Rules Binders CallSite DynamicObject ExpandoObject COM Interop Utilities


Слайд 12

1) obj – класс или объект? 2) Add – метод или делегат? 3) Нужно ли просматривать иерархию наследования? 4) А что это такое в параметрах? 5) Подходят ли эти параметры к методу или делегату? obj. Add (1, 2) Ядро DLR


Слайд 13

6) Не подходят? А существует ли преобразование между типами? 7) Явное или неявное? 8) Пользовательское преобразование? 9) ... 10) ... obj. Add (1, 2) Ядро DLR


Слайд 14

CallSite<T> CallSite<T> механизм кэширования операций


Слайд 15

CallSite<T> 3 независимых кэша: L0: Делегат Target L1: История CallSite-а L2: История похожих CallSite-ов


Слайд 16

Ядро DLR - Кэширование Указывает на динамически скомпилированный метод Производительность, близка к обычному статическому методу Дорогая операция обновления L0 : Target


Слайд 17

Ядро DLR - Кэширование История правил, с которыми был использован данный CallSite Дешевая операция обновления L0 : Target L1 : Update


Слайд 18

Ядро DLR - Кэширование История правил, с которыми был использованны эквивалентные CallSite-ый Дешевая операция обновления L0 : Target L1 : Update L2 : Update


Слайд 19

Ядро DLR - Binders Binder: Пример: GetMemenerBinder obj.Method SetMemberBinder obj.Property = 100 GetIndexBinder obj[1] или obj[“key”] Binders - ключевые компоненты, отвечающие за выполнение операций


Слайд 20

Результат работы Binder-а – правило (Rule) X + Y Ядро DLR - Binders If (x is int && y is int) { return (int)x + (int)y } (int)x + (int)y


Слайд 21

Ядро DLR - Кэширование L0 : Target if (x is int && y is int) { return (int)x + (int)y } site.Update(…)


Слайд 22

Ядро DLR - Кэширование L0 : Target L1 : Update Локальная история: IList<Rule>


Слайд 23

Ядро DLR - Кэширование L0 : Target L1 : Update L2 : Update Глобальная история: IList<Rule>


Слайд 24

DynamicObject Точка входа в протокол взаимодействия между языками Облегченная реализация всех возможных динамических операций


Слайд 25

Эффективная реализация динамического объекта Позволяет: Добавлять новые/Устанавливать/ Извлекать члены класса ExpandoObject


Слайд 26

Часть IV Common Hosting


Слайд 27

Common Hosting Хостинг DLR языков в .NET приложениях Например: Выполнение IronPython, IronRuby кода в .NET приложении


Слайд 28

Common Hosting Возможности: 1) Исполнение фрагмента кода 2) Исполнение файлов *.py или *.rb 3) Создание области исполнения (Scope) 4) Запись/чтение переменных из (Scope) 5) Компиляция кода 6) ...


Слайд 29

Common Hosting Процесс Домены приложения


Слайд 30

Common Hosting Домен приложения ScriptRuntime


Слайд 31

Common Hosting ScriptRuntime ScriptScope


Слайд 32

Common Hosting ScriptRuntime .NET приложение ScriptScope (IronPython)


Слайд 33

Common Hosting ScriptRuntime .NET приложение ScriptScope (IronPython)


Слайд 34

Common Hosting ДЕМО


Слайд 35

Итого - Архитектура Часть II Состоит из 3 компонент Надстройка над CLR Имеет 12 общих операций м/д языками


Слайд 36

Часть II Часть III Итого - Кэширование Механизм кэширования 3 независимых кэша Возможности для авторов библиотек


Слайд 37

Часть II Часть III Часть VI Итого – Common Hosting Взаимодействие .NET и динамических языков (IronPython)


Слайд 38

Часть V Вопросы & Ответы


Слайд 39

СПАСИБО ЗА ВНИМАНИЕ http://belarusdotnet.org http://belarusdotnet.org/blogs/Engler


×

HTML:





Ссылка: