Presentation is loading. Please wait.

Presentation is loading. Please wait.

Введение в DLR UNETA 16 апреля, 2010 Иван Колодяжный, Software Developer Teamdev Ltd.

Similar presentations


Presentation on theme: "Введение в DLR UNETA 16 апреля, 2010 Иван Колодяжный, Software Developer Teamdev Ltd."— Presentation transcript:

1 Введение в DLR UNETA 16 апреля, 2010 Иван Колодяжный, Software Developer Teamdev Ltd.

2 Contents Что такое DLR? o Expression Trees o Call Site Caching o Dynamic Object Interop Как я могу это использовать? o COM o Plugins o Dynamic languages

3 Что такое 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

4 Что такое DLR?

5 +/- DLR + поддержки динамических языков + легко создавать макросы и плагины + Runtime binding +/-производительность - нет intellisense

6 Expression trees Abstract syntax tree (AST)Поддержка динамических яхыковКодогенерация для CLR runtime

7 Call Site Caching Информация о вызовах динамических методовИстория вызовор методов для быстрого выполнения

8 Dynamic Object Interoperability Набор классов для создания динамических объектовКлассы могут быть использованы DLR и CLR

9 DynamicObject class System.Dynamic.DynamicObject - Provides a base class for specifying dynamic behavior at run time. This class must be inherited from; you cannot instantiate it directly. (MSDN)

10 Класс DynamicObject public class DynamicObject : IDynamicMetaObjectProvider { public virtual bool TryGetMember(GetMemberBinder binder, out object result); public virtual bool TryInvoke(InvokeBinder binder, object[] args, out object result); public virtual bool TryInvokeMember(InvokeMemberBinder binder, object[] args, out object result); public virtual bool TrySetMember(SetMemberBinder binder, object value);... }

11 COM Interop До: using Word = Microsoft.Office.Interop.Word; namespace COMInterop { class Program { static void Main(string[] args) { Word.Application wordApplication = new Word.Application() { Visible = true }; object miss = System.Reflection.Missing.Value; object ro = true; object fileName = @"C:\\DevX.docx"; wordApplication.Documents.Open(ref fileName, ref miss, ref ro, ref miss, ref miss, ref miss, ref miss, ref, miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref mis,ref miss); }

12 COM Interop После: using Word = Microsoft.Office.Interop.Word; namespace COMInterop { class Program { static void Main(string[] args) { Word.Application wordApplication = new Word.Application() {Visible = true}; wordApplication.Documents.Open( @"C:\\DevX.docx", ReadOnly: true); }

13 Работа с JSON Более легкая коммуникация между клиентским и серверным кодом Более простая работа с JSON Работа с DOM-элементами, как с.NET классами

14 Диначические языки IronPython IronRuby IronLisp IronJS … Вы можете создать свой "The DLR is the Language of Languages" (c) Kevin Hazzard

15 Iron Python Разрабатывается Microsoft Community постоянно растет Open source Не полная поддержка Cpython Некоторые популярные проекты уже портированы на IronPython (Django, Trac)

16 Ссылки http://dlr.codeplex.com/ http://ironpython.codeplex.com/http://ironpython.codeplex.com http://ironjs.com/ http://www.codeproject.com/KB/dotnet/DOT NETre4pt0.aspxcodeproject.com/K http://dev.net.ua/blogs/polhovskiy/pages/92 67.aspx http://blog.e0ne.info/?tag=/dlr

17 Вопросы


Download ppt "Введение в DLR UNETA 16 апреля, 2010 Иван Колодяжный, Software Developer Teamdev Ltd."

Similar presentations


Ads by Google