Dynamic Language Runtime презентация

Содержание

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


Слайд 2 Содержание

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


Слайд 3 Часть I
Введение


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

2007 года

Слайд 5
Введение
Основные цели:
Портирование динамических

языков на платформу .NET

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


Слайд 6 Часть II
Архитектура


Слайд 7
Runtime
Hosting model
Language Implementation
Архитектура
DLR


Слайд 8Dynamic 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 Ядро DLR
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


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


Слайд 16CallSite
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

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


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


Слайд 27 Часть IV
Common Hosting


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

приложении

Слайд 29Common Hosting
Возможности:
1) Исполнение

фрагмента кода

2) Исполнение файлов *.py или *.rb

3) Создание области исполнения (Scope)

4) Запись/чтение переменных из (Scope)

5) Компиляция кода

6) ...


Слайд 30Common Hosting





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


Слайд 31Common Hosting

Домен
приложения




ScriptRuntime


Слайд 32Common Hosting

ScriptRuntime




ScriptScope


Слайд 33Common Hosting


ScriptRuntime

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






Слайд 34
Common Hosting

ScriptRuntime

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


Слайд 35Common Hosting


ДЕМО


Слайд 36 Итого - Архитектура

Часть II


Состоит из 3

компонент

Надстройка над CLR

Имеет 12 общих
операций м/д языками


Слайд 37Часть II

Часть III
Итого - Кэширование


Механизм кэширования
3 независимых

кэша

Возможности
для авторов библиотек


Слайд 38
Часть II
Часть III

Часть VI
Итого – Common Hosting

Взаимодействие
.NET и динамических
языков
(IronPython)


Слайд 39
Часть V
Вопросы & Ответы


Слайд 40
СПАСИБО
ЗА ВНИМАНИЕ

http://belarusdotnet.org
http://belarusdotnet.org/blogs/Engler


Обратная связь

Если не удалось найти и скачать презентацию, Вы можете заказать его на нашем сайте. Мы постараемся найти нужный Вам материал и отправим по электронной почте. Не стесняйтесь обращаться к нам, если у вас возникли вопросы или пожелания:

Email: Нажмите что бы посмотреть 

Что такое ThePresentation.ru?

Это сайт презентаций, докладов, проектов, шаблонов в формате PowerPoint. Мы помогаем школьникам, студентам, учителям, преподавателям хранить и обмениваться учебными материалами с другими пользователями.


Для правообладателей

Яндекс.Метрика