ASP.NET Core 5

advertisement
Microsoft Developer Tour
Технологическая экспедиция
msdevtour.ru
Microsoft Developer Tour
Технологическая экспедиция
#msdevtour
Платформа .NET сегодня и
завтра
Ромуальд Здебский
Руководитель направления по мобильным играм, Microsoft
rzdebski@microsoft.com @zdebskiy
Объединение Windows почти закончено
Общее ядро
и платформа
приложений
Объединение
ядер ОС
Объединение
модели
приложений
Windows 10
Для пользователей
легче всегда быть с
актуальной версией
Windows 10 для широкого спектра устройств…
Phone
Phablet
Small
Tablet
Large
Tablet
2-in-1s
(Tablet or Laptop)
Desktops
& All-in-Ones
Classic
Laptop
IoT
HoloLens
Microsoft
Surface Hub
Xbox
…с единой платформой разработки для каждого устройства
Adaptive UI
+ Controls
Natural
User Inputs
Live Tiles +
Notifications
Monetization
+ Distribution
Full Support for
Existing Code
One project type to rule them all…
Apps
Object
.NET Framework
"DotNet" by Soumyasch - Own work. Licensed under CC BY-SA 3.0 via Wikimedia Commons http://commons.wikimedia.org/wiki/File:DotNet.svg#/media/File:DotNet.svg
Зоны развития
Performance: For data centric applications, the platform needs to scale to enable the display and manipulation of
hundreds and thousands of rows of data. Some key scenarios we are looking to optimize in this context are application
startup, scrolling and virtualization performance of ItemsControls.
DirectX interoperability: The primary scenario of interest here is to make it seamless for WPF applications to
interoperate with newer versions of DirectX. An example would be native support for DX11 in D3Dimage
Supporting modern hardware: Technologies like touch and high density displays are ubiquitous on modern
devices. Making it for existing easy for WPF applications to adapt to these new hardware capabilities is a high priority
for us
Tooling: We will continue to co-evolve the tooling for WPF when appropriate, alongside new platforms like .NET/WinRT
http://blogs.msdn.com/b/dotnet/archive/2014/11/12/the-roadmap-for-wpf.aspx
Visual Diagnostics (Inspect & Modify Element Properties While Debugging)
Live Property Explorer
Live Visual Tree
Timeline Tool (WPF Performance Diagnostics)
Blend Improvements
Improved version control support
XAML IntelliSense
Basic debugging capabilities
“Цикл разработки ускоряется”
“Нам нужно разрабатывать кросс-платформенные приложения”
“Open Source – обогащает сообщество и саму платформу”
“…но необходимо поддерживать существующие приложения”
.NET Framework 4.6
.NET Core 5
Runtime
Компиляторы
NuGet packages
След.поколение JIT (“RyuJIT”)
SIMD (параллелизм)
.NET Compiler Platform (“Roslyn”)
Инновации в языках
.NET Core 5 Libraries
.NET Framework 4.6 Libraries
Windows Desktop
App
Model
Windows Store
Windows Phone
App
Model
App
Model
ASP.NET 4
App
Model
ASP.NET 5
App
Model
Framework
Framework
Framework
Runtime
Framework
Framework
Runtime
Runtime
Runtime
Runtime
ASP.NET 5
App Model
Universal Windows Apps
Model
Любая другая
модель
приложений
Unified BCL
(Base Class Library)
Runtime Adaption Layer
Core CLR
.NET Native
И Runtime
Other Runtime
ASP.NET 5
Универсальный framework для MVC, Web API и SignalR
.NET Framework 4.6 stack and libs
Полный .NET Framework для любых сценариев
и полной поддержкой существующих библиотек
.NET Core 5 stack and libs
Компактный runtime, оптимизированный для
серверных и облачных задач
ASP.NET 5.0
Оптимизирован для облака
Модульный и открытый
Улучшенные инструменты
и библиотеки
.NET 2015
Runtime
След.поколение JIT (“RyuJIT”)
SIMD (параллелизм)
Компиляторы
.NET Compiler Platform (“Roslyn”)
Инновации в языках
Библиотеки
BCL и PCL
Entity Framework
.NET 2015
Runtime
След.поколение JIT (“RyuJIT”)
SIMD (параллелизм)
Компиляторы
.NET Compiler Platform (“Roslyn”)
Инновации в языках
Библиотеки
BCL и PCL
Entity Framework
.NET 2015
.NET Framework 4.6
.NET Core 5
ASP.NET Core 5
.NET Native (для Windows 10)
ASP.NET 5
ASP.NET 4.6
WPF
Windows Forms
Windows desktop
Windows mobile devices
Windows embedded devices
ASP.NET Core 5 для Mac и Linux
Runtime
След.поколение JIT (“RyuJIT”)
SIMD (параллелизм)
Компиляторы
.NET Compiler Platform (“Roslyn”)
Инновации в языках
Библиотеки
BCL и PCL
Entity Framework
.NET 2015
Runtime
След.поколение JIT (“RyuJIT”)
SIMD (параллелизм)
Компиляторы
.NET Compiler Platform (“Roslyn”)
Инновации в языках
Библиотеки
BCL и PCL
Entity Framework
.NET Native
Desktop CLR
Visual Studio
Одинаковая комфортная разработка в Visual Studio на обоих платформах
Библиотеки,
Interop и
сериализация
Библиотеки оптимизированы для
современных профилей устройств и облака.
Генерация кода для сериализации во время
компиляции.
Библиотеки работают на широком диапазоне
устройств и в облаке. Сериализация и
интероперабельность поддерживаются средой
выполнения.
Компоновка
(linking)
Статическая компоновка требуемых
библиотек, позволяет улучшить
производительность и совместимость
Не предназначена для статической компоновки.
Библиотеки разделяются всеми приложениями.
Оптимизирующая
компиляция
Используется оптимизирующий backend
компилятора C++
JIT-компилятор должен работать быстро, нет
возможности производить сложную
оптимизацию
Среда
выполнения
(runtime)
Компактная нативная среда выполнения со
сборкой мусора и безопасностью памяти.
Богатая среда выполнения, поддерживающая
большое количество современных и устаревших
сценариев.
•
•
• .NET должен эффективно работать на смартфонах и менее
производительных устройствах.
•
•
•
• Windows Update не повлияет на работу вашего приложения
•
•
•
•
•
.NET 2015
Runtime
След.поколение JIT (“RyuJIT”)
SIMD (параллелизм)
Компиляторы
.NET Compiler Platform (“Roslyn”)
Инновации в языках
Библиотеки
BCL и PCL
Entity Framework
.NET - Open Source
Все проекты обновлены
до MIT License
Проекты
•
•
•
•
•
ASP.NET 5
Entity Framework
.NET Core 5
.NET Compiler Platform
+ проекты сообщества
Как участвовать
• .NET Foundation
• GitHub
Кросс-платформенная
реализация .NET Core
.NET Core будет реализован на
различных платформах
Поддержка Linux и Mac от Microsoft
c Mono
Поддержка Linux в Visual Studio
(напр., отладка, Docker)
Интеграция с Sublime через Kulture
.NET 2015
Runtime
След.поколение JIT (“RyuJIT”)
SIMD (параллелизм)
Компиляторы
.NET Compiler Platform (“Roslyn”)
Инновации в языках
Библиотеки
BCL и PCL
Entity Framework
.NET 2015
C#
VB
API
OSS
Философия версии 6.0:
Нет драматических изменений
Много небольших улучшений
Упрощение кода
public class Point
{
public int X { get; set; }
public int Y { get; set; }
public Point(int x, int y) { X = x; Y = y; }
public double Dist
{
get { return Math.Sqrt(X * X + Y * Y); }
}
public override string ToString()
{
return String.Format("({0}, {1})", X, Y);
}
}
public class Point
{
public int X { get; }
public int Y { get; }
public Point(int x, int y) { X = x; Y = y; }
public double Dist
{
get { return Math.Sqrt(X * X + Y * Y); }
}
public override string ToString()
{
return String.Format("({0}, {1})", X, Y);
}
}
public class Point
{
public int X { get; }
public int Y { get; }
public Point(int x, int y) { X = x; Y = y; }
public double Dist
{
get { return Math.Sqrt(X * X + Y * Y); }
}
public override string ToString()
{
return String.Format("({0}, {1})", X, Y);
}
}
public class Point
{
public int X { get; } = 5;
public int Y { get; } = 7;
public Point(int x, int y) { X = x; Y = y; }
public double Dist
{
get { return Math.Sqrt(X * X + Y * Y); }
}
public override string ToString()
{
return String.Format("({0}, {1})", X, Y);
}
}
using System.Math;
public class Point
{
public int X { get; }
public int Y { get; }
public Point(int x, int y) { X = x; Y = y; }
public double Dist
{
get { return Math.Sqrt(X * X + Y * Y); }
}
public override string ToString()
{
return String.Format("({0}, {1})", X, Y);
}
}
using System.Math;
public class Point
{
public int X { get; }
public int Y { get; }
public Point(int x, int y) { X = x; Y = y; }
public double Dist
{
get { return Math.Sqrt(X * X + Y * Y); }
}
public override string ToString()
{
return String.Format("({0}, {1})", X, Y);
}
}
using System.Math;
public class Point
{
public int X { get; }
public int Y { get; }
public Point(int x, int y) { X = x; Y = y; }
public double Dist
{
get { return Sqrt(X * X + Y * Y); }
}
public override string ToString()
{
return String.Format("({0}, {1})", X, Y);
}
}
using System.Math;
public class Point
{
public int X { get; }
public int Y { get; }
public Point(int x, int y) { X = x; Y = y; }
public double Dist
{
get { return Sqrt(X * X + Y * Y); }
}
public override string ToString()
{
return String.Format("({0}, {1})", X, Y);
}
}
using System.Math;
public class Point
{
public int X { get; }
public int Y { get; }
public Point(int x, int y) { X = x; Y = y; }
public double Dist
{
get { return Sqrt(X * X + Y * Y); }
}
public override string ToString()
{
return "(\{X}, \{Y})";
}
}
using System.Math;
public class Point
{
public int X { get; }
public int Y { get; }
public Point(int x, int y) { X = x; Y = y; }
public double Dist
{
get { return Sqrt(X * X + Y * Y); }
}
public override string ToString()
{
return "(\{X}, \{Y})";
}
}
using System.Math;
public class Point
{
public int X { get; }
public int Y { get; }
public Point(int x, int y) { X = x; Y = y; }
public double Dist
{
get { return Sqrt(X * X + Y * Y); }
}
public override string ToString() => "(\{X}, \{Y})";
}
using System.Math;
public class Point
{
public int X { get; }
public int Y { get; }
public Point(int x, int y) { X = x; Y = y; }
public double Dist
{
get { return Sqrt(X * X + Y * Y); }
}
public override string ToString() => "(\{X}, \{Y})";
}
using System.Math;
public class Point
{
public int X { get; }
public int Y { get; }
public Point(int x, int y) { X = x; Y = y; }
public double Dist => Sqrt(X * X + Y * Y);
public override string ToString() => "(\{X}, \{Y})";
}
using System.Math;
public class Point
{
public int X { get; }
public int Y { get; }
public Point(int x, int y) { X = x; Y = y; }
public double Dist => Sqrt(X * X + Y * Y);
public override string ToString() => "(\{X}, \{Y})";
}
public class Point
{
public int X { get; }
public int Y { get; }
…
public JObject ToJson()
{
var result = new JObject();
result["x"] = X;
result["y"] = Y;
return result;
}
}
public class Point
{
public int X { get; }
public int Y { get; }
…
public JObject ToJson()
{
var result = new JObject() { ["x"] = X, ["y"] = Y };
return result;
}
}
public class Point
{
public int X { get; }
public int Y { get; }
…
public JObject ToJson()
{
return new JObject() { ["x"] = X, ["y"] = Y };
}
}
public class Point
{
public int X { get; }
public int Y { get; }
…
public JObject ToJson() =>
new JObject() { ["x"] = X, ["y"] = Y };
}
public static Point FromJson(JObject json)
{
if (json != null &&
json["x"] != null &&
json["x"].Type == JTokenType.Integer &&
json["y"] != null &&
json["y"].Type == JTokenType.Integer)
{
return new Point((int)json["x"], (int)json["y"]);
}
return null;
}
public static Point FromJson(JObject json)
{
if (json != null &&
json["x"]?.Type == JTokenType.Integer &&
json["y"]?.Type == JTokenType.Integer)
{
return new Point((int)json["x"], (int)json["y"]);
}
return null;
}
public static Point FromJson(JObject json)
{
if (json?["x"]?.Type == JTokenType.Integer &&
json?["y"]?.Type == JTokenType.Integer)
{
return new Point((int)json["x"], (int)json["y"]);
}
return null;
}
try
{
…
}
catch (ConfigurationException e)
{
}
finally
{
}
try
{
…
}
catch (ConfigurationException e) if (e.IsSevere)
{
}
finally
{
}
try
{
…
}
catch (ConfigurationException e) if (e.IsSevere)
{
await LogAsync(e);
}
finally
{
await CloseAsync();
}
Много улучшений в функциональном стиле в C#
Язык преимущественно-функционального
программирования F#
Что включает в себя .NET 2015
C# 6
Roslyn
.NET Framework 4.6
ASP.NET 5
.NET Native
.NET Core 5
Кросс-платформенный .NET
Мобильные приложения
Сервисы и Веб-приложения
.NET
Xamarin
Unity
ASP.NET 5
.NET Core
Windows
Linux
Кросс-платформенный .NETMono
Core
Mac OS X
Мобильная разработка и
партнерство .NET/Xamarin
.NET и Xamarin
Общая логика между
платформами
100% APIs доступно
Нативный UI
Нативный UI
Нативный UI
C# + XIB
C# + AXML
C# + XAML
Xamarin
.NET Core
Windows 10 для широкого спектра устройств…
Phone
Phablet
Small
Tablet
Large
Tablet
2-in-1s
(Tablet or Laptop)
Desktops
& All-in-Ones
Classic
Laptop
IoT
HoloLens
Microsoft
Surface Hub
Xbox
Ресурсы
Полезные ссылки
http://blogs.msdn.com/b/dotnet/archive/2014/11/12/announcing-net-2015-preview-anew-era-for-net.aspx
Платформа .NET сегодня и завтра
Ромуальд Здебский
Руководитель направления по мобильным
играм, Microsoft
rzdebski@microsoft.com @zdebskiy
©2015 Microsoft Corporation. All rights reserved. Microsoft, Windows, Office, Azure, System Center, Dynamics and other product names are or may be registered trademarks and/or
trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this
presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee
the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN
THIS PRESENTATION.
Download