Видео и материалы со встречи:
http://getdev.net/Event/dynamic-language-runtime
В докладе рассмотрим скриптовые языки на платформе DLR, способы автоматизации рутинной работы с их помощью, а также интегрирование в конечное приложение.
1. D ynamic L anguage R untime
Скриптовые языки на платформе DLR,
способы автоматизации рутинной
работы с их помощью, а также
интегрирование в конечное приложение
Косухин Константин
2. Зачем?
• Создание динамических языков на платформе .NET
• Возможность динамического программирования в C# и VB.NET
• Платформа Java давно это имеет
3. Dynamic Typing
• Позднее связывание
• Утиная типизация
• Схож с технологией Reflection
(+IDynamicMetaObjectProvider)
5. Expression Trees (С#)
1. Expression<Func<int, string>> f = i => i.ToString();
• Выражение может быть записано только в одну строку
2. dynamic
• Код, записанный с использованием переменной такого типа, собирается в
Expression с runtime байндингом
dynamic d = GetFoobar(); Expression Привязка к .NET
d.CallMethod(42); DLR/CLR коду
Tree
6. Expression Trees (.NET)
• Набор выражений для создания алгоритмов (тело функции)
• Статическая и динамическая типизация
Block
int i = 2;
while(true) { Assign Loop
if(i >= 5) {
break;
} IfThen PostIncrementAssign
i++;
}
GreaterThanOrEqual Break
9. Phalanger
Имплементация языка PHP
• По заявлениям авторов, WordPress работает в 4 раза быстрее,
чем на классическом PHP
• Компоновка в исполняемый файл
• Поддержка нативных PHP расширений (x86 only)
14. Безопасность
• Скрипт имеет доступ ко всему, что есть в домене
• Создавайте скриптам отдельный домен (sandboxing)
• Рекомендуется выполнять скрипты только с ограниченными правами
• DLR помогает просто общаться между доменами — ключевые сервисы
наследуются от класса MarshalByRefObject
15. Автоматизация Работы
• Поддержка большинства сценариев со стандартной библиотекой языка
• Интеграция с WinForms и WPF
• Continuous Integration