1 / 45

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

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

soo
Download Presentation

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

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Модели программирования и платформа Microsoft .NET 4.0 Дмитрий Васюра Microsoft Corporation Руководитель разработки среды Visual Basic

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

  3. Проблема Поддержка Начальная разработка

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

  5. День из жизни Development Lead-а Дмитрий Васюра Руководитель разработки среды Visual Basic Microsoft Corporation Демонстрация

  6. Базовые библиотеки: Основы • Tuple<…> – упорядоченный набор значений • Lazy<T> –отложенная инициализация • System.Numerics • BigInteger – работа с длинными целыми • Complex – комплексные числа • Co и Contra variance – IEnumerable<T>

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

  8. Базовые библиотеки: Коллекции • System.Collections.Concurrent • По возможности lock free, иначе thread-safe • IProducerConsumerCollection<T> - неблокирующий интерфейс • ConcurrentQueue<T> • ConcurrentSet<T> • ConcurrentDictionary<T> • И другие • System.Collections.Generic • ISet<T> - абстракция множеств • SortedSet<T> - множество на основе сбалансированных деревьев • HashSet<T> - множество на основе HashCode

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

  10. Параллельное программирование • Параллелизм данных (класс Parallel) • Циклы • Parallel.For • Parallel.ForEach • LINQ/query • AsParallel • Возможность настройки алгоритма распределения и назначениязадач

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

  12. Динамическое программирование Calculator calc = GetCalculator(); int sum = calc.Add(10, 20); object calc = GetCalculator(); TypecalcType = calc.GetType(); object res = calcType.InvokeMember("Add", BindingFlags.InvokeMethod, null, newobject[] { 10, 20 }); int sum = Convert.ToInt32(res); ScriptObject calc = GetCalculator(); object res = calc.Invoke("Add", 10, 20); int sum = Convert.ToInt32(res); Статически типизоровано как dymanic dynamic calc = GetCalculator(); int sum = calc.Add(10, 20); Динамическое приведение Динамический вызов

  13. Динамическое программирование IronPython IronRuby C# VB.NET И т.д. Dynamic Language Runtime Expression Trees Dynamic Dispatch Call Site Caching ObjectBinder JavaScriptBinder PythonBinder RubyBinder COMBinder

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

  15. Проблема CRASH !!! CRASH !!! CRASH !!! CRASH !!! Поддержка CRASH !!! CRASH !!! Начальная разработка

  16. Code Contracts • Новая библеотека в .NET 4.0 • Позволяет задавать и доказывать пре- и пост-условия а также инварианты в коде • Многоуровневая настройка проверки: • Во время исполнения • Полная проверка • Только требуемые условия • Статическая (во время компиляции) • Доказательство условий и выявление проблемдо запуска приложения

  17. Code Contracts Дмитрий Васюра Руководитель разработки среды Visual Basic Microsoft Corporation Демонстрация

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

  19. Проблема А давайте добавим вот это... И без этого тоже никак... Поддержка Начальная разработка

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

  21. Исходные положения • Приложения должны бытьоткрыты для расширения, но закрыты для изменения • Разработчик не может заранее предусмотреть все возможные потребности расширения приложения в будущем во время его разработки

  22. Принципы MEF • В MEF приложения строятся из частей (Parts) • Части... • Экспортируются компонентами-поставщиками (Export) • Импортируются частями-потребителями (Import) • Связываются MEF (Compose)

  23. Часть – на сцену! publicclassSimpleMortgageCalculator : IMortgageCalculator { publicILogger Logger { get; set; } publicfloat Calculate() { Logger.Log("Calculating Mortgage"); return ...; } } Часть A

  24. Экспорт [Export(typeof(IMortgageCalculator))] publicclassSimpleMortgageCalculator : IMortgageCalculator { publicILogger Logger { get; set; } publicfloat Calculate() { Logger.Log("Calculating Mortgage"); return ...; } } Часть A

  25. Импорт [Export(typeof(IMortgageCalculator))] publicclassSimpleMortgageCalculator : IMortgageCalculator { [Import(typeof(ILogger))] publicILogger Logger { get; set; } publicfloat Calculate() { Logger.Log("Calculating Mortgage"); return ...; } } Часть A

  26. Композиция • Каталог (Catalog) предоставляет части Каталог

  27. Композиция • Контейнер (Container) соединяет части Каталог

  28. Композиция • Виды каталогов AggregatingCatalog DirectoryCatalog AssemblyCatalog TypeCatalog

  29. Managed Extensibility Framework Дмитрий Васюра Руководитель разработки среды Visual Basic Microsoft Corporation Демонстрация

  30. Метаданные [Export(typeof(IMortgageCalculator))] [ExportMetadata(“Calculation”, “Simple”)] [ExportMetadata(“Tax Aware”, null)] publicclassSimpleMortgageCalculator : IMortgageCalculator { publicILogger Logger { get; set; } publicfloat Calculate() { Logger.Log("Calculating Mortgage"); return ...; } } Часть A

  31. Отложенный импорт [Import(typeof(ILogger))] publicILogger Logger { get; set; } Часть A Часть B

  32. Отложенный импорт [Import(typeof(ILogger))] publicILoggerLazy<ILogger>Logger { get; set; } Часть A Lazy <B>

  33. Managed Extensibility Framework Дмитрий Васюра Руководитель разработки среды Visual Basic Microsoft Corporation Демонстрация

  34. Это может зайти далеко... [Export(typeof(IMortgageCalculator))] [ExportMetadata(“Calculation”, “Simple”)] [ExportMetadata(“Tax Aware”, null)] [ExportMetadata(“This”, “foo”)] [ExportMetadata(“That”, “bar”)] Часть A

  35. Это может зайти далеко... [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”)] Part A

  36. Managed Extensibility Framework Дмитрий Васюра Руководитель разработки среды Visual Basic Microsoft Corporation Демонстрация

  37. Жизненный цикл частей Shared Non-Shared Контейнер Контейнер Часть B Часть B Часть B ЧастьA

  38. Managed Extensibility Framework Дмитрий Васюра Руководитель разработки среды Visual Basic Microsoft Corporation Демонстрация

  39. Проблема… Поддержка Начальная разработка

  40. Решение Поддержка Начальная разработка

  41. Итоги • .NET Framework 4.0 и Visual Studio 2010 открывают новые возможности для эффективной разработки надежных и гибких приложений • Ваше мнение очень важно! • Скачивайте Beta2 • Пользуйтесь ресурсами • Делитесь с нами Вашими отзывами

  42. Ресурсы • .NET Framework на MSDNhttp://msdn.com/netframework • Parallel Computing Developer Centerhttp://msdn.com/concurrency • Code Contractshttp://msdn.microsoft.com/en-us/devlabs/dd491992.aspx • Managed Extensibility Frameworkhttp://www.codeplex.com/MEF

  43. Вопросы Дмитрий ВасюраРуководитель разработки среды Visual Basic Dmitriy.Vasyura@microsoft.com http://msdn.com/netframework • Вы сможете задать вопросы докладчику в зоне «Спроси эксперта» в течение часа после завершения этого доклада

More Related