Модели программирования и платформа microsoft .net 4.0
DESCRIPTION
Модели программирования и платформа Microsoft .NET 4.0. Дмитрий Васюра. Microsoft Corporation. Руководитель разработки среды Visual Basic. Содержание. Зачем все это нужно ? Новое в CLR и Base Class Libraries (BCL) Parallel Task Library Динамическое программирование Code Contracts - PowerPoint PPT PresentationTRANSCRIPT
http://msplatforma.ru
Microsoft Платформа 2010
Модели программирования и платформа Microsoft .NET 4.0
Microsoft Corporation
Дмитрий Васюра
Руководитель разработки среды Visual Basic
http://msplatforma.ru
Microsoft Платформа 2010
Содержание
Зачем все это нужно?Новое в CLR и Base Class Libraries (BCL)Parallel Task LibraryДинамическое программированиеCode ContractsManaged Extensibility FrameworkИтоги
http://msplatforma.ru
Microsoft Платформа 2010
Проблема
Поддержка
Начальная разработка
http://msplatforma.ru
Microsoft Платформа 2010
Тренды моделей программирования
Декларативное
Параллельное
Динамическое
http://msplatforma.ru
Microsoft Платформа 2010
Дмитрий Васюра
Руководитель разработки среды Visual Basic
Microsoft Corporation
Демонстрация
День из жизни Development Lead-а
http://msplatforma.ru
Microsoft Платформа 2010
Базовые библиотеки: Основы
Tuple<…> – упорядоченный набор значенийLazy<T> – отложенная инициализацияSystem.Numerics
BigInteger – работа с длинными целымиComplex – комплексные числа
Co и Contra variance – IEnumerable<T>
http://msplatforma.ru
Microsoft Платформа 2010
Базовые библиотеки: System.IO
IEnumerable на Directory и DirectoryInfo – ускоренный просмотр файловMemoryMappedFiles – работа с большими файлами на основе Windows API-sCompression – увеличение коэффициента сжатия, поддержка архивов размером > 4GB
http://msplatforma.ru
Microsoft Платформа 2010
Базовые библиотеки: Коллекции
System.Collections.ConcurrentПо возможности lock free, иначе thread-safeIProducerConsumerCollection<T> - неблокирующий интерфейсConcurrentQueue<T>ConcurrentSet<T>ConcurrentDictionary<T> И другие
System.Collections.GenericISet<T> - абстракция множествSortedSet<T> - множество на основе сбалансированных деревьевHashSet<T> - множество на основе HashCode
http://msplatforma.ru
Microsoft Платформа 2010
Параллельное программирование
Parallel Task LibraryТехнология и инструменты для цивилизованной разработки с multi-threaded приложениямиУпрощает реализацию параллельного кодаЭффективно управляет ресурсами для оптимальной масштабируемостиАдаптируется к железу без перекомпиляции
http://msplatforma.ru
Microsoft Платформа 2010
Параллельное программирование
Параллелизм данных (класс Parallel)Циклы
Parallel.ForParallel.ForEach
LINQ/queryAsParallel
Возможность настройки алгоритма распределения и назначения задач
http://msplatforma.ru
Microsoft Платформа 2010
Параллельное программирование
Новый набор примитивов для эффективного решения параллельных задач
System.Threading.Tasks.Task – отдельный элемент работыParallel.Invoke – запуск и распределение задачCancellationToken(Source) – стандартный способ асинхронной отменыBarrier и другие классы
http://msplatforma.ru
Microsoft Платформа 2010
Динамическое программирование
Calculator calc = GetCalculator();int sum = calc.Add(10, 20);
object calc = GetCalculator();Type calcType = calc.GetType();object res = calcType.InvokeMember("Add", BindingFlags.InvokeMethod, null, new object[] { 10, 20 });int sum = Convert.ToInt32(res);
ScriptObject calc = GetCalculator();object res = calc.Invoke("Add", 10, 20);int sum = Convert.ToInt32(res);
dynamic calc = GetCalculator();int sum = calc.Add(10, 20);
Статически типизоровано как dymanic
Динамический вызов
Динамическое приведение
http://msplatforma.ru
Microsoft Платформа 2010
Динамическое программирование
PythonBinder
RubyBinder
COMBinder
JavaScript
Binder
ObjectBinder
Dynamic Language Runtime
Expression TreesDynamic Dispatch
Call Site Caching
IronPython
IronRuby C# VB.NET И т.д.
http://msplatforma.ru
Microsoft Платформа 2010
Динамическое программирование
Достоинства DLRРеализация динамических языков на платформе .NET (например IronRuby, IronPython)Использование динамических конструкций в статических языках (например VB, C#)Переиспользование и разделение кода и библиотек из разных средБыстрое разрешение и исполнение динамических операций
http://msplatforma.ru
Microsoft Платформа 2010
Проблема
Поддержка
Начальная разработка
CRASH !!! CRASH !!
!
CRASH !!!
CRASH !!!
CRASH !!! CRASH !!
!
http://msplatforma.ru
Microsoft Платформа 2010
Code Contracts
Новая библеотека в .NET 4.0Позволяет задавать и доказывать пре- и пост-условия а также инварианты в кодеМногоуровневая настройка проверки:
Во время исполненияПолная проверкаТолько требуемые условия
Статическая (во время компиляции)Доказательство условий и выявление проблем до запуска приложения
http://msplatforma.ru
Microsoft Платформа 2010
Дмитрий Васюра
Руководитель разработки среды Visual Basic
Microsoft Corporation
Демонстрация
Code Contracts
http://msplatforma.ru
Microsoft Платформа 2010
Code Contracts
Доступны в любом .NET приложенииПолная поддержка в среде Visual Studio 2010Гибкая система настройки позволяет балансировать диагностику с производительностью
http://msplatforma.ru
Microsoft Платформа 2010
Проблема
Поддержка
Начальная разработка
А давайте добавим вот
это...
И без этого тоже никак...
http://msplatforma.ru
Microsoft Платформа 2010
Managed Extensibility Framework
Новая библиотека в .NET Framework Расширяет переиспользоание приложений и компонентовПозволяет перейти от статической компиляции к динамической композиции
http://msplatforma.ru
Microsoft Платформа 2010
Исходные положения
Приложения должны быть открыты для расширения, но закрыты для изменения
Разработчик не может заранее предусмотреть все возможные потребности расширения приложения в будущем во время его разработки
http://msplatforma.ru
Microsoft Платформа 2010
Принципы MEF
В MEF приложения строятся из частей (Parts)Части...
Экспортируются компонентами-поставщиками (Export)Импортируются частями-потребителями (Import)Связываются MEF (Compose)
http://msplatforma.ru
Microsoft Платформа 2010
Часть – на сцену!
ЧастьA
public class SimpleMortgageCalculator : IMortgageCalculator{
public ILogger Logger { get; set; }
public float Calculate(){
Logger.Log("Calculating Mortgage");
return ...;}
}
http://msplatforma.ru
Microsoft Платформа 2010
Экспорт
ЧастьA
[Export(typeof(IMortgageCalculator))]public class SimpleMortgageCalculator : IMortgageCalculator{
public ILogger Logger { get; set; }
public float Calculate(){
Logger.Log("Calculating Mortgage");
return ...;}
}
http://msplatforma.ru
Microsoft Платформа 2010
Импорт
ЧастьA
[Export(typeof(IMortgageCalculator))]public class SimpleMortgageCalculator : IMortgageCalculator{
[Import(typeof(ILogger))]public ILogger Logger { get; set; }
public float Calculate(){
Logger.Log("Calculating Mortgage");
return ...;}
}
http://msplatforma.ru
Microsoft Платформа 2010
Композиция
Каталог (Catalog) предоставляет части
Каталог
http://msplatforma.ru
Microsoft Платформа 2010
Композиция
Контейнер (Container) соединяет части
Каталог
http://msplatforma.ru
Microsoft Платформа 2010
Композиция
Виды каталогов
TypeCatalog
AssemblyCatalog
DirectoryCatalog
AggregatingCatalog
http://msplatforma.ru
Microsoft Платформа 2010
Дмитрий Васюра
Руководитель разработки среды Visual Basic
Microsoft Corporation
Демонстрация
Managed Extensibility Framework
http://msplatforma.ru
Microsoft Платформа 2010
Метаданные
ЧастьA
[Export(typeof(IMortgageCalculator))][ExportMetadata(“Calculation”, “Simple”)][ExportMetadata(“Tax Aware”, null)]public class SimpleMortgageCalculator : IMortgageCalculator{
public ILogger Logger { get; set; }
public float Calculate(){
Logger.Log("Calculating Mortgage");
return ...;}
}
http://msplatforma.ru
Microsoft Платформа 2010
Отложенный импорт
ЧастьA
[Import(typeof(ILogger))]public ILogger Logger { get; set; }
ЧастьB
http://msplatforma.ru
Microsoft Платформа 2010
Отложенный импорт
Часть A
Lazy<B>
[Import(typeof(ILogger))]public ILogger Lazy<ILogger> Logger { get; set; }
http://msplatforma.ru
Microsoft Платформа 2010
Дмитрий Васюра
Руководитель разработки среды Visual Basic
Microsoft Corporation
Демонстрация
Managed Extensibility Framework
http://msplatforma.ru
Microsoft Платформа 2010
Это может зайти далеко...
ЧастьA
[Export(typeof(IMortgageCalculator))][ExportMetadata(“Calculation”, “Simple”)][ExportMetadata(“Tax Aware”, null)][ExportMetadata(“This”, “foo”)][ExportMetadata(“That”, “bar”)]
http://msplatforma.ru
Microsoft Платформа 2010
Это может зайти далеко...
Part A
[Export(typeof(IMortgageCalculator))][ExportMetadata(“Calculation”, “Simple”)][ExportMetadata(“Tax Aware”, null)][ExportMetadata(“This”, “foo”)][ExportMetadata(“That”, “bar”)]
[Export(typeof(IMortgageCalculator))][CalcCapabilities(
Mode=Complexity.Simple,TaxAware=true,This=“foo”,That=“bar”)]
http://msplatforma.ru
Microsoft Платформа 2010
Дмитрий Васюра
Руководитель разработки среды Visual Basic
Microsoft Corporation
Демонстрация
Managed Extensibility Framework
http://msplatforma.ru
Microsoft Платформа 2010
Жизненный цикл частей
КонтейнерКонтейнер
Часть A Часть BЧасть BЧасть B
Shared Non-Shared
http://msplatforma.ru
Microsoft Платформа 2010
Дмитрий Васюра
Руководитель разработки среды Visual Basic
Microsoft Corporation
Демонстрация
Managed Extensibility Framework
http://msplatforma.ru
Microsoft Платформа 2010
Проблема…
Поддержка
Начальная разработка
http://msplatforma.ru
Microsoft Платформа 2010
Решение
Поддержка
Начальная разработка
http://msplatforma.ru
Microsoft Платформа 2010
Итоги
.NET Framework 4.0 и Visual Studio 2010 открывают новые возможности для эффективной разработки надежных и гибких приложений
Ваше мнение очень важно!Скачивайте Beta2Пользуйтесь ресурсамиДелитесь с нами Вашими отзывами
http://msplatforma.ru
Microsoft Платформа 2010
Ресурсы
.NET Framework на MSDN http://msdn.com/netframework Parallel Computing Developer Center http://msdn.com/concurrencyCode Contracts http://msdn.microsoft.com/en-us/devlabs/dd491992.aspxManaged Extensibility Framework http://www.codeplex.com/MEF
http://msplatforma.ru
Microsoft Платформа 2010
Вопросы
Дмитрий ВасюраРуководитель разработки среды Visual Basic
http://msdn.com/netframework
Вы сможете задать вопросы докладчику в зоне «Спроси эксперта» в течение часа после завершения этого доклада