SlideShare una empresa de Scribd logo
Dynamic Language Runtime Евгений Рыбак.  Tieto
Содержание ,[object Object],[object Object],[object Object],[object Object],[object Object]
[object Object],[object Object]
Введение Первый анонс: MIX07 –  30  апреля 2007 года
Введение Основные цели : Портирование динамических  языков на платформу . NET Добавление динамических возможностей в существующие  языки (  C#, VB.NET)
[object Object],[object Object]
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
[object Object],[object Object]
  Ядро  DLR Rules  Binders CallSite DynamicObject ExpandoObject COM Interop Utilities
  Ядро  DLR   1 )   obj –  класс или объект? 2 )   Add –  метод или делегат?   3 )   Нужно ли просматривать иерархию  наследования?   4 )   А что это такое в параметрах?   5 )   Подходят ли эти параметры к методу или делегату? obj. Add (1, 2)
  Ядро  DLR   6 )   Не подходят? А существует ли   преобразование между типами? 7 )  Явное или неявное?   8 )   Пользовательское преобразование?   9 ) ... 10 )   ... obj. Add (1, 2)
CallSite<T> CallSite<T> механизм  к э ширования   операций
CallSite<T> 3  независимых  кэша :   L0:  Делегат  Target L1:   История  CallSite- а L2:   История похожих  CallSite- ов
Ядро  DLR -  Кэширование ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],L0 : Target
Ядро  DLR -  Кэширование ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],L0 : Target L1 :  Update
Ядро  DLR -  Кэширование ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],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<Rule>
Ядро  DLR -  Кэширование L0 : Target L1 :  Update L2 :  Update Глобальная история: IList<Rule>
DynamicObject Точка входа в протокол взаимодействия между языками Облегченная реализация всех  возможных дин амических  операций
Эффективная реализация динамического объекта Позволяет : Добавлять новые/Устанавливать/ Извлекать члены класса ExpandoObject
[object Object],[object Object]
Common Hosting Хостинг  DLR  языков в  . NET  приложениях Например : Выполнение  IronPython, IronRuby кода в  .NET  приложении
Common Hosting Возможности:   1 )   Исполнение фрагмента кода ,[object Object],  3 )  Создание области исполнения ( Scope) ,[object Object],  5 )  Компиляция кода ,[object Object]
Common Hosting Процесс Домены приложения
Common Hosting Домен приложения ScriptRuntime
Common Hosting ScriptRuntime ScriptScope
Common Hosting ScriptRuntime .NET  приложение Script Scope (IronPython)
Common Hosting ScriptRuntime .NET  приложение Script Scope (IronPython)
Common Hosting ДЕМО
Итого  -  Архитектура Часть  II Состоит из 3  компонент Надстройка над  CLR Имеет 12 общих операций м/д языками
Итого  -  Кэширование Часть  II Часть  III Механизм  кэширования 3 независимых  кэша   Возможности  для авторов библиотек
Итого  – Common Hosting Часть  II Часть  III Часть  VI Взаимодействие .NET  и динамических языков  ( IronPython)
[object Object],[object Object]
СПАСИБО ЗА ВНИМАНИЕ http://belarusdotnet.org http://belarusdotnet.org/blogs/Engler

Más contenido relacionado

La actualidad más candente

Роман Иманкулов-«Быстрые и масштабируемые приложения с Sync API»
Роман Иманкулов-«Быстрые и масштабируемые приложения с Sync API»Роман Иманкулов-«Быстрые и масштабируемые приложения с Sync API»
Роман Иманкулов-«Быстрые и масштабируемые приложения с Sync API»
Tanya Denisyuk
 
Kirill A Korinskiy Rit2010 No Sql Storage
Kirill A  Korinskiy Rit2010 No Sql StorageKirill A  Korinskiy Rit2010 No Sql Storage
Kirill A Korinskiy Rit2010 No Sql Storage
rit2010
 
Devconf 2014 Трассировка событий при логировании
Devconf 2014 Трассировка событий при логированииDevconf 2014 Трассировка событий при логировании
Devconf 2014 Трассировка событий при логировании
Alex Popov
 
Архитектура хранения фотографий в Badoo
Архитектура хранения фотографий в BadooАрхитектура хранения фотографий в Badoo
Архитектура хранения фотографий в Badoo
Badoo Development
 
Cocoa Networking
Cocoa NetworkingCocoa Networking
Cocoa Networking
guest57eb8a
 
To Go или не to Go
To Go или не to GoTo Go или не to Go
To Go или не to Go
Ivan Zezyulya
 
Александр Крижановский, NatSys Lab
Александр Крижановский, NatSys LabАлександр Крижановский, NatSys Lab
Александр Крижановский, NatSys Lab
Ontico
 

La actualidad más candente (17)

Anton Alexanenkov - Tor and Botnet C&C
Anton Alexanenkov -  Tor and Botnet C&C Anton Alexanenkov -  Tor and Botnet C&C
Anton Alexanenkov - Tor and Botnet C&C
 
Роман Иманкулов-«Быстрые и масштабируемые приложения с Sync API»
Роман Иманкулов-«Быстрые и масштабируемые приложения с Sync API»Роман Иманкулов-«Быстрые и масштабируемые приложения с Sync API»
Роман Иманкулов-«Быстрые и масштабируемые приложения с Sync API»
 
Design by Contract
Design by ContractDesign by Contract
Design by Contract
 
Kirill A Korinskiy Rit2010 No Sql Storage
Kirill A  Korinskiy Rit2010 No Sql StorageKirill A  Korinskiy Rit2010 No Sql Storage
Kirill A Korinskiy Rit2010 No Sql Storage
 
Devconf 2014 Трассировка событий при логировании
Devconf 2014 Трассировка событий при логированииDevconf 2014 Трассировка событий при логировании
Devconf 2014 Трассировка событий при логировании
 
Семинар 10. Параллельное программирование на MPI (часть 3)
Семинар 10. Параллельное программирование на MPI (часть 3)Семинар 10. Параллельное программирование на MPI (часть 3)
Семинар 10. Параллельное программирование на MPI (часть 3)
 
Cloud Haskell. Александр Вершилов
Cloud Haskell. Александр ВершиловCloud Haskell. Александр Вершилов
Cloud Haskell. Александр Вершилов
 
Архитектура хранения фотографий в Badoo
Архитектура хранения фотографий в BadooАрхитектура хранения фотографий в Badoo
Архитектура хранения фотографий в Badoo
 
Переход на Php 7 и итоги
Переход на Php 7 и итогиПереход на Php 7 и итоги
Переход на Php 7 и итоги
 
Cocoa Networking
Cocoa NetworkingCocoa Networking
Cocoa Networking
 
Andrey Borodin "Architecture of online backup for various DBMS"
Andrey Borodin "Architecture of online backup for various DBMS"Andrey Borodin "Architecture of online backup for various DBMS"
Andrey Borodin "Architecture of online backup for various DBMS"
 
"Внутренности" CPython, часть II
"Внутренности" CPython, часть II"Внутренности" CPython, часть II
"Внутренности" CPython, часть II
 
Инфрраструктура ЦОД - интерконнект от Qlogik
Инфрраструктура ЦОД - интерконнект от QlogikИнфрраструктура ЦОД - интерконнект от Qlogik
Инфрраструктура ЦОД - интерконнект от Qlogik
 
Кратко о Mac OS X
Кратко о Mac OS XКратко о Mac OS X
Кратко о Mac OS X
 
To Go или не to Go
To Go или не to GoTo Go или не to Go
To Go или не to Go
 
OpenACC short review
OpenACC short reviewOpenACC short review
OpenACC short review
 
Александр Крижановский, NatSys Lab
Александр Крижановский, NatSys LabАлександр Крижановский, NatSys Lab
Александр Крижановский, NatSys Lab
 

Destacado

Minsk Web Appl 190509
Minsk Web Appl 190509Minsk Web Appl 190509
Minsk Web Appl 190509
sef2009
 
вопросы
вопросывопросы
вопросы
sef2009
 
Sef Ikhelis
Sef IkhelisSef Ikhelis
Sef Ikhelis
sef2009
 
Se Education Ukraine 2009 05 20 Im
Se Education Ukraine 2009 05 20 ImSe Education Ukraine 2009 05 20 Im
Se Education Ukraine 2009 05 20 Im
sef2009
 
Bibichev Sef09 Analyst In Agile
Bibichev Sef09 Analyst In AgileBibichev Sef09 Analyst In Agile
Bibichev Sef09 Analyst In Agile
sef2009
 
Evaluation Of Code Quality
Evaluation Of Code QualityEvaluation Of Code Quality
Evaluation Of Code Quality
sef2009
 
технопарк бнту метолит
технопарк бнту метолиттехнопарк бнту метолит
технопарк бнту метолит
sef2009
 
индустрия разработки по республики беларусь
индустрия разработки по республики беларусьиндустрия разработки по республики беларусь
индустрия разработки по республики беларусь
sef2009
 
Urazbaev
UrazbaevUrazbaev
Urazbaev
sef2009
 
интеграция приложений
интеграция приложенийинтеграция приложений
интеграция приложений
sef2009
 
Sef Tech Customer Bezugliy Presentation
Sef Tech Customer Bezugliy PresentationSef Tech Customer Bezugliy Presentation
Sef Tech Customer Bezugliy Presentation
sef2009
 
Sef презентация
Sef презентацияSef презентация
Sef презентация
sef2009
 
персональные риски аналитика
персональные риски аналитикаперсональные риски аналитика
персональные риски аналитика
sef2009
 
риски тестирования
риски тестированияриски тестирования
риски тестирования
sef2009
 
александров обучение в сфере Software Engineering
александров   обучение в сфере Software Engineeringалександров   обучение в сфере Software Engineering
александров обучение в сфере Software Engineering
sef2009
 
Mordovich Proto Presentation
Mordovich Proto PresentationMordovich Proto Presentation
Mordovich Proto Presentation
sef2009
 
Amayorov Hindex
Amayorov HindexAmayorov Hindex
Amayorov Hindex
sef2009
 
Silverlight 3.0 Sef
Silverlight 3.0   SefSilverlight 3.0   Sef
Silverlight 3.0 Sef
sef2009
 
козюминский в.д. презентация доклада
козюминский в.д.  презентация докладакозюминский в.д.  презентация доклада
козюминский в.д. презентация доклада
sef2009
 
Sw Team Leaderships
Sw Team LeadershipsSw Team Leaderships
Sw Team Leaderships
sef2009
 

Destacado (20)

Minsk Web Appl 190509
Minsk Web Appl 190509Minsk Web Appl 190509
Minsk Web Appl 190509
 
вопросы
вопросывопросы
вопросы
 
Sef Ikhelis
Sef IkhelisSef Ikhelis
Sef Ikhelis
 
Se Education Ukraine 2009 05 20 Im
Se Education Ukraine 2009 05 20 ImSe Education Ukraine 2009 05 20 Im
Se Education Ukraine 2009 05 20 Im
 
Bibichev Sef09 Analyst In Agile
Bibichev Sef09 Analyst In AgileBibichev Sef09 Analyst In Agile
Bibichev Sef09 Analyst In Agile
 
Evaluation Of Code Quality
Evaluation Of Code QualityEvaluation Of Code Quality
Evaluation Of Code Quality
 
технопарк бнту метолит
технопарк бнту метолиттехнопарк бнту метолит
технопарк бнту метолит
 
индустрия разработки по республики беларусь
индустрия разработки по республики беларусьиндустрия разработки по республики беларусь
индустрия разработки по республики беларусь
 
Urazbaev
UrazbaevUrazbaev
Urazbaev
 
интеграция приложений
интеграция приложенийинтеграция приложений
интеграция приложений
 
Sef Tech Customer Bezugliy Presentation
Sef Tech Customer Bezugliy PresentationSef Tech Customer Bezugliy Presentation
Sef Tech Customer Bezugliy Presentation
 
Sef презентация
Sef презентацияSef презентация
Sef презентация
 
персональные риски аналитика
персональные риски аналитикаперсональные риски аналитика
персональные риски аналитика
 
риски тестирования
риски тестированияриски тестирования
риски тестирования
 
александров обучение в сфере Software Engineering
александров   обучение в сфере Software Engineeringалександров   обучение в сфере Software Engineering
александров обучение в сфере Software Engineering
 
Mordovich Proto Presentation
Mordovich Proto PresentationMordovich Proto Presentation
Mordovich Proto Presentation
 
Amayorov Hindex
Amayorov HindexAmayorov Hindex
Amayorov Hindex
 
Silverlight 3.0 Sef
Silverlight 3.0   SefSilverlight 3.0   Sef
Silverlight 3.0 Sef
 
козюминский в.д. презентация доклада
козюминский в.д.  презентация докладакозюминский в.д.  презентация доклада
козюминский в.д. презентация доклада
 
Sw Team Leaderships
Sw Team LeadershipsSw Team Leaderships
Sw Team Leaderships
 

Similar a Evgeny Rybak Presentation

2015-12-12 | AzovDevMeetup 2015 | Enterprise приложения на PHP | Павел Крынецкий
2015-12-12 | AzovDevMeetup 2015 | Enterprise приложения на PHP | Павел Крынецкий2015-12-12 | AzovDevMeetup 2015 | Enterprise приложения на PHP | Павел Крынецкий
2015-12-12 | AzovDevMeetup 2015 | Enterprise приложения на PHP | Павел Крынецкий
JSC “Arcadia Inc”
 
Использование SOA для построения сложных веб проектов - Виталий Глибин, PyCon...
Использование SOA для построения сложных веб проектов - Виталий Глибин, PyCon...Использование SOA для построения сложных веб проектов - Виталий Глибин, PyCon...
Использование SOA для построения сложных веб проектов - Виталий Глибин, PyCon...
it-people
 
Лекция 6
Лекция 6Лекция 6
Лекция 6
itc73
 

Similar a Evgeny Rybak Presentation (20)

DLR Hosting
DLR HostingDLR Hosting
DLR Hosting
 
Dynamic Language Runtime
Dynamic Language RuntimeDynamic Language Runtime
Dynamic Language Runtime
 
ORM технологии в .NET (Nhibernate, Linq To SQL, Entity Framework)
ORM технологии в .NET (Nhibernate, Linq To SQL, Entity Framework)ORM технологии в .NET (Nhibernate, Linq To SQL, Entity Framework)
ORM технологии в .NET (Nhibernate, Linq To SQL, Entity Framework)
 
Sivko
SivkoSivko
Sivko
 
Breaking logs
Breaking logsBreaking logs
Breaking logs
 
Как это будет: ASP.NET Core
Как это будет: ASP.NET CoreКак это будет: ASP.NET Core
Как это будет: ASP.NET Core
 
Другая виртуализация
Другая виртуализацияДругая виртуализация
Другая виртуализация
 
Сетевой инженер 2.0. Что нужно знать о программируемости в корпоративной сети?
Сетевой инженер 2.0. Что нужно знать о программируемости в корпоративной сети?Сетевой инженер 2.0. Что нужно знать о программируемости в корпоративной сети?
Сетевой инженер 2.0. Что нужно знать о программируемости в корпоративной сети?
 
Руслан Гроховецкий "Как Python стал делать погоду в Яндексе"
Руслан Гроховецкий "Как Python стал делать погоду в Яндексе"Руслан Гроховецкий "Как Python стал делать погоду в Яндексе"
Руслан Гроховецкий "Как Python стал делать погоду в Яндексе"
 
Вячеслав Бахмутов
Вячеслав БахмутовВячеслав Бахмутов
Вячеслав Бахмутов
 
2015-12-12 | AzovDevMeetup 2015 | Enterprise приложения на PHP | Павел Крынецкий
2015-12-12 | AzovDevMeetup 2015 | Enterprise приложения на PHP | Павел Крынецкий2015-12-12 | AzovDevMeetup 2015 | Enterprise приложения на PHP | Павел Крынецкий
2015-12-12 | AzovDevMeetup 2015 | Enterprise приложения на PHP | Павел Крынецкий
 
DEV Labs 2013. Can C++ Code Effeciency Be Comparable to That of Middle-Level ...
DEV Labs 2013. Can C++ Code Effeciency Be Comparable to That of Middle-Level ...DEV Labs 2013. Can C++ Code Effeciency Be Comparable to That of Middle-Level ...
DEV Labs 2013. Can C++ Code Effeciency Be Comparable to That of Middle-Level ...
 
Java осень 2014 занятие 6
Java осень 2014 занятие 6Java осень 2014 занятие 6
Java осень 2014 занятие 6
 
Программируемость коммутаторов для ЦОД Cisco Nexus
Программируемость коммутаторов для ЦОД Cisco NexusПрограммируемость коммутаторов для ЦОД Cisco Nexus
Программируемость коммутаторов для ЦОД Cisco Nexus
 
Теория языков программирования некоторые слайды к лекциям
Теория языков программирования некоторые слайды к лекциямТеория языков программирования некоторые слайды к лекциям
Теория языков программирования некоторые слайды к лекциям
 
Путь к чистому и компактному коду исполняемых спецификаций
Путь к чистому и компактному коду исполняемых спецификацийПуть к чистому и компактному коду исполняемых спецификаций
Путь к чистому и компактному коду исполняемых спецификаций
 
C# 3.0
C# 3.0C# 3.0
C# 3.0
 
Desktop app based on node js and html5
Desktop app based on node js and html5Desktop app based on node js and html5
Desktop app based on node js and html5
 
Использование SOA для построения сложных веб проектов - Виталий Глибин, PyCon...
Использование SOA для построения сложных веб проектов - Виталий Глибин, PyCon...Использование SOA для построения сложных веб проектов - Виталий Глибин, PyCon...
Использование SOA для построения сложных веб проектов - Виталий Глибин, PyCon...
 
Лекция 6
Лекция 6Лекция 6
Лекция 6
 

Más de sef2009

распознавание для Web
распознавание для Webраспознавание для Web
распознавание для Web
sef2009
 
ксуп кейс
ксуп кейсксуп кейс
ксуп кейс
sef2009
 
блинов Java Belarus 2009
блинов   Java Belarus 2009блинов   Java Belarus 2009
блинов Java Belarus 2009
sef2009
 
Sef Sivakou Tezisy
Sef Sivakou TezisySef Sivakou Tezisy
Sef Sivakou Tezisy
sef2009
 
Sef Sivakou Prezentacia
Sef Sivakou PrezentaciaSef Sivakou Prezentacia
Sef Sivakou Prezentacia
sef2009
 
Sef Sivakou Doklad
Sef Sivakou DokladSef Sivakou Doklad
Sef Sivakou Doklad
sef2009
 
Sef Kolotygin.V4
Sef Kolotygin.V4Sef Kolotygin.V4
Sef Kolotygin.V4
sef2009
 
Sef 2009
Sef 2009Sef 2009
Sef 2009
sef2009
 
Sef 2009 Itsm
Sef 2009 ItsmSef 2009 Itsm
Sef 2009 Itsm
sef2009
 
Alexandrov Alex Quality
Alexandrov Alex QualityAlexandrov Alex Quality
Alexandrov Alex Quality
sef2009
 
Denisv Teamwork April 23
Denisv Teamwork April 23Denisv Teamwork April 23
Denisv Teamwork April 23
sef2009
 
Content Migration Framework
Content Migration FrameworkContent Migration Framework
Content Migration Framework
sef2009
 
25.04.09 Sidorov
25.04.09 Sidorov25.04.09 Sidorov
25.04.09 Sidorov
sef2009
 
21 05 2009 Grigorash Surova Sef
21 05 2009 Grigorash Surova Sef21 05 2009 Grigorash Surova Sef
21 05 2009 Grigorash Surova Sef
sef2009
 
якимович нагрузочное тестирование клиент серверных приложений
якимович нагрузочное тестирование клиент серверных приложенийякимович нагрузочное тестирование клиент серверных приложений
якимович нагрузочное тестирование клиент серверных приложений
sef2009
 
технологии качества возврат инвестиций
технологии качества   возврат инвестицийтехнологии качества   возврат инвестиций
технологии качества возврат инвестиций
sef2009
 
Sef Trubach V1.2
Sef Trubach V1.2Sef Trubach V1.2
Sef Trubach V1.2
sef2009
 
Sef Streluk Agile
Sef Streluk AgileSef Streluk Agile
Sef Streluk Agile
sef2009
 

Más de sef2009 (20)

распознавание для Web
распознавание для Webраспознавание для Web
распознавание для Web
 
ксуп кейс
ксуп кейсксуп кейс
ксуп кейс
 
блинов Java Belarus 2009
блинов   Java Belarus 2009блинов   Java Belarus 2009
блинов Java Belarus 2009
 
Sef Sivakou Tezisy
Sef Sivakou TezisySef Sivakou Tezisy
Sef Sivakou Tezisy
 
Sef Sivakou Prezentacia
Sef Sivakou PrezentaciaSef Sivakou Prezentacia
Sef Sivakou Prezentacia
 
Sef Sivakou Doklad
Sef Sivakou DokladSef Sivakou Doklad
Sef Sivakou Doklad
 
Sef
SefSef
Sef
 
Sef Kolotygin.V4
Sef Kolotygin.V4Sef Kolotygin.V4
Sef Kolotygin.V4
 
Sef 2009
Sef 2009Sef 2009
Sef 2009
 
Sef 2009 Itsm
Sef 2009 ItsmSef 2009 Itsm
Sef 2009 Itsm
 
Alexandrov Alex Quality
Alexandrov Alex QualityAlexandrov Alex Quality
Alexandrov Alex Quality
 
Denisv Teamwork April 23
Denisv Teamwork April 23Denisv Teamwork April 23
Denisv Teamwork April 23
 
Content Migration Framework
Content Migration FrameworkContent Migration Framework
Content Migration Framework
 
25.04.09 Sidorov
25.04.09 Sidorov25.04.09 Sidorov
25.04.09 Sidorov
 
21 05 2009 Grigorash Surova Sef
21 05 2009 Grigorash Surova Sef21 05 2009 Grigorash Surova Sef
21 05 2009 Grigorash Surova Sef
 
якимович нагрузочное тестирование клиент серверных приложений
якимович нагрузочное тестирование клиент серверных приложенийякимович нагрузочное тестирование клиент серверных приложений
якимович нагрузочное тестирование клиент серверных приложений
 
технологии качества возврат инвестиций
технологии качества   возврат инвестицийтехнологии качества   возврат инвестиций
технологии качества возврат инвестиций
 
Sef Trubach V1.2
Sef Trubach V1.2Sef Trubach V1.2
Sef Trubach V1.2
 
Sef Streluk Agile
Sef Streluk AgileSef Streluk Agile
Sef Streluk Agile
 
Sef2009
Sef2009Sef2009
Sef2009
 

Evgeny Rybak Presentation

  • 1. Dynamic Language Runtime Евгений Рыбак. Tieto
  • 2.
  • 3.
  • 4. Введение Первый анонс: MIX07 – 30 апреля 2007 года
  • 5. Введение Основные цели : Портирование динамических языков на платформу . NET Добавление динамических возможностей в существующие языки ( C#, VB.NET)
  • 6.
  • 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.
  • 12. Ядро DLR Rules Binders CallSite DynamicObject ExpandoObject COM Interop Utilities
  • 13. Ядро DLR 1 ) obj – класс или объект? 2 ) Add – метод или делегат? 3 ) Нужно ли просматривать иерархию наследования? 4 ) А что это такое в параметрах? 5 ) Подходят ли эти параметры к методу или делегату? obj. Add (1, 2)
  • 14. Ядро DLR 6 ) Не подходят? А существует ли преобразование между типами? 7 ) Явное или неявное? 8 ) Пользовательское преобразование? 9 ) ... 10 ) ... obj. Add (1, 2)
  • 15. CallSite<T> CallSite<T> механизм к э ширования операций
  • 16. CallSite<T> 3 независимых кэша : L0: Делегат Target L1: История CallSite- а L2: История похожих CallSite- ов
  • 17.
  • 18.
  • 19.
  • 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<Rule>
  • 24. Ядро DLR - Кэширование L0 : Target L1 : Update L2 : Update Глобальная история: IList<Rule>
  • 25. DynamicObject Точка входа в протокол взаимодействия между языками Облегченная реализация всех возможных дин амических операций
  • 26. Эффективная реализация динамического объекта Позволяет : Добавлять новые/Устанавливать/ Извлекать члены класса ExpandoObject
  • 27.
  • 28. Common Hosting Хостинг DLR языков в . NET приложениях Например : Выполнение IronPython, IronRuby кода в .NET приложении
  • 29.
  • 30. Common Hosting Процесс Домены приложения
  • 31. Common Hosting Домен приложения ScriptRuntime
  • 33. Common Hosting ScriptRuntime .NET приложение Script Scope (IronPython)
  • 34. Common Hosting ScriptRuntime .NET приложение Script Scope (IronPython)
  • 36. Итого - Архитектура Часть II Состоит из 3 компонент Надстройка над CLR Имеет 12 общих операций м/д языками
  • 37. Итого - Кэширование Часть II Часть III Механизм кэширования 3 независимых кэша Возможности для авторов библиотек
  • 38. Итого – Common Hosting Часть II Часть III Часть VI Взаимодействие .NET и динамических языков ( IronPython)
  • 39.
  • 40. СПАСИБО ЗА ВНИМАНИЕ http://belarusdotnet.org http://belarusdotnet.org/blogs/Engler