Скачать презентацию
Идет загрузка презентации. Пожалуйста, подождите
Презентация была опубликована 10 лет назад пользователемVLDCORP
1 Dynamic Language Runtime Евгений Рыбак. Tieto
2 Содержание Часть IВведение Часть IIАрхитектура Часть IIIЯдро DLR Часть IVCommon Hosting Часть VВопросы & Ответы
3 Часть I Введение
4 Первый анонс: MIX07 – 30 апреля 2007 года
5 Введение Основные цели: Портирование динамических языков на платформу.NET Портирование динамических языков на платформу.NET Добавление динамических возможностей в существующие языки ( C#, VB.NET) Добавление динамических возможностей в существующие языки ( C#, VB.NET)
6 Часть II Архитектура
7 Runtime Hosting model Language Implementation Архитектура DLR
8 Dynamic Language Runtime IronPython Silverlight Others… VB.NET C# IronRuby Object Binder JavaScript Binder COM Binder Ruby Binder Python Binder Архитектура
9 Протокол взаимодействия: 12 общих операций Бинарные операции Работа с методами Работа с индексаторами Архитектура
10 Итак, DLR Имеет 12 общих операций м/д языками Позволяет динамическим и статическим языкам работать вместе Состоит из 3 компонент Надстройка над CLR
11 Часть III Ядро DLR
12 Rules Binders CallSite DynamicObject ExpandoObject COM Interop Utilities
13 1) obj – класс или объект? 2) Add – метод или делегат? 3) Нужно ли просматривать иерархию наследования? 4) А что это такое в параметрах? 5) Подходят ли эти параметры к методу или делегату? obj. Add (1, 2) Ядро DLR
14 6) Не подходят? А существует ли преобразование между типами? 7) Явное или неявное? 8) Пользовательское преобразование? 9)... 10)... obj. Add (1, 2) Ядро DLR
15 CallSite механизм кэширования операций
16 CallSite 3 независимых кэша: L0: Делегат Target L1: История CallSite-а L2: История похожих CallSite-ов
17 Ядро DLR - Кэширование Указывает на динамически скомпилированный метод Производительность, близка к обычному статическому методу Дорогая операция обновления L0 : Target
18 Ядро DLR - Кэширование История правил, с которыми был использован данный CallSite Дешевая операция обновления L0 : Target L1 : Update
19 Ядро DLR - Кэширование История правил, с которыми был использованы эквивалентные CallSite-ый Дешевая операция обновления L0 : Target L1 : Update L2 : Update
20 Ядро DLR - Binders Binder: Пример: GetMemenerBinder obj.Method SetMemberBinder obj.Property = 100 GetIndexBinder obj[1] или obj[key] Binders - ключевые компоненты, отвечающие за выполнение операций
21 Результат работы Binder-а –правило (Rule) X + Y Ядро DLR - Binders If (x is int && y is int) { return (int)x + (int)y } (int)x + (int)y
22 Ядро DLR - Кэширование L0 : Target if (x is int && y is int) { return (int)x + (int)y } site.Update(…)
23 Ядро DLR - Кэширование L0 : Target L1 : Update Локальная история: IList
24 Ядро DLR - Кэширование L0 : Target L1 : Update L2 : Update Глобальная история: IList
25 DynamicObject Точка входа в протокол взаимодействия между языками Облегченная реализация всех возможных динамических операций
26 Эффективная реализация динамического объекта Позволяет: Добавлять новые/Устанавливать/ Извлекать члены класса ExpandoObject
27 Часть IV Common Hosting
28 Хостинг DLR языков в.NET приложениях Например: Выполнение IronPython, IronRuby кода в.NET приложении
29 Common Hosting Возможности: 1) Исполнение фрагмента кода 2) Исполнение файлов *.py или *.rb 3) Создание области исполнения (Scope) 4) Запись/чтение переменных из (Scope) 5) Компиляция кода 6)...
30 Common Hosting Процесс Домены приложения
31 Common Hosting Домен приложения ScriptRuntime
32 Common Hosting ScriptRuntime ScriptScope
33 Common Hosting ScriptRuntime.NET приложение ScriptScope (IronPython)
34 Common Hosting ScriptRuntime.NET приложение ScriptScope (IronPython)
35 Common Hosting ДЕМО
36 Итого - Архитектура Часть II Состоит из 3 компонент Надстройка над CLR Имеет 12 общих операций м/д языками
37 Часть II Часть III Итого - Кэширование Механизм кэширования 3 независимых кэша Возможности для авторов библиотек
38 Часть II Часть III Часть VI Итого – Common Hosting Взаимодействие.NET и динамических языков (IronPython)
39 Часть V Вопросы & Ответы
40 СПАСИБО ЗА ВНИМАНИЕ
Еще похожие презентации в нашем архиве:
© 2024 MyShared Inc.
All rights reserved.