SlideShare a Scribd company logo
1 of 35
Download to read offline
What's new in .NET
@rorypreddy
• Years of backwards compatibility for .NET is limiting
the teams with future development.
• .NET Framework is slowing down
• They will continue to update
• No changes to support policy
• Recommend new development on .NET Core
The Future of .NET Framework
Don’t Panic!
• You don’t have
to move!
New
development
• .NET Core is a
good choice
Existing code
• Costs and
benefits to
migrating
TheBottom Line
CORE 3.0
• Side-by-side and App-local Deployment
• Easily convert existing Desktop
applications to .Net Core 3
• Improvement to Project Files
• Continue to support Controls, NuGet
Packages, and Existing Assembly
References
Modernize Desktop Apps with .NET Core 3
Highly-compatible,
targeted improvements,
like last few releases
UWP
Windows-only
WEB
ASP.NET
Core
EF 6
EF Core
AI/ML
ML.NET
WPF
.NET Core 3.NET Framework 4.8
Existing
App
Highly
compatible
updates
Install .NET
Core updates
per your
needs
Windows-only Cross-platform
DATA
Windows
Forms
.NET STANDARD
Update .NET Framework Apps
Strategy: Divide and Conquor
What Goes Where
• Desktop Apps -> .NETCore 3
• Business Logic -> .NET Standard
• BackEndAPls -> .NETCore 3
• Front EndWeb Apps -> Well, this istougher...
Migrating a Typical .NET App Partially to the Cloud
On-Premises
WPF App
Windows .NET Framework
Web API Back End
Windows .NET Framework
SQL
Database
1
On-Premises
WPF App
Windows .NET Framework
Web API Back End
Windows .NET Core
SQL
Database
2
Cloud
On-Premises
WPF App
Windows .NET Framework
Web API Back End
Windows .NET Core
SQL
Database
3
Handling Shared Code When Targeting Multiple .NET Implementations
WPF App
.NET Framework
Web API Back End
.NET Framework
1
Business Logic
.NET Framework
WPF App
.NET Framework
Web API Back End
.NET Core
2
Business Logic
.NET Standard
Desktop
What to expect in porting desktop apps to
Core
• Update project files to target .NET Core 3
and recompile.
• Dependencies will not need to retarget and
recompile. There will be additional benefits if you
update dependencies.
Business Logic &
.NET Standard
What is .NET Standard?
.NET Standard is a specification
A set of APIs that all .NET platforms must
implement
$ dotnet new classlib -o My.Class.Library
.NET Standard is represented by
The NuGet package NetStandard.Library which contains
The reference assembly netstandard.dll
At build time
.NET Standard bridges references to existing .NET Framework and PCL
assemblies via type forwarding
At runtime
Each platform provides an implementation for netstandard.dll that type
forwards to its implementation
• .NET Core is an implementation of the .NET Standard
• .NET Standard updates are coordinated across all .NET implementers
• .NET Core can be updated independently
How does .NET Standard work?
Using platform-specific APIs
from .NET Standard
Windows Compatibility Pack
• Microsoft.Windows.Compatibility (NuGet package)
• Can be referenced from .NETCore as well as from .NETStandard
• Has ~21 k Api’s (Windows-only as well as cross-platform)
• Contents
ACLs
Code Pages
Code Dom
Configuration
Crypto
DirectoryServices
Drawing
EventLog
MEF v1
Odbc
Perf Counters
Permissions
Ports
Registry
Runtime Caching
WCF
Windows Services
Detecting usage of unsupported APIs
• Use API Analyzer!
• https://aka.ms/apianalyzer
• Warns about potential compatibility issues and calls to deprecated APIs.
Analyzer report
Analyzer report
C# 8.0
8.0 High probability
• New types
• Asynchronous Streams & Iterators &
dispose
• Default interface implementations
• Extension everything
• Records
• Discriminated unions
• Params Span
Types
• Part of .NET Standard 2.1 and C# 8
• The new Index type
• The Range type
• Nullable reference types
• .Net Core 3.0, Xamarin, Unity, and Mono will implement the
2.1 version
• .Net Framework 4.8 will not!
• Types required to use these features will not be available
when C# 8. 0 is targeted to .Net Framework 4.8
Index and Range TYPES
Index Expressions
var lastCharacter = myString[myString.Length-1];
var lastCharacter = myString[^1];
Index nextIndex = ^(x + 1); var nextChar = myString[nextIndex]
Range Expressions
var s = myString.Substring[0..2];
var s = myString.Substring(1..^1);
NULLABLE REFERENCE TYPES
public string Run(string? p1, string p2)
{
return p1 + p2;
}
foreach await(var s in objects) {
}
using await…
ASYNCHRONOUS STREAMS & ITERATORS &
DISPOSE
DEFAULT INTERFACE IMPLEMENTATIONS
public interface IDefaultInterfaceMethod=
{
public void DefaultMethod() => Console.WriteLine("Merhaba")
}
public class AnyClass : IDefaultInterfaceMethod
{
}
EXTENSION EVERYTHING
extension ObjectExtension extends Object
{
}
RECORDS
That’s it. With just one line of code, we’d get, for free
• A constructor.
• A pair of properties.
• “Equals” and “GetHashCode” overrides.
• An implementation of IEquatable<Move>.
• A “Deconstruct” method
var move = new Move("Alice Doe", MoveStrategy.Rock);
var move2 = new Move("Alice Doe", MoveStrategy.Rock);
Assert.AreEqual(move, move2);
class Shape { }
class Triangle : Shape { }
class Pentagon : Shape { }
public int A(Shape shape)
{
return shape switch {
Triangle u => 3, Pentagon b => 5
}
}
DISCRIMINATED UNIONS
PARAMS SPAN
public string Run(params Span<string> a)
{
return string.Join('-', a);
}
8.0 Low probability
• Struct readonly members
• Dictionary Literals
• UTF8 Literals
• Static local functions
• Implicitly scoped using statement
• &&= and ||= assignment operators
STRUCT READONLY MEMBERS
struct Square
{
public int X;
readonly int Size()
{
X = 2;
return X * X;
}
}
DICTIONARY LITERALS
var x = new Dictionary<string, int>() { { "foo", 4 }, { "bar", 5 } };
var y = new Dictionary<string, int>() { ["foo"] = 4, ["bar"] = 5 };
var z = ["foo":4, "bar": 5];
Thanks
@rorypreddy
.NET core 3.0 daily builds
• https://github.com/dotnet/core/blob/master/daily-builds.md
.NET Core 3.0 PortabilityAnalyzer
• https://github.com/Microsoft/dotnet-apiport-ui

More Related Content

What's hot

CNIT 127: 4: Format string bugs
CNIT 127: 4: Format string bugsCNIT 127: 4: Format string bugs
CNIT 127: 4: Format string bugsSam Bowne
 
An Introduction to ANTLR
An Introduction to ANTLRAn Introduction to ANTLR
An Introduction to ANTLRMorteza Zakeri
 
Pharo Status ESUG 2014
Pharo Status ESUG 2014Pharo Status ESUG 2014
Pharo Status ESUG 2014Marcus Denker
 
#Pharo Days 2016 Data Formats and Protocols
#Pharo Days 2016 Data Formats and Protocols#Pharo Days 2016 Data Formats and Protocols
#Pharo Days 2016 Data Formats and ProtocolsPhilippe Back
 
Net serialization
Net serializationNet serialization
Net serializationGreg Sohl
 
Testing Spark and Scala
Testing Spark and ScalaTesting Spark and Scala
Testing Spark and Scaladatamantra
 
SIL - All you need to know about Swift Intermediate Language
SIL - All you need to know about Swift Intermediate LanguageSIL - All you need to know about Swift Intermediate Language
SIL - All you need to know about Swift Intermediate LanguageBartosz Polaczyk
 
CNIT 126 Ch 7: Analyzing Malicious Windows Programs
CNIT 126 Ch 7: Analyzing Malicious Windows ProgramsCNIT 126 Ch 7: Analyzing Malicious Windows Programs
CNIT 126 Ch 7: Analyzing Malicious Windows ProgramsSam Bowne
 
To Lombok or not to Lombok | J-Fall 2019
To Lombok or not to Lombok | J-Fall 2019To Lombok or not to Lombok | J-Fall 2019
To Lombok or not to Lombok | J-Fall 2019Kaya Weers
 
RESTful Machine Learning with Flask and TensorFlow Serving - Carlo Mazzaferro
RESTful Machine Learning with Flask and TensorFlow Serving - Carlo MazzaferroRESTful Machine Learning with Flask and TensorFlow Serving - Carlo Mazzaferro
RESTful Machine Learning with Flask and TensorFlow Serving - Carlo MazzaferroPyData
 
Functional programming in Scala
Functional programming in ScalaFunctional programming in Scala
Functional programming in Scaladatamantra
 
.NET Core, ASP.NET Core Course, Session 2
.NET Core, ASP.NET Core Course, Session 2.NET Core, ASP.NET Core Course, Session 2
.NET Core, ASP.NET Core Course, Session 2aminmesbahi
 
Mykhailo Zarai "Be careful when dealing with C++" at Rivne IT Talks
Mykhailo Zarai "Be careful when dealing with C++" at Rivne IT TalksMykhailo Zarai "Be careful when dealing with C++" at Rivne IT Talks
Mykhailo Zarai "Be careful when dealing with C++" at Rivne IT TalksVadym Muliavka
 
Drilling the Async Library
Drilling the Async LibraryDrilling the Async Library
Drilling the Async LibraryKnoldus Inc.
 
Using ANTLR on real example - convert "string combined" queries into paramete...
Using ANTLR on real example - convert "string combined" queries into paramete...Using ANTLR on real example - convert "string combined" queries into paramete...
Using ANTLR on real example - convert "string combined" queries into paramete...Alexey Diyan
 
What's New in .Net 4.5
What's New in .Net 4.5What's New in .Net 4.5
What's New in .Net 4.5Malam Team
 

What's hot (20)

CNIT 127: 4: Format string bugs
CNIT 127: 4: Format string bugsCNIT 127: 4: Format string bugs
CNIT 127: 4: Format string bugs
 
An Introduction to ANTLR
An Introduction to ANTLRAn Introduction to ANTLR
An Introduction to ANTLR
 
Pharo Status ESUG 2014
Pharo Status ESUG 2014Pharo Status ESUG 2014
Pharo Status ESUG 2014
 
#Pharo Days 2016 Data Formats and Protocols
#Pharo Days 2016 Data Formats and Protocols#Pharo Days 2016 Data Formats and Protocols
#Pharo Days 2016 Data Formats and Protocols
 
Net serialization
Net serializationNet serialization
Net serialization
 
Testing Spark and Scala
Testing Spark and ScalaTesting Spark and Scala
Testing Spark and Scala
 
SIL - All you need to know about Swift Intermediate Language
SIL - All you need to know about Swift Intermediate LanguageSIL - All you need to know about Swift Intermediate Language
SIL - All you need to know about Swift Intermediate Language
 
CNIT 126 Ch 7: Analyzing Malicious Windows Programs
CNIT 126 Ch 7: Analyzing Malicious Windows ProgramsCNIT 126 Ch 7: Analyzing Malicious Windows Programs
CNIT 126 Ch 7: Analyzing Malicious Windows Programs
 
LINQ/PLINQ
LINQ/PLINQLINQ/PLINQ
LINQ/PLINQ
 
Blockchain and UDFs
Blockchain and UDFsBlockchain and UDFs
Blockchain and UDFs
 
To Lombok or not to Lombok | J-Fall 2019
To Lombok or not to Lombok | J-Fall 2019To Lombok or not to Lombok | J-Fall 2019
To Lombok or not to Lombok | J-Fall 2019
 
RESTful Machine Learning with Flask and TensorFlow Serving - Carlo Mazzaferro
RESTful Machine Learning with Flask and TensorFlow Serving - Carlo MazzaferroRESTful Machine Learning with Flask and TensorFlow Serving - Carlo Mazzaferro
RESTful Machine Learning with Flask and TensorFlow Serving - Carlo Mazzaferro
 
Functional programming in Scala
Functional programming in ScalaFunctional programming in Scala
Functional programming in Scala
 
.NET Core, ASP.NET Core Course, Session 2
.NET Core, ASP.NET Core Course, Session 2.NET Core, ASP.NET Core Course, Session 2
.NET Core, ASP.NET Core Course, Session 2
 
Java 8 stream and c# 3.5
Java 8 stream and c# 3.5Java 8 stream and c# 3.5
Java 8 stream and c# 3.5
 
Mykhailo Zarai "Be careful when dealing with C++" at Rivne IT Talks
Mykhailo Zarai "Be careful when dealing with C++" at Rivne IT TalksMykhailo Zarai "Be careful when dealing with C++" at Rivne IT Talks
Mykhailo Zarai "Be careful when dealing with C++" at Rivne IT Talks
 
Drilling the Async Library
Drilling the Async LibraryDrilling the Async Library
Drilling the Async Library
 
Using ANTLR on real example - convert "string combined" queries into paramete...
Using ANTLR on real example - convert "string combined" queries into paramete...Using ANTLR on real example - convert "string combined" queries into paramete...
Using ANTLR on real example - convert "string combined" queries into paramete...
 
What's New in .Net 4.5
What's New in .Net 4.5What's New in .Net 4.5
What's New in .Net 4.5
 
Java 8 new features
Java 8 new featuresJava 8 new features
Java 8 new features
 

Similar to Whats new in .NET for 2019

Whats new in .net for 2019
Whats new in .net for 2019Whats new in .net for 2019
Whats new in .net for 2019Rory Preddy
 
Raffaele Rialdi
Raffaele RialdiRaffaele Rialdi
Raffaele RialdiCodeFest
 
Tamir Dresher - Demystifying the Core of .NET Core
Tamir Dresher  - Demystifying the Core of .NET CoreTamir Dresher  - Demystifying the Core of .NET Core
Tamir Dresher - Demystifying the Core of .NET CoreTamir Dresher
 
.NET & C# Updates Fall 2019
.NET & C# Updates Fall 2019.NET & C# Updates Fall 2019
.NET & C# Updates Fall 2019Marco Parenzan
 
.NET Core: a new .NET Platform
.NET Core: a new .NET Platform.NET Core: a new .NET Platform
.NET Core: a new .NET PlatformAlex Thissen
 
Unboxing ASP.NET Core
Unboxing ASP.NET CoreUnboxing ASP.NET Core
Unboxing ASP.NET CoreKevin Leung
 
Overview of the new .NET Core and .NET Platform Standard
Overview of the new .NET Core and .NET Platform StandardOverview of the new .NET Core and .NET Platform Standard
Overview of the new .NET Core and .NET Platform StandardAlex Thissen
 
Introduction to dot net
Introduction to dot netIntroduction to dot net
Introduction to dot netQIANG XU
 
Dotnetintroduce 100324201546-phpapp02
Dotnetintroduce 100324201546-phpapp02Dotnetintroduce 100324201546-phpapp02
Dotnetintroduce 100324201546-phpapp02Wei Sun
 
1..Net Framework Architecture-(c#)
1..Net Framework Architecture-(c#)1..Net Framework Architecture-(c#)
1..Net Framework Architecture-(c#)Shoaib Ghachi
 
.net Core Blimey - Smart Devs UG
.net Core Blimey - Smart Devs UG.net Core Blimey - Smart Devs UG
.net Core Blimey - Smart Devs UGcitizenmatt
 
.Net Core Blimey! (16/07/2015)
.Net Core Blimey! (16/07/2015).Net Core Blimey! (16/07/2015)
.Net Core Blimey! (16/07/2015)citizenmatt
 
.Net: Introduction, trends and future
.Net: Introduction, trends and future.Net: Introduction, trends and future
.Net: Introduction, trends and futureBishnu Rawal
 
.NET Innovations and Improvements
.NET Innovations and Improvements.NET Innovations and Improvements
.NET Innovations and ImprovementsJeff Chu
 
The how-dare-you-call-me-an-idiot’s guide to the .NET Standard (NDC London 2017)
The how-dare-you-call-me-an-idiot’s guide to the .NET Standard (NDC London 2017)The how-dare-you-call-me-an-idiot’s guide to the .NET Standard (NDC London 2017)
The how-dare-you-call-me-an-idiot’s guide to the .NET Standard (NDC London 2017)citizenmatt
 
ASP.NET Core: The best of the new bits
ASP.NET Core: The best of the new bitsASP.NET Core: The best of the new bits
ASP.NET Core: The best of the new bitsKen Cenerelli
 
.NET Overview
.NET Overview.NET Overview
.NET OverviewGreg Sohl
 
dot net final year project in jalandhar
dot net final year project in jalandhardot net final year project in jalandhar
dot net final year project in jalandhardeepikakaler1
 

Similar to Whats new in .NET for 2019 (20)

Whats new in .net for 2019
Whats new in .net for 2019Whats new in .net for 2019
Whats new in .net for 2019
 
Raffaele Rialdi
Raffaele RialdiRaffaele Rialdi
Raffaele Rialdi
 
Next .NET and C#
Next .NET and C#Next .NET and C#
Next .NET and C#
 
Tamir Dresher - Demystifying the Core of .NET Core
Tamir Dresher  - Demystifying the Core of .NET CoreTamir Dresher  - Demystifying the Core of .NET Core
Tamir Dresher - Demystifying the Core of .NET Core
 
.NET & C# Updates Fall 2019
.NET & C# Updates Fall 2019.NET & C# Updates Fall 2019
.NET & C# Updates Fall 2019
 
.NET Core: a new .NET Platform
.NET Core: a new .NET Platform.NET Core: a new .NET Platform
.NET Core: a new .NET Platform
 
.Net Standard 2.0
.Net Standard 2.0.Net Standard 2.0
.Net Standard 2.0
 
Unboxing ASP.NET Core
Unboxing ASP.NET CoreUnboxing ASP.NET Core
Unboxing ASP.NET Core
 
Overview of the new .NET Core and .NET Platform Standard
Overview of the new .NET Core and .NET Platform StandardOverview of the new .NET Core and .NET Platform Standard
Overview of the new .NET Core and .NET Platform Standard
 
Introduction to dot net
Introduction to dot netIntroduction to dot net
Introduction to dot net
 
Dotnetintroduce 100324201546-phpapp02
Dotnetintroduce 100324201546-phpapp02Dotnetintroduce 100324201546-phpapp02
Dotnetintroduce 100324201546-phpapp02
 
1..Net Framework Architecture-(c#)
1..Net Framework Architecture-(c#)1..Net Framework Architecture-(c#)
1..Net Framework Architecture-(c#)
 
.net Core Blimey - Smart Devs UG
.net Core Blimey - Smart Devs UG.net Core Blimey - Smart Devs UG
.net Core Blimey - Smart Devs UG
 
.Net Core Blimey! (16/07/2015)
.Net Core Blimey! (16/07/2015).Net Core Blimey! (16/07/2015)
.Net Core Blimey! (16/07/2015)
 
.Net: Introduction, trends and future
.Net: Introduction, trends and future.Net: Introduction, trends and future
.Net: Introduction, trends and future
 
.NET Innovations and Improvements
.NET Innovations and Improvements.NET Innovations and Improvements
.NET Innovations and Improvements
 
The how-dare-you-call-me-an-idiot’s guide to the .NET Standard (NDC London 2017)
The how-dare-you-call-me-an-idiot’s guide to the .NET Standard (NDC London 2017)The how-dare-you-call-me-an-idiot’s guide to the .NET Standard (NDC London 2017)
The how-dare-you-call-me-an-idiot’s guide to the .NET Standard (NDC London 2017)
 
ASP.NET Core: The best of the new bits
ASP.NET Core: The best of the new bitsASP.NET Core: The best of the new bits
ASP.NET Core: The best of the new bits
 
.NET Overview
.NET Overview.NET Overview
.NET Overview
 
dot net final year project in jalandhar
dot net final year project in jalandhardot net final year project in jalandhar
dot net final year project in jalandhar
 

More from Rory Preddy

Programming for accessibility
Programming for accessibilityProgramming for accessibility
Programming for accessibilityRory Preddy
 
Getting started with Firebase
Getting started with FirebaseGetting started with Firebase
Getting started with FirebaseRory Preddy
 
Whats new in Java 9,10,11,12
Whats new in Java 9,10,11,12Whats new in Java 9,10,11,12
Whats new in Java 9,10,11,12Rory Preddy
 
AWS for Java Developers workshop
AWS for Java Developers workshopAWS for Java Developers workshop
AWS for Java Developers workshopRory Preddy
 
Java 2018 certifications
Java 2018 certificationsJava 2018 certifications
Java 2018 certificationsRory Preddy
 
AWS Transcribe and Comprehend
AWS Transcribe and ComprehendAWS Transcribe and Comprehend
AWS Transcribe and ComprehendRory Preddy
 
BDD with Mockito
BDD with MockitoBDD with Mockito
BDD with MockitoRory Preddy
 
Up and Running with Kubernetes
Up and Running with KubernetesUp and Running with Kubernetes
Up and Running with KubernetesRory Preddy
 
Functional Reactive Endpoints using Spring 5
Functional Reactive Endpoints using Spring 5Functional Reactive Endpoints using Spring 5
Functional Reactive Endpoints using Spring 5Rory Preddy
 
AWS and Serverless with Alexa
AWS and Serverless with AlexaAWS and Serverless with Alexa
AWS and Serverless with AlexaRory Preddy
 
AWS for the Java Developer
AWS for the Java DeveloperAWS for the Java Developer
AWS for the Java DeveloperRory Preddy
 
BDD - Keep love alive
BDD - Keep love aliveBDD - Keep love alive
BDD - Keep love aliveRory Preddy
 

More from Rory Preddy (18)

Programming for accessibility
Programming for accessibilityProgramming for accessibility
Programming for accessibility
 
Getting started with Firebase
Getting started with FirebaseGetting started with Firebase
Getting started with Firebase
 
Whats new in Java 9,10,11,12
Whats new in Java 9,10,11,12Whats new in Java 9,10,11,12
Whats new in Java 9,10,11,12
 
AWS for Java Developers workshop
AWS for Java Developers workshopAWS for Java Developers workshop
AWS for Java Developers workshop
 
Java modules
Java modulesJava modules
Java modules
 
Java 2018 certifications
Java 2018 certificationsJava 2018 certifications
Java 2018 certifications
 
AWS Transcribe and Comprehend
AWS Transcribe and ComprehendAWS Transcribe and Comprehend
AWS Transcribe and Comprehend
 
BDD with Mockito
BDD with MockitoBDD with Mockito
BDD with Mockito
 
Up and Running with Kubernetes
Up and Running with KubernetesUp and Running with Kubernetes
Up and Running with Kubernetes
 
Dockercompose
DockercomposeDockercompose
Dockercompose
 
Functional Reactive Endpoints using Spring 5
Functional Reactive Endpoints using Spring 5Functional Reactive Endpoints using Spring 5
Functional Reactive Endpoints using Spring 5
 
AWS and Serverless with Alexa
AWS and Serverless with AlexaAWS and Serverless with Alexa
AWS and Serverless with Alexa
 
Nashorn
NashornNashorn
Nashorn
 
AWS for the Java Developer
AWS for the Java DeveloperAWS for the Java Developer
AWS for the Java Developer
 
Vs java (1)
Vs java (1)Vs java (1)
Vs java (1)
 
Polyglot
PolyglotPolyglot
Polyglot
 
BDD - Keep love alive
BDD - Keep love aliveBDD - Keep love alive
BDD - Keep love alive
 
Kotlin
KotlinKotlin
Kotlin
 

Recently uploaded

Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝soniya singh
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsAlberto González Trastoy
 
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...Christina Lin
 
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackVICTOR MAESTRE RAMIREZ
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVshikhaohhpro
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...kellynguyen01
 
Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...aditisharan08
 
Asset Management Software - Infographic
Asset Management Software - InfographicAsset Management Software - Infographic
Asset Management Software - InfographicHr365.us smith
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comFatema Valibhai
 
Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)OPEN KNOWLEDGE GmbH
 
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideBuilding Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideChristina Lin
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...stazi3110
 
cybersecurity notes for mca students for learning
cybersecurity notes for mca students for learningcybersecurity notes for mca students for learning
cybersecurity notes for mca students for learningVitsRangannavar
 
What is Binary Language? Computer Number Systems
What is Binary Language?  Computer Number SystemsWhat is Binary Language?  Computer Number Systems
What is Binary Language? Computer Number SystemsJheuzeDellosa
 
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...soniya singh
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...ICS
 
Engage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The UglyEngage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The UglyFrank van der Linden
 
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...gurkirankumar98700
 
XpertSolvers: Your Partner in Building Innovative Software Solutions
XpertSolvers: Your Partner in Building Innovative Software SolutionsXpertSolvers: Your Partner in Building Innovative Software Solutions
XpertSolvers: Your Partner in Building Innovative Software SolutionsMehedi Hasan Shohan
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software DevelopersVinodh Ram
 

Recently uploaded (20)

Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
 
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
 
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStack
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTV
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
 
Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...
 
Asset Management Software - Infographic
Asset Management Software - InfographicAsset Management Software - Infographic
Asset Management Software - Infographic
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.com
 
Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)
 
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideBuilding Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
 
cybersecurity notes for mca students for learning
cybersecurity notes for mca students for learningcybersecurity notes for mca students for learning
cybersecurity notes for mca students for learning
 
What is Binary Language? Computer Number Systems
What is Binary Language?  Computer Number SystemsWhat is Binary Language?  Computer Number Systems
What is Binary Language? Computer Number Systems
 
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
 
Engage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The UglyEngage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The Ugly
 
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
 
XpertSolvers: Your Partner in Building Innovative Software Solutions
XpertSolvers: Your Partner in Building Innovative Software SolutionsXpertSolvers: Your Partner in Building Innovative Software Solutions
XpertSolvers: Your Partner in Building Innovative Software Solutions
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software Developers
 

Whats new in .NET for 2019

  • 1. What's new in .NET @rorypreddy
  • 2.
  • 3. • Years of backwards compatibility for .NET is limiting the teams with future development. • .NET Framework is slowing down • They will continue to update • No changes to support policy • Recommend new development on .NET Core The Future of .NET Framework
  • 4. Don’t Panic! • You don’t have to move! New development • .NET Core is a good choice Existing code • Costs and benefits to migrating TheBottom Line
  • 5. CORE 3.0 • Side-by-side and App-local Deployment • Easily convert existing Desktop applications to .Net Core 3 • Improvement to Project Files • Continue to support Controls, NuGet Packages, and Existing Assembly References
  • 6. Modernize Desktop Apps with .NET Core 3 Highly-compatible, targeted improvements, like last few releases UWP Windows-only WEB ASP.NET Core EF 6 EF Core AI/ML ML.NET WPF .NET Core 3.NET Framework 4.8 Existing App Highly compatible updates Install .NET Core updates per your needs Windows-only Cross-platform DATA Windows Forms .NET STANDARD Update .NET Framework Apps
  • 8. What Goes Where • Desktop Apps -> .NETCore 3 • Business Logic -> .NET Standard • BackEndAPls -> .NETCore 3 • Front EndWeb Apps -> Well, this istougher...
  • 9. Migrating a Typical .NET App Partially to the Cloud On-Premises WPF App Windows .NET Framework Web API Back End Windows .NET Framework SQL Database 1 On-Premises WPF App Windows .NET Framework Web API Back End Windows .NET Core SQL Database 2 Cloud On-Premises WPF App Windows .NET Framework Web API Back End Windows .NET Core SQL Database 3
  • 10. Handling Shared Code When Targeting Multiple .NET Implementations WPF App .NET Framework Web API Back End .NET Framework 1 Business Logic .NET Framework WPF App .NET Framework Web API Back End .NET Core 2 Business Logic .NET Standard
  • 12. What to expect in porting desktop apps to Core • Update project files to target .NET Core 3 and recompile. • Dependencies will not need to retarget and recompile. There will be additional benefits if you update dependencies.
  • 14. What is .NET Standard? .NET Standard is a specification A set of APIs that all .NET platforms must implement $ dotnet new classlib -o My.Class.Library
  • 15. .NET Standard is represented by The NuGet package NetStandard.Library which contains The reference assembly netstandard.dll At build time .NET Standard bridges references to existing .NET Framework and PCL assemblies via type forwarding At runtime Each platform provides an implementation for netstandard.dll that type forwards to its implementation • .NET Core is an implementation of the .NET Standard • .NET Standard updates are coordinated across all .NET implementers • .NET Core can be updated independently How does .NET Standard work?
  • 17. Windows Compatibility Pack • Microsoft.Windows.Compatibility (NuGet package) • Can be referenced from .NETCore as well as from .NETStandard • Has ~21 k Api’s (Windows-only as well as cross-platform) • Contents ACLs Code Pages Code Dom Configuration Crypto DirectoryServices Drawing EventLog MEF v1 Odbc Perf Counters Permissions Ports Registry Runtime Caching WCF Windows Services
  • 18. Detecting usage of unsupported APIs • Use API Analyzer! • https://aka.ms/apianalyzer • Warns about potential compatibility issues and calls to deprecated APIs.
  • 22. 8.0 High probability • New types • Asynchronous Streams & Iterators & dispose • Default interface implementations • Extension everything • Records • Discriminated unions • Params Span
  • 23. Types • Part of .NET Standard 2.1 and C# 8 • The new Index type • The Range type • Nullable reference types • .Net Core 3.0, Xamarin, Unity, and Mono will implement the 2.1 version • .Net Framework 4.8 will not! • Types required to use these features will not be available when C# 8. 0 is targeted to .Net Framework 4.8
  • 24. Index and Range TYPES Index Expressions var lastCharacter = myString[myString.Length-1]; var lastCharacter = myString[^1]; Index nextIndex = ^(x + 1); var nextChar = myString[nextIndex] Range Expressions var s = myString.Substring[0..2]; var s = myString.Substring(1..^1);
  • 25. NULLABLE REFERENCE TYPES public string Run(string? p1, string p2) { return p1 + p2; }
  • 26. foreach await(var s in objects) { } using await… ASYNCHRONOUS STREAMS & ITERATORS & DISPOSE
  • 27. DEFAULT INTERFACE IMPLEMENTATIONS public interface IDefaultInterfaceMethod= { public void DefaultMethod() => Console.WriteLine("Merhaba") } public class AnyClass : IDefaultInterfaceMethod { }
  • 29. RECORDS That’s it. With just one line of code, we’d get, for free • A constructor. • A pair of properties. • “Equals” and “GetHashCode” overrides. • An implementation of IEquatable<Move>. • A “Deconstruct” method var move = new Move("Alice Doe", MoveStrategy.Rock); var move2 = new Move("Alice Doe", MoveStrategy.Rock); Assert.AreEqual(move, move2);
  • 30. class Shape { } class Triangle : Shape { } class Pentagon : Shape { } public int A(Shape shape) { return shape switch { Triangle u => 3, Pentagon b => 5 } } DISCRIMINATED UNIONS
  • 31. PARAMS SPAN public string Run(params Span<string> a) { return string.Join('-', a); }
  • 32. 8.0 Low probability • Struct readonly members • Dictionary Literals • UTF8 Literals • Static local functions • Implicitly scoped using statement • &&= and ||= assignment operators
  • 33. STRUCT READONLY MEMBERS struct Square { public int X; readonly int Size() { X = 2; return X * X; } }
  • 34. DICTIONARY LITERALS var x = new Dictionary<string, int>() { { "foo", 4 }, { "bar", 5 } }; var y = new Dictionary<string, int>() { ["foo"] = 4, ["bar"] = 5 }; var z = ["foo":4, "bar": 5];
  • 35. Thanks @rorypreddy .NET core 3.0 daily builds • https://github.com/dotnet/core/blob/master/daily-builds.md .NET Core 3.0 PortabilityAnalyzer • https://github.com/Microsoft/dotnet-apiport-ui