21cf3889cb41bcfbb5f51bbd0deb2488.ppt
- Количество слайдов: 17
Введение в DLR UNETA 16 апреля, 2010 Иван Колодяжный, Software Developer Teamdev Ltd.
Contents • Что такое DLR? o o o Expression Trees Call Site Caching Dynamic Object Interop o o o COM Plugins Dynamic languages • Как я могу это использовать?
Что такое DLR: история и релизы • Анонсирована на MIX'07 • Релизы: o Ноябрь 2008 - 0. 9 beta o Декабрь 2009 - 0. 9 stable o Май 2009 - 0. 91 stable o Октябрь 2009 - 0. 92 stable o Апрель 2010 -. NET 4. 0 release • Последний коммит на codeplex - апрель 2010 • Начиная с версии 2. 6. 2 поддерживается Mono
Что такое DLR?
+/- DLR + поддержки динамических языков + легко создавать макросы и плагины + Runtime binding +/-производительность - нет intellisense
Expression trees • Abstract syntax tree (AST)Поддержка динамических яхыков. Кодогенерация для CLR runtime
Call Site Caching • Информация о вызовах динамических методов. История вызовор методов для быстрого выполнения
Dynamic Object Interoperability • Набор классов для создания динамических объектов. Классы могут быть использованы DLR и CLR
Dynamic. Object class System. Dynamic. Object - Provides a base class for specifying dynamic behavior at run time. This class must be inherited from; you cannot instantiate it directly. (MSDN)
Класс Dynamic. Object public class Dynamic. Object : IDynamic. Meta. Object. Provider { public virtual bool Try. Get. Member(Get. Member. Binder binder, out object result); public virtual bool Try. Invoke(Invoke. Binder binder, object[] args, out object result); public virtual bool Try. Invoke. Member(Invoke. Member. Binder binder, object[] args, out object result); public virtual bool Try. Set. Member(Set. Member. Binder binder, object value); . . . }
COM Interop До: using Word = Microsoft. Office. Interop. Word; namespace COMInterop { class Program { static void Main(string[] args) { Word. Application word. Application = new Word. Application() { Visible = true }; object miss = System. Reflection. Missing. Value; object ro = true; object file. Name = @"C: \Dev. X. docx"; word. Application. Documents. Open(ref file. Name, ref miss, ref ro, ref miss, ref , miss, ref miss, ref mis, ref miss); } } }
COM Interop После: using Word = Microsoft. Office. Interop. Word; namespace COMInterop { class Program { static void Main(string[] args) { Word. Application word. Application = new Word. Application() {Visible = true}; word. Application. Documents. Open( @"C: \Dev. X. docx", Read. Only: true); } } }
Работа с JSON • Более легкая коммуникация между клиентским и серверным кодом • Более простая работа с JSON • Работа с DOM-элементами, как с. NET классами
Диначические языки "The DLR is the Language of Languages" (c) Kevin Hazzard • • • Iron. Python Iron. Ruby Iron. Lisp Iron. JS … Вы можете создать свой
Iron Python • • • Разрабатывается Microsoft Community постоянно растет Open source Не полная поддержка Cpython Некоторые популярные проекты уже портированы на Iron. Python (Django, Trac)
Ссылки • • http: //dlr. codeplex. com/ http: //ironpython. codeplex. com/ http: //ironjs. com/ http: //www. codeproject. com/KB/dotnet/DO TNETre 4 pt 0. aspx • http: //dev. net. ua/blogs/polhovskiy/pages/92 67. aspx • http: //blog. e 0 ne. info/? tag=/dlr
Вопросы