Модели программирования и платформа Microsoft .NET 4.0

45

description

Модели программирования и платформа Microsoft .NET 4.0. Дмитрий Васюра. Microsoft Corporation. Руководитель разработки среды Visual Basic. Содержание. Зачем все это нужно ? Новое в CLR и Base Class Libraries (BCL) Parallel Task Library Динамическое программирование Code Contracts - PowerPoint PPT Presentation

Transcript of Модели программирования и платформа Microsoft .NET 4.0

Page 1: Модели программирования и платформа Microsoft .NET  4.0
Page 2: Модели программирования и платформа Microsoft .NET  4.0

http://msplatforma.ru

Microsoft Платформа 2010

Модели программирования и платформа Microsoft .NET 4.0

Microsoft Corporation

Дмитрий Васюра

Руководитель разработки среды Visual Basic

Page 3: Модели программирования и платформа Microsoft .NET  4.0

http://msplatforma.ru

Microsoft Платформа 2010

Содержание

Зачем все это нужно?Новое в CLR и Base Class Libraries (BCL)Parallel Task LibraryДинамическое программированиеCode ContractsManaged Extensibility FrameworkИтоги

Page 4: Модели программирования и платформа Microsoft .NET  4.0

http://msplatforma.ru

Microsoft Платформа 2010

Проблема

Поддержка

Начальная разработка

Page 5: Модели программирования и платформа Microsoft .NET  4.0

http://msplatforma.ru

Microsoft Платформа 2010

Тренды моделей программирования

Декларативное

Параллельное

Динамическое

Page 6: Модели программирования и платформа Microsoft .NET  4.0

http://msplatforma.ru

Microsoft Платформа 2010

Дмитрий Васюра

Руководитель разработки среды Visual Basic

Microsoft Corporation

Демонстрация

День из жизни Development Lead-а

Page 7: Модели программирования и платформа Microsoft .NET  4.0

http://msplatforma.ru

Microsoft Платформа 2010

Базовые библиотеки: Основы

Tuple<…> – упорядоченный набор значенийLazy<T> – отложенная инициализацияSystem.Numerics

BigInteger – работа с длинными целымиComplex – комплексные числа

Co и Contra variance – IEnumerable<T>

Page 8: Модели программирования и платформа Microsoft .NET  4.0

http://msplatforma.ru

Microsoft Платформа 2010

Базовые библиотеки: System.IO

IEnumerable на Directory и DirectoryInfo – ускоренный просмотр файловMemoryMappedFiles – работа с большими файлами на основе Windows API-sCompression – увеличение коэффициента сжатия, поддержка архивов размером > 4GB

Page 9: Модели программирования и платформа Microsoft .NET  4.0

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

Page 10: Модели программирования и платформа Microsoft .NET  4.0

http://msplatforma.ru

Microsoft Платформа 2010

Параллельное программирование

Parallel Task LibraryТехнология и инструменты для цивилизованной разработки с multi-threaded приложениямиУпрощает реализацию параллельного кодаЭффективно управляет ресурсами для оптимальной масштабируемостиАдаптируется к железу без перекомпиляции

Page 11: Модели программирования и платформа Microsoft .NET  4.0

http://msplatforma.ru

Microsoft Платформа 2010

Параллельное программирование

Параллелизм данных (класс Parallel)Циклы

Parallel.ForParallel.ForEach

LINQ/queryAsParallel

Возможность настройки алгоритма распределения и назначения задач

Page 12: Модели программирования и платформа Microsoft .NET  4.0

http://msplatforma.ru

Microsoft Платформа 2010

Параллельное программирование

Новый набор примитивов для эффективного решения параллельных задач

System.Threading.Tasks.Task – отдельный элемент работыParallel.Invoke – запуск и распределение задачCancellationToken(Source) – стандартный способ асинхронной отменыBarrier и другие классы

Page 13: Модели программирования и платформа Microsoft .NET  4.0

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

Динамический вызов

Динамическое приведение

Page 14: Модели программирования и платформа Microsoft .NET  4.0

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 И т.д.

Page 15: Модели программирования и платформа Microsoft .NET  4.0

http://msplatforma.ru

Microsoft Платформа 2010

Динамическое программирование

Достоинства DLRРеализация динамических языков на платформе .NET (например IronRuby, IronPython)Использование динамических конструкций в статических языках (например VB, C#)Переиспользование и разделение кода и библиотек из разных средБыстрое разрешение и исполнение динамических операций

Page 16: Модели программирования и платформа Microsoft .NET  4.0

http://msplatforma.ru

Microsoft Платформа 2010

Проблема

Поддержка

Начальная разработка

CRASH !!! CRASH !!

!

CRASH !!!

CRASH !!!

CRASH !!! CRASH !!

!

Page 17: Модели программирования и платформа Microsoft .NET  4.0

http://msplatforma.ru

Microsoft Платформа 2010

Code Contracts

Новая библеотека в .NET 4.0Позволяет задавать и доказывать пре- и пост-условия а также инварианты в кодеМногоуровневая настройка проверки:

Во время исполненияПолная проверкаТолько требуемые условия

Статическая (во время компиляции)Доказательство условий и выявление проблем до запуска приложения

Page 18: Модели программирования и платформа Microsoft .NET  4.0

http://msplatforma.ru

Microsoft Платформа 2010

Дмитрий Васюра

Руководитель разработки среды Visual Basic

Microsoft Corporation

Демонстрация

Code Contracts

Page 19: Модели программирования и платформа Microsoft .NET  4.0

http://msplatforma.ru

Microsoft Платформа 2010

Code Contracts

Доступны в любом .NET приложенииПолная поддержка в среде Visual Studio 2010Гибкая система настройки позволяет балансировать диагностику с производительностью

Page 20: Модели программирования и платформа Microsoft .NET  4.0

http://msplatforma.ru

Microsoft Платформа 2010

Проблема

Поддержка

Начальная разработка

А давайте добавим вот

это...

И без этого тоже никак...

Page 21: Модели программирования и платформа Microsoft .NET  4.0

http://msplatforma.ru

Microsoft Платформа 2010

Managed Extensibility Framework

Новая библиотека в .NET Framework Расширяет переиспользоание приложений и компонентовПозволяет перейти от статической компиляции к динамической композиции

Page 22: Модели программирования и платформа Microsoft .NET  4.0

http://msplatforma.ru

Microsoft Платформа 2010

Исходные положения

Приложения должны быть открыты для расширения, но закрыты для изменения

Разработчик не может заранее предусмотреть все возможные потребности расширения приложения в будущем во время его разработки

Page 23: Модели программирования и платформа Microsoft .NET  4.0

http://msplatforma.ru

Microsoft Платформа 2010

Принципы MEF

В MEF приложения строятся из частей (Parts)Части...

Экспортируются компонентами-поставщиками (Export)Импортируются частями-потребителями (Import)Связываются MEF (Compose)

Page 24: Модели программирования и платформа Microsoft .NET  4.0

http://msplatforma.ru

Microsoft Платформа 2010

Часть – на сцену!

ЧастьA

public class SimpleMortgageCalculator : IMortgageCalculator{

public ILogger Logger { get; set; }

public float Calculate(){

Logger.Log("Calculating Mortgage");

return ...;}

}

Page 25: Модели программирования и платформа Microsoft .NET  4.0

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 ...;}

}

Page 26: Модели программирования и платформа Microsoft .NET  4.0

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 ...;}

}

Page 27: Модели программирования и платформа Microsoft .NET  4.0

http://msplatforma.ru

Microsoft Платформа 2010

Композиция

Каталог (Catalog) предоставляет части

Каталог

Page 28: Модели программирования и платформа Microsoft .NET  4.0

http://msplatforma.ru

Microsoft Платформа 2010

Композиция

Контейнер (Container) соединяет части

Каталог

Page 29: Модели программирования и платформа Microsoft .NET  4.0

http://msplatforma.ru

Microsoft Платформа 2010

Композиция

Виды каталогов

TypeCatalog

AssemblyCatalog

DirectoryCatalog

AggregatingCatalog

Page 30: Модели программирования и платформа Microsoft .NET  4.0

http://msplatforma.ru

Microsoft Платформа 2010

Дмитрий Васюра

Руководитель разработки среды Visual Basic

Microsoft Corporation

Демонстрация

Managed Extensibility Framework

Page 31: Модели программирования и платформа Microsoft .NET  4.0

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 ...;}

}

Page 32: Модели программирования и платформа Microsoft .NET  4.0

http://msplatforma.ru

Microsoft Платформа 2010

Отложенный импорт

ЧастьA

[Import(typeof(ILogger))]public ILogger Logger { get; set; }

ЧастьB

Page 33: Модели программирования и платформа Microsoft .NET  4.0

http://msplatforma.ru

Microsoft Платформа 2010

Отложенный импорт

Часть A

Lazy<B>

[Import(typeof(ILogger))]public ILogger Lazy<ILogger> Logger { get; set; }

Page 34: Модели программирования и платформа Microsoft .NET  4.0

http://msplatforma.ru

Microsoft Платформа 2010

Дмитрий Васюра

Руководитель разработки среды Visual Basic

Microsoft Corporation

Демонстрация

Managed Extensibility Framework

Page 35: Модели программирования и платформа Microsoft .NET  4.0

http://msplatforma.ru

Microsoft Платформа 2010

Это может зайти далеко...

ЧастьA

[Export(typeof(IMortgageCalculator))][ExportMetadata(“Calculation”, “Simple”)][ExportMetadata(“Tax Aware”, null)][ExportMetadata(“This”, “foo”)][ExportMetadata(“That”, “bar”)]

Page 36: Модели программирования и платформа Microsoft .NET  4.0

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”)]

Page 37: Модели программирования и платформа Microsoft .NET  4.0

http://msplatforma.ru

Microsoft Платформа 2010

Дмитрий Васюра

Руководитель разработки среды Visual Basic

Microsoft Corporation

Демонстрация

Managed Extensibility Framework

Page 38: Модели программирования и платформа Microsoft .NET  4.0

http://msplatforma.ru

Microsoft Платформа 2010

Жизненный цикл частей

КонтейнерКонтейнер

Часть A Часть BЧасть BЧасть B

Shared Non-Shared

Page 39: Модели программирования и платформа Microsoft .NET  4.0

http://msplatforma.ru

Microsoft Платформа 2010

Дмитрий Васюра

Руководитель разработки среды Visual Basic

Microsoft Corporation

Демонстрация

Managed Extensibility Framework

Page 40: Модели программирования и платформа Microsoft .NET  4.0

http://msplatforma.ru

Microsoft Платформа 2010

Проблема…

Поддержка

Начальная разработка

Page 41: Модели программирования и платформа Microsoft .NET  4.0

http://msplatforma.ru

Microsoft Платформа 2010

Решение

Поддержка

Начальная разработка

Page 42: Модели программирования и платформа Microsoft .NET  4.0

http://msplatforma.ru

Microsoft Платформа 2010

Итоги

.NET Framework 4.0 и Visual Studio 2010 открывают новые возможности для эффективной разработки надежных и гибких приложений

Ваше мнение очень важно!Скачивайте Beta2Пользуйтесь ресурсамиДелитесь с нами Вашими отзывами

Page 43: Модели программирования и платформа Microsoft .NET  4.0

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

Page 44: Модели программирования и платформа Microsoft .NET  4.0

http://msplatforma.ru

Microsoft Платформа 2010

Вопросы

Дмитрий ВасюраРуководитель разработки среды Visual Basic

[email protected]

http://msdn.com/netframework

Вы сможете задать вопросы докладчику в зоне «Спроси эксперта» в течение часа после завершения этого доклада

Page 45: Модели программирования и платформа Microsoft .NET  4.0