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

Post on 21-Jan-2016

41 views 0 download

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

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

Dmitriy.Vasyura@microsoft.com

http://msdn.com/netframework

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