Dynamic Language Runtime Евгений Рыбак. Tieto. Содержание Часть IВведение Часть IIАрхитектура Часть IIIЯдро DLR Часть IVCommon Hosting Часть VВопросы.

Презентация:



Advertisements
Похожие презентации
IronRuby: внутренности и примеры использования Рахматиллаев Тимур IndyCode 3-я конференция.NET разработчиков 25 сентября 2011.
Advertisements

Основы информатики Классы Заикин Олег Сергеевич zaikin.all24.org
Обобщения ( generics) Обобщения – это классы, структуры, интерфейсы и методы, в которых некоторые типы сами являются параметрами. Эти типы перечисляются.
ПРЕЗЕНТАЦИЯ НА ТЕМУ: ПРЕЗЕНТАЦИЯ НА ТЕМУ: ВИДЫ ТРАНСЛЯЦИИ Составил: Ревнивцев М.В Преподаватель: Кленина В.И.
Преобразования типов В языке C/C++ имеется несколько операций преобразования типов. Они используются в случае, если переменная одного типа должна рассматриваться.
Лекция 1 Классификация С++. Парадигмы программирования Императивная Функциональная Декларативная (логическая) Инструкция 1 Инструкция 2 Инструкция 3 Инструкция.
АССОЦИАТИВНЫЕ КОЛЛЕКЦИИ Лекция 6 1. Отличие от последовательных 2 В последовательной коллекции каждый элемент ассоциируется с номером, начиная с 0. В.
Перегрузка операторов x = a + b результат 1-й операнд2-й операнд оператор По количеству операндов операторы делятся на: унарные (один операнд) бинарные.
Наследование Наследование – это отношение является между классами. class Person { string first_name; int birth_year;... } class Student : Person { float.
Проф. В.К.Толстых, Технологии разработки Internet- приложений ASP.NET приложения – Модули HTTP, фильтры, события приложения - Global.asax.
Работа с файлами Сазонов Д.О. ПМиЭММ Часть 2. Тема занятия: Работа с файлами через потоки Для реализации файлового ввода/вывода, необходимо включить в.
Программная иженерия Андрей Дмитриев ©
Ресурсы WPF Два типа ресурсов WPF: объектные ресурсы (object resource) – определенный.NET-объект, который можно использовать многократно; ресурсы сборки.
Высокоуровневые методы информатики и программирования Лекция 9 Делегаты.
Second Life Новое пространство для разработчиков Жигайло Юрий WORLD2.RU.
Сопровождение Этап сопровождения наступает после успешной передачи заказчику программного продукта. Сопровождение состоит из трех параллельных процессов:
Проф. В.К.Толстых, Технологии разработки Internet- приложений Архитектура и администрирование IIS 7 исполняющая среда ASP.NET в IIS 7,
Модульный принцип построения проекта и программного кода.
Информационные технологии Стандартные библиотечные функции манипулирование данными преобразование и шифрование определение пользователями функций.
Библиотека для разработки распределенных приложений на.NET Студент: Тимофеев А.Е. Руководитель:Терехов А.Н. Рецензент: Здебский Р.Б.
Транксрипт:

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

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

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

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

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

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

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

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

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

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

Часть III Ядро DLR

Rules Binders CallSite DynamicObject ExpandoObject COM Interop Utilities

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Часть IV Common Hosting

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

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

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

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

Common Hosting ScriptRuntime ScriptScope

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

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

Common Hosting ДЕМО

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

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

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

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

СПАСИБО ЗА ВНИМАНИЕ