+ All Categories
Home > Documents > Past, present and future of C# and - SDD...

Past, present and future of C# and - SDD...

Date post: 23-Apr-2018
Category:
Upload: phungcong
View: 224 times
Download: 3 times
Share this document with a friend
108
Past, present and future of C# and .NET Kathleen Dollard Director of Engineering, ROICode [email protected]
Transcript

Past, present and future of

C# and .NET

Kathleen Dollard

Director of Engineering, ROICode

[email protected]

Coding: 2 Advanced: 2

“In the beginning there was…” Take a look back at over 15 years of .NET and C# evolution and look into the future driven by enormous underlying changes. Those

changes are driven by a shift in perception of how .NET fits into the Microsoft ecosystem. You’ll leave understanding how to leverage the .NET Full Framework,

.NET Core 1.0, .NET Standard at the right time. Changes in .NET paralleled changes in the languages we’ll reflect on how far C# and Visual Basic have come and how they’ve

weathered major changes in how we think about code. Looking to the future, you’ll see both the impact of functional approaches and areas where C# probably won’t go.

The story would not be complete without cruising through adjacent libraries – the venerable ASP.NET and rock-star Entity Framework that’s recovered so well from its

troubled childhood. You’ll leave this talk with a better understanding of the tool you’re using today, and how it’s changing to keep you relevant in a constantly

morphing world.

Coding: 2 Advanced: 2

“In the beginning there was…” Take a look back at over 15 years of .NET and C# evolution and look into the future driven by enormous underlying changes. Those

changes are driven by a shift in perception of how .NET fits into the Microsoft ecosystem. You’ll leave understanding how to leverage the .NET Full Framework,

.NET Core 1.0, .NET Standard at the right time. Changes in .NET paralleled changes in the languages we’ll reflect on how far C# and Visual Basic have come and how they’ve

weathered major changes in how we think about code. Looking to the future, you’ll see both the impact of functional approaches and areas where C# probably won’t go.

The story would not be complete without cruising through adjacent libraries – the venerable ASP.NET and rock-star Entity Framework that’s recovered so well from its

troubled childhood. You’ll leave this talk with a better understanding of the tool you’re using today, and how it’s changing to keep you relevant in a constantly

morphing world.

Coding: 2 Advanced: 2

“In the beginning there was…” Take a look back at over 15 years of .NET and C# evolution and look into the future driven by enormous underlying changes. Those

changes are driven by a shift in perception of how .NET fits into the Microsoft ecosystem. You’ll leave understanding how to leverage the .NET Full Framework,

.NET Core 1.0, .NET Standard at the right time. Changes in .NET paralleled changes in the languages we’ll reflect on how far C# and Visual Basic have come and how they’ve

weathered major changes in how we think about code. Looking to the future, you’ll see both the impact of functional approaches and areas where C# probably won’t go.

The story would not be complete without cruising through adjacent libraries – the venerable ASP.NET and rock-star Entity Framework that’s recovered so well from its

troubled childhood. You’ll leave this talk with a better understanding of the tool you’re using today, and how it’s changing to keep you relevant in a constantly

morphing world.

Coding: 2 Advanced: 2

“In the beginning there was…” Take a look back at over 15 years of .NET and C# evolution and look into the future driven by enormous underlying changes. Those

changes are driven by a shift in perception of how .NET fits into the Microsoft ecosystem. You’ll leave understanding how to leverage the .NET Full Framework,

.NET Core 1.0, .NET Standard at the right time. Changes in .NET paralleled changes in the languages we’ll reflect on how far C# and Visual Basic have come and how they’ve

weathered major changes in how we think about code. Looking to the future, you’llsee both the impact of functional approaches and areas where C# probably won’t go.

The story would not be complete without cruising through adjacent libraries – the venerable ASP.NET and rock-star Entity Framework that’s recovered so well from its

troubled childhood. You’ll leave this talk with a better understanding of the tool you’re using today, and how it’s changing to keep you relevant in a constantly

morphing world.

Coding: 2 Advanced: 2

“In the beginning there was…” Take a look back at over 15 years of .NET and C# evolution and look into the future driven by enormous underlying changes. Those

changes are driven by a shift in perception of how .NET fits into the Microsoft ecosystem. You’ll leave understanding how to leverage the .NET Full Framework,

.NET Core 1.0, .NET Standard at the right time. Changes in .NET paralleled changes in the languages we’ll reflect on how far C# and Visual Basic have come and how they’ve

weathered major changes in how we think about code. Looking to the future, you’llsee both the impact of functional approaches and areas where C# probably won’t go.

The story would not be complete without cruising through adjacent libraries – the venerable ASP.NET and rock-star Entity Framework that’s recovered so well from its

troubled childhood. You’ll leave this talk with a better understanding of the tool you’re using today, and how it’s changing to keep you relevant in a constantly

morphing world.

Coding: 2 Advanced: 2

“In the beginning there was…” Take a look back at over 15 years of .NET and C# evolution and look into the future driven by enormous underlying changes. Those

changes are driven by a shift in perception of how .NET fits into the Microsoft ecosystem. You’ll leave understanding how to leverage the .NET Full Framework,

.NET Core 1.0, .NET Standard at the right time. Changes in .NET paralleled changes in the languages we’ll reflect on how far C# and Visual Basic have come and how they’ve

weathered major changes in how we think about code. Looking to the future, you’ll see both the impact of functional approaches and areas where C# probably won’t go.

The story would not be complete without cruising through adjacent libraries – the venerable ASP.NET and rock-star Entity Framework that’s recovered so well from its

troubled childhood. You’ll leave this talk with a better understanding of the tool you’re using today, and how it’s changing to keep you relevant in a constantly

morphing world.

My other talks at SDDConf

• Session: C# 6 & below

• Session: C# 7 & above

• Session: Visual Studio Tips and Tricks

• Workshop: I will make you a better C# programmer

Independent?What do I know about this history stuff?

• Trained as a research chemist

• X-Ray crystallographer & electrochemist with interest in active sites of proteins

• Worked in the Microsoft languages space since about 1996

• Previously, Clipper, Fortran, C, C++, FORTH, BASIC, 4GLs

• Microsoft MVP since 1998, recognized for community work since 1980’s

• I care a lot about community and people in it

• Do NOT work for Microsoft

• Do respect a lot of people that work at Microsoft (and other places)

• Have been giving language feedback since VB4 beta

• Contributed at every MVP summit and a number of private design meetings

C++Circa 2000

Visual BasicCirca 2000

Road aheadCirca 2000

OTHER THINGS WERE ALSOHAPPENING AT THE END OF THE LAST CENTURY

AND THEN CAME…

JAVA .NET

JAVA .NET

JAVA

• Strongly and statically typed with manifest

• Object oriented, class based

• Semi-interpreted (JVM)

• Garbage collected (traced)

• Curly braces

• Reflection

.NET

• Strongly and statically typed with manifest

• Object oriented, class based

• Semi-interpreted (MSIL)

• Garbage collected (traced)

• Curly braces (C#)

• Reflection

• Arbitrary precision (library)

• Primitive types do not have common root

• Primitives wrapped for methods

• Primitive and reference types

• Enumerations are class based

• Wrappers and adapters

• Unsigned ints, decimal (now imaginary, etc.)

• All types have common root

• All types: methods, properties, interfaces

• Value and reference types

• Defined operators (inclusion of new types)

• Enumerations are bit manipulation of integers

• Delegates

JAVA .NET

THE RACE WAS ON…

EFFECT ON .NET• Different goals • C#

• Visual Basic

EFFECT ON .NET• Different goals • C#: Convert Java programmers

• Visual Basic: Keep existing VB developers

EFFECT ON .NET• Different goals

• “Fix” possible deficiencies in Java

• Common root and methods available on all types

• Delegate and event models

• Extra types and user-defined value types and operators

• Performance was (perceived as) required

• Integer checks disabled (for C#)

• (One of the reasons) lower array bound restricted to zero

• (Later, one of the reasons) List<T> is sealed

• C#: Convert Java programmers

• Visual Basic: Keep existing VB developers

2002

2003

2005

2006

2008

2010

2012

2013

2015

.NET

an

d V

isu

al S

tud

io

2002

• First release of .NET

2003

2005

2006

2008

2010

2012

2013

2015

.NET

an

d V

isu

al S

tud

io

2002

• First release of .NET (after long beta)

2003

2005

2006

2008

2010

2012

2013

2015

.NET

an

d V

isu

al S

tud

io

2002

• First release of .NET (after long beta) 4 years after start of project Cool

2003

2005

2006

2008

2010

2012

2013

2015

.NET

an

d V

isu

al S

tud

io

2002

• First release of .NET (after long beta) 4 years after start of project Cool

• OOP, traced GC, painful changes for VB programmers

2003

2005

2006

2008

2010

2012

2013

2015

.NET

an

d V

isu

al S

tud

io

2002

• First release of .NET (after long beta) 4 years after start of project Cool

• OOP, traced GC, painful changes for VB programmers

2003

• Bug fixes and updates

• .NET Compact Framework

2005

2006

2008

2010

2012

2013

2015

.NET

an

d V

isu

al S

tud

io

2002

• First release of .NET (after long beta) 4 years after start of project Cool

• OOP, traced GC, painful changes for VB programmers

2003

• Bug fixes and updates

• .NET Compact Framework

2005

• Major changes to .NET

2006

2008

2010

2012

2013

2015

.NET

an

d V

isu

al S

tud

io

2002

• First release of .NET (after long beta) 4 years after start of project Cool

• OOP, traced GC, painful changes for VB programmers

2003

• Bug fixes and updates

• .NET Compact Framework

2005

• Major changes to .NET, pretty much the beginning of time

2006

2008

2010

2012

2013

2015

.NET

an

d V

isu

al S

tud

io

2002

• First release of .NET (after long beta) 4 years after start of project Cool

• OOP, traced GC, painful changes for VB programmers

2003

• Bug fixes and updates

• .NET Compact Framework

2005

• Major changes to .NET, pretty much the beginning of time

• Generics, anonymous methods, iterators, nullables, 64 bit, ASP.NET 2.0

2006

2008

2010

2012

2013

2015

.NET

an

d V

isu

al S

tud

io

Road aheadCirca 2005

2002

• First release of .NET (after long beta) 4 years after start of project Cool

• OOP, traced GC, painful changes for VB programmers

2003

• Bug fixes and updates

• .NET Compact Framework

2005

• Major changes to .NET, pretty much the beginning of time

• Generics, anonymous methods, iterators, nullables, 64 bit, ASP.NET 2.0

2006

2008

2010

2012

2013

2015

.NET

an

d V

isu

al S

tud

io

2002

• First release of .NET (after long beta) 4 years after start of project Cool

• OOP, traced GC, painful changes for VB programmers

2003

• Bug fixes and updates

• .NET Compact Framework

2005

• Major changes to .NET, pretty much the beginning of time

• Generics, anonymous methods, iterators, nullables, 64 bit, ASP.NET 2.0

2006

• No changes to .NET (beyond a few bug fixes)

2008

2010

2012

2013

2015

.NET

an

d V

isu

al S

tud

io

2002

• First release of .NET (after long beta) 4 years after start of project Cool

• OOP, traced GC, painful changes for VB programmers

2003

• Bug fixes and updates

• .NET Compact Framework

2005

• Major changes to .NET, pretty much the beginning of time

• Generics, anonymous methods, iterators, nullables, 64 bit, ASP.NET 2.0

2006

• No changes to .NET (beyond a few bug fixes)

• WPF, WCF, WF

2008

2010

2012

2013

2015

.NET

an

d V

isu

al S

tud

io

2002

• First release of .NET (after long beta) 4 years after start of project Cool

• OOP, traced GC, painful changes for VB programmers

2003

• Bug fixes and updates

• .NET Compact Framework

2005

• Major changes to .NET, pretty much the beginning of time

• Generics, anonymous methods, iterators, nullables, 64 bit, ASP.NET 2.0

2006

• No changes to .NET (beyond a few bug fixes)

• WPF, WCF, WF, InfoCard/Cardspace

2008

2010

2012

2013

2015

.NET

an

d V

isu

al S

tud

io

2002

• First release of .NET (after long beta) 4 years after start of project Cool

• OOP, traced GC, painful changes for VB programmers

2003

• Bug fixes and updates

• .NET Compact Framework

2005

• Major changes to .NET, pretty much the beginning of time

• Generics, anonymous methods, iterators, nullables, 64 bit, ASP.NET 2.0

2006

• No changes to .NET (beyond a few bug fixes)

• WPF, WCF, WF, InfoCard/Cardspace

2008

• LINQ

2010

2012

2013

2015

.NET

an

d V

isu

al S

tud

io

2002

• First release of .NET (after long beta) 4 years after start of project Cool

• OOP, traced GC, painful changes for VB programmers

2003

• Bug fixes and updates

• .NET Compact Framework

2005

• Major changes to .NET, pretty much the beginning of time

• Generics, anonymous methods, iterators, nullables, 64 bit, ASP.NET 2.0

2006

• No changes to .NET (beyond a few bug fixes)

• WPF, WCF, WF, InfoCard/Cardspace

2008

• LINQ

• Lambda’s, extension methods

2010

2012

2013

2015

.NET

an

d V

isu

al S

tud

io

2002

• First release of .NET (after long beta) 4 years after start of project Cool

• OOP, traced GC, painful changes for VB programmers

2003

• Bug fixes and updates

• .NET Compact Framework

2005

• Major changes to .NET, pretty much the beginning of time

• Generics, anonymous methods, iterators, nullables, 64 bit, ASP.NET 2.0

2006

• No changes to .NET (beyond a few bug fixes)

• WPF, WCF, WF, InfoCard/Cardspace

2008

• LINQ

• Lambda’s, extension methods

2010

• Dynamic Language Runtime (DLR)

2012

2013

2015

.NET

an

d V

isu

al S

tud

io

2002

• First release of .NET (after long beta) 4 years after start of project Cool

• OOP, traced GC, painful changes for VB programmers

2003

• Bug fixes and updates

• .NET Compact Framework

2005

• Major changes to .NET, pretty much the beginning of time

• Generics, anonymous methods, iterators, nullables, 64 bit, ASP.NET 2.0

2006

• No changes to .NET (beyond a few bug fixes)

• WPF, WCF, WF, InfoCard/Cardspace

2008

• LINQ

• Lambda’s, extension methods

2010

• Dynamic Language Runtime (DLR), MEF

2012

2013

2015

.NET

an

d V

isu

al S

tud

io

2002

• First release of .NET (after long beta) 4 years after start of project Cool

• OOP, traced GC, painful changes for VB programmers

2003

• Bug fixes and updates

• .NET Compact Framework

2005

• Major changes to .NET, pretty much the beginning of time

• Generics, anonymous methods, iterators, nullables, 64 bit, ASP.NET 2.0

2006

• No changes to .NET (beyond a few bug fixes)

• WPF, WCF, WF, InfoCard/Cardspace

2008

• LINQ

• Lambda’s, extension methods

2010

• Dynamic Language Runtime (DLR), MEF, PCL

2012

2013

2015

.NET

an

d V

isu

al S

tud

io

2002

• First release of .NET (after long beta) 4 years after start of project Cool

• OOP, traced GC, painful changes for VB programmers

2003

• Bug fixes and updates

• .NET Compact Framework

2005

• Major changes to .NET, pretty much the beginning of time

• Generics, anonymous methods, iterators, nullables, 64 bit, ASP.NET 2.0

2006

• No changes to .NET (beyond a few bug fixes)

• WPF, WCF, WF, InfoCard/Cardspace

2008

• LINQ

• Lambda’s, extension methods

2010

• Dynamic Language Runtime (DLR), MEF, PCL

• .NET 4.0 is the first major update to .NET since 2.0, Lazy, Tuple, BigInt

2012

2013

2015

.NET

an

d V

isu

al S

tud

io

Road aheadCirca 2010

Microsoft launches Azure and announces Windows Phone

- 1 year before acquiring Skype- 3 years before acquiring Nokia- 4 years before Satya takes leadership

2002

• First release of .NET (after long beta) 4 years after start of project Cool

• OOP, traced GC, painful changes for VB programmers

2003

• Bug fixes and updates

• .NET Compact Framework

2005

• Major changes to .NET, pretty much the beginning of time

• Generics, anonymous methods, iterators, nullables, 64 bit, ASP.NET 2.0

2006

• No changes to .NET (beyond a few bug fixes)

• WPF, WCF, WF, InfoCard/Cardspace

2008

• LINQ

• Lambda’s, extension methods

2010

2012

• Async/await

2013

2015

.NET

an

d V

isu

al S

tud

io

• Dynamic Language Runtime (DLR), MEF, PCL

• .NET 4.0 is the first major update to .NET since 2.0, Lazy, Tuple, BigInt

2002

• First release of .NET (after long beta) 4 years after start of project Cool

• OOP, traced GC, painful changes for VB programmers

2003

• Bug fixes and updates

• .NET Compact Framework

2005

• Major changes to .NET, pretty much the beginning of time

• Generics, anonymous methods, iterators, nullables, 64 bit, ASP.NET 2.0

2006

• No changes to .NET (beyond a few bug fixes)

• WPF, WCF, WF, InfoCard/Cardspace

2008

• LINQ

• Lambda’s, extension methods

2010

2012

• Async/await, Windows Store (Metro)

2013

2015

.NET

an

d V

isu

al S

tud

io

• Dynamic Language Runtime (DLR), MEF, PCL

• .NET 4.0 is the first major update to .NET since 2.0, Lazy, Tuple, BigInt

2002

• First release of .NET (after long beta) 4 years after start of project Cool

• OOP, traced GC, painful changes for VB programmers

2003

• Bug fixes and updates

• .NET Compact Framework

2005

• Major changes to .NET, pretty much the beginning of time

• Generics, anonymous methods, iterators, nullables, 64 bit, ASP.NET 2.0

2006

• No changes to .NET (beyond a few bug fixes)

• WPF, WCF, WF, InfoCard/Cardspace

2008

• LINQ

• Lambda’s, extension methods

2010

2012

• Async/await, Windows Store (Metro)

• .NET 4.5 ETW

2013

2015

.NET

an

d V

isu

al S

tud

io

• Dynamic Language Runtime (DLR), MEF, PCL

• .NET 4.0 is the first major update to .NET since 2.0, Lazy, Tuple, BigInt

2002

• First release of .NET (after long beta) 4 years after start of project Cool

• OOP, traced GC, painful changes for VB programmers

2003

• Bug fixes and updates

• .NET Compact Framework

2005

• Major changes to .NET, pretty much the beginning of time

• Generics, anonymous methods, iterators, nullables, 64 bit, ASP.NET 2.0

2006

• No changes to .NET (beyond a few bug fixes)

• WPF, WCF, WF, InfoCard/Cardspace

2008

• LINQ

• Lambda’s, extension methods

2010

2012

• Async/await, Windows Store (Metro)

• .NET 4.5 ETW, TypeInfo, lots of cleanup

2013

2015

.NET

an

d V

isu

al S

tud

io

• Dynamic Language Runtime (DLR), MEF, PCL

• .NET 4.0 is the first major update to .NET since 2.0, Lazy, Tuple, BigInt

2002

• First release of .NET (after long beta) 4 years after start of project Cool

• OOP, traced GC, painful changes for VB programmers

2003

• Bug fixes and updates

• .NET Compact Framework

2005

• Major changes to .NET, pretty much the beginning of time

• Generics, anonymous methods, iterators, nullables, 64 bit, ASP.NET 2.0

2006

• No changes to .NET (beyond a few bug fixes)

• WPF, WCF, WF, InfoCard/Cardspace

2008

• LINQ

• Lambda’s, extension methods

2010

2012

• Async/await, Windows Store (Metro)

• .NET 4.5 ETW, TypeInfo, lots of cleanup, VS backwards compat

2013

2015

.NET

an

d V

isu

al S

tud

io

• Dynamic Language Runtime (DLR), MEF, PCL

• .NET 4.0 is the first major update to .NET since 2.0, Lazy, Tuple, BigInt

2002

• First release of .NET (after long beta) 4 years after start of project Cool

• OOP, traced GC, painful changes for VB programmers

2003

• Bug fixes and updates

• .NET Compact Framework

2005

• Major changes to .NET, pretty much the beginning of time

• Generics, anonymous methods, iterators, nullables, 64 bit, ASP.NET 2.0

2006

• No changes to .NET (beyond a few bug fixes)

• WPF, WCF, WF, InfoCard/Cardspace

2008

• LINQ

• Lambda’s, extension methods

2010

2012

• Async/await, Windows Store (Metro)

• .NET 4.5 ETW, TypeInfo, lots of cleanup, VS backwards compat, all caps menus

2013

2015

.NET

an

d V

isu

al S

tud

io

• Dynamic Language Runtime (DLR), MEF, PCL

• .NET 4.0 is the first major update to .NET since 2.0, Lazy, Tuple, BigInt

2002

• First release of .NET (after long beta) 4 years after start of project Cool

• OOP, traced GC, painful changes for VB programmers

2003

• Bug fixes and updates

• .NET Compact Framework

2005

• Major changes to .NET, pretty much the beginning of time

• Generics, anonymous methods, iterators, nullables, 64 bit, ASP.NET 2.0

2006

• No changes to .NET (beyond a few bug fixes)

• WPF, WCF, WF, InfoCard/Cardspace

2008

• LINQ

• Lambda’s, extension methods

2010

2012

2013

• Improved debugging, including async debugging

2015

.NET

an

d V

isu

al S

tud

io

• Async/await, Windows Store (Metro)

• .NET 4.5 ETW, TypeInfo, lots of cleanup, VS backwards compat, all caps menus

• Dynamic Language Runtime (DLR), MEF, PCL

• .NET 4.0 is the first major update to .NET since 2.0, Lazy, Tuple, BigInt

2002

• First release of .NET (after long beta) 4 years after start of project Cool

• OOP, traced GC, painful changes for VB programmers

2003

• Bug fixes and updates

• .NET Compact Framework

2005

• Major changes to .NET, pretty much the beginning of time

• Generics, anonymous methods, iterators, nullables, 64 bit, ASP.NET 2.0

2006

• No changes to .NET (beyond a few bug fixes)

• WPF, WCF, WF, InfoCard/Cardspace

2008

• LINQ

• Lambda’s, extension methods

2010

2012

2013

• Improved debugging, including async debugging, WinForms resizing and high DPI

2015

.NET

an

d V

isu

al S

tud

io

• Async/await, Windows Store (Metro)

• .NET 4.5 ETW, TypeInfo, lots of cleanup, VS backwards compat, all caps menus

• Dynamic Language Runtime (DLR), MEF, PCL

• .NET 4.0 is the first major update to .NET since 2.0, Lazy, Tuple, BigInt

2002

• First release of .NET (after long beta) 4 years after start of project Cool

• OOP, traced GC, painful changes for VB programmers

2003

• Bug fixes and updates

• .NET Compact Framework

2005

• Major changes to .NET, pretty much the beginning of time

• Generics, anonymous methods, iterators, nullables, 64 bit, ASP.NET 2.0

2006

• No changes to .NET (beyond a few bug fixes)

• WPF, WCF, WF, InfoCard/Cardspace

2008

• LINQ

• Lambda’s, extension methods

2010

2012

2013

• Improved debugging, including async debugging, WinForms resizing and high DPI

• Embraced regular updates

2015

.NET

an

d V

isu

al S

tud

io

• Async/await, Windows Store (Metro)

• .NET 4.5 ETW, TypeInfo, lots of cleanup, VS backwards compat, all caps menus

• Dynamic Language Runtime (DLR), MEF, PCL

• .NET 4.0 is the first major update to .NET since 2.0, Lazy, Tuple, BigInt

2002

• First release of .NET (after long beta) 4 years after start of project Cool

• OOP, traced GC, painful changes for VB programmers

2003

• Bug fixes and updates

• .NET Compact Framework

2005

• Major changes to .NET, pretty much the beginning of time

• Generics, anonymous methods, iterators, nullables, 64 bit, ASP.NET 2.0

2006

• No changes to .NET (beyond a few bug fixes)

• WPF, WCF, WF, InfoCard/Cardspace

2008

• LINQ

• Lambda’s, extension methods

2010

2012

2013

• Improved debugging, including async debugging, WinForms resizing and high DPI

• Embraced regular updates (Update 4 had checkbox for all caps menus)

2015

.NET

an

d V

isu

al S

tud

io

• Async/await, Windows Store (Metro)

• .NET 4.5 ETW, TypeInfo, lots of cleanup, VS backwards compat, all caps menus

• Dynamic Language Runtime (DLR), MEF, PCL

• .NET 4.0 is the first major update to .NET since 2.0, Lazy, Tuple, BigInt

Road aheadCirca 2014

2002

• First release of .NET (after long beta) 4 years after start of project Cool

• OOP, traced GC, painful changes for VB programmers

2003

• Bug fixes and updates

• .NET Compact Framework

2005

• Major changes to .NET, pretty much the beginning of time

• Generics, anonymous methods, iterators, nullables, 64 bit, ASP.NET 2.0

2006

• No changes to .NET (beyond a few bug fixes)

• WPF, WCF, WF, InfoCard/Cardspace

2008

• LINQ

• Lambda’s, extension methods

2010

2012

2013

2015

• Roslyn compilers, OSS, start of ASP.NET rewrite

• Visual Studio lights up!

.NET

an

d V

isu

al S

tud

io

• Async/await, Windows Store (Metro)

• .NET 4.5 ETW, TypeInfo, lots of cleanup, VS backwards compat, all caps menus

• Dynamic Language Runtime (DLR), MEF, PCL

• .NET 4.0 is the first major update to .NET since 2.0, Lazy, Tuple, BigInt

• Improved debugging, including async debugging, WinForms resizing and high DPI

• Embraced regular updates (Update 4 had checkbox for all caps menus)

2002

• First release of .NET (after long beta) 4 years after start of project Cool

• OOP, traced GC, painful changes for VB programmers

2003

• Bug fixes and updates

• .NET Compact Framework

2005

• Major changes to .NET, pretty much the beginning of time

• Generics, anonymous methods, iterators, nullables, 64 bit, ASP.NET 2.0

2006

• No changes to .NET (beyond a few bug fixes)

• WPF, WCF, WF, InfoCard/Cardspace

2008

• LINQ

• Lambda’s, extension methods

2010

2012

2013

2015

• Roslyn compilers, OSS, start of ASP.NET rewrite

• Visual Studio lights up! Sentence case is the default for menus

.NET

an

d V

isu

al S

tud

io

• Async/await, Windows Store (Metro)

• .NET 4.5 ETW, TypeInfo, lots of cleanup, VS backwards compat, all caps menus

• Dynamic Language Runtime (DLR), MEF, PCL

• .NET 4.0 is the first major update to .NET since 2.0, Lazy, Tuple, BigInt

• Improved debugging, including async debugging, WinForms resizing and high DPI

• Embraced regular updates (Update 4 had checkbox for all caps menus)

• Roslyn compilers, OSS, start of ASP.NET rewrite

• Visual Studio lights up! Sentence case is the default for menus

• Improved debugging, including async debugging, WinForms resizing and high DPI

• Embraced regular updates (Update 4 had checkbox for all caps menus)

2002

• First release of .NET (after long beta) 4 years after start of project Cool

• OOP, traced GC, painful changes for VB programmers

2003

• Bug fixes and updates

• .NET Compact Framework

2005

• Major changes to .NET, pretty much the beginning of time

• Generics, anonymous methods, iterators, nullables, 64 bit, ASP.NET 2.0

2006

• No changes to .NET (beyond a few bug fixes)

• WPF, WCF, WF, InfoCard/Cardspace

2008

• LINQ

• Lambda’s, extension methods

2010

2012

2013

2015

.NET

an

d V

isu

al S

tud

io

• Async/await, Windows Store (Metro)

• .NET 4.5 ETW, TypeInfo, lots of cleanup, VS backwards compat, all caps menus

• Dynamic Language Runtime (DLR), MEF, PCL

• .NET 4.0 is the first major update to .NET since 2.0, Lazy, Tuple, BigInt

•Not ASP. OOP

•Mobile controls, automatic input validation

•New controls, master pages, themes, web parts, personalization, full pre-compilation

•WCF, CardSpace

•LINQ, new data controls, AJAX in framework, WCF support for RSS, JSON,

•MVC 2, 3

•Async, JS editor better, bundling/min, MVC 4, HTML 5 in WebForms

•Bootstrap 3, Web API 2, Oauth 2, CORS, MVC5, EF 6, SignalR, OWin

•ASP.NET 4.5.x series parallels new ASP.NET Core series

Road aheadCirca 2014

Road ahead2017

Road ahead2017 (January)

Road ahead2017 (late)

What is .NET?

Runtime

Libraries

Editor

Compiler

What is does it take to develop?

Runtime

Libraries

Editor

Compiler

What is does it take to develop?

RuntimeCompilerEditor

Libraries

What is does it take to develop?

RuntimeCompilerEditor

Libraries

Basic libraries

UI librariesData

libraries

What is does it take to develop?

RuntimeCompilerBasic

librariesEditor

Delivery libraries

Data libraries

What is does it take to develop?

RuntimeBasic

librariesEditor

Delivery framework

Data libraries

Compiler

Compiler

What is does it take to develop?

RuntimeYour codeBasic

librariesEditor

Delivery framework

Data libraries

Compiler

What is does it take to develop?

RuntimeYour codeBasic

librariesEditor

Delivery framework

Data libraries

Compiler

CLR

Core CLR

Mono

EF 6.x

EF Core

WPF, UWP

ASP.NET 4.x

ASP.NET Core

Xamarinforms

.NET Framework

.NET Core

Xamarin

Visual Studio

Visual Studio Code

Project Rider

What is does it take to develop?

RuntimeBasic

librariesYour code

Delivery framework

Data libraries

Editor

Compiler

EF 6.x

EF Core

WPF, UWP

ASP.NET 4.x

ASP.NET Core

Xamarinforms

.NET Framework

.NET Core

Xamarin

CLR

Core CLR

Mono

Visual Studio

Visual Studio Code

Project Rider

What is does it take to develop?

RuntimeBasic

librariesYour code

Delivery framework

Data libraries

Editor

Compiler

.NET Core

Mono for Xamarin

.NET

Sure, I can explain that to non-technical decision maker in my world

OSS

Brilliant• Sharing ownership

• Tapping collective brilliance

• Faster release cycles

• Transparency

• Responsive to users

• Granularity

Challenging• Vague quality metrics

• Varying meaning of “beta”• Changes during “beta”

• Managing granularity

• Synchronization in release of dependent parts

• Early unreliable roadmaps

EF 6.x

EF Core

WPF, UWP

ASP.NET 4.x

ASP.NET Core

Xamarinforms

.NET Framework

.NET Core

Xamarin

CLR

Core CLR

Mono

Visual Studio

Visual Studio Code

Project Rider

What is does it take to develop?

RuntimeBasic

librariesYour code

Delivery framework

Data libraries

Editor

Compiler

.NET Core

Mono for Xamarin

.NET

EF 6.x

EF Core

WPF, UWP

ASP.NET 4.x

ASP.NET Core

Xamarinforms

.NET Framework

.NET Core

Xamarin

CLR

Core CLR

Mono

Visual Studio

Visual Studio Code

Project Rider

What is does it take to develop?

RuntimeBasic

librariesYour code

Delivery framework

Data libraries

Editor

Compiler

.NET Core

Mono for Xamarin

.NET

EF 6.x

EF Core

WPF, UWP

ASP.NET 4.x

ASP.NET Core

Xamarinforms

.NET Framework

CoreFX

Xamarin

CLR

Core CLR

Mono

Visual Studio

Visual Studio Code

Project Rider

What is does it take to develop?

.NET Standard

RuntimeBasic

librariesYour code

Delivery framework

Data librariesEditor

Compiler

EF 6.x

EF Core

WPF, UWP

ASP.NET 4.x

ASP.NET Core

Xamarinforms

.NET Framework

CoreFX

Xamarin

CLR

Core CLR

Mono

Visual Studio

Visual Studio Code

Project Rider

What is does it take to develop?

.NET Standard

RuntimeBasic

librariesYour code

Delivery framework

Data librariesEditor

Compiler

.NET Standard

The .NET Standard Library is a formal specification of .NET APIs that are intended to be available on all .NET runtimes.

The motivation behind the Standard Library is establishing greater uniformity in the .NET ecosystem.

ECMA 335 continues to establish uniformity for .NET runtime behavior, but there is no similar spec for the .NET Base Class Libraries (BCL) for .NET library implementations.

Standards

• ECMA 334 – C# (2002/2003 with updates)

• ECMA 335 – CLI (2001/2003 with updates)• Rotor (shared source) implemented 334/335 no longer relevant

• ECMA 372 = C++/CLI

.NET Standard(not yet an ECMA standard)

(Will there be a .NET Standard Standard?)

.NET Standard

• Formal specification• “of .NET APIs that are intended to be available on all .NET runtimes”

• Provides uniformity in the .NET ecosystem• Let’s your code to run anywhere

• 335 is for CLI, this is for BCL

• Let’s you produce portable libraries • Not same as Portable Class Libraries

• Reduce/eliminate need for conditional compilation for OS

htt

ps:

//w

eblo

g.w

est-

win

d.c

om

/po

sts/

20

16

/No

v/2

3/N

ET-

Stan

dar

d-2

0-M

akin

g-Se

nse

-of-

NET

-Aga

in

Standard libraries implement at least .NET Standard

EF 6.x

EF Core

WPF, UWP

ASP.NET 4.x

ASP.NET Core

Xamarinforms

.NET Framework

CoreFX

Xamarin

CLR

Core CLR

Mono

Visual Studio

Visual Studio Code

Project Rider

What is does it take to develop?

.NET Standard

RuntimeBasic

librariesYour code

Delivery libraries

Data librariesEditor

Compiler

.NET Standard

Your App Foo

.NET 4.n

Your App Bar

.NET Core

.NET Standard

Your App Foo

.NET 4.n

Your App Bar

.NET Core

.NET Standard

Your WinForms

.NET 4.n

Your WPF

.NET 4.n

UWP Bridge (previously Project Centennial)

UWP.NET for

UWP

.NET Standardlibraries

.NET Standardlibraries

.NET Standardlibraries

Your ASP.NET

WebForms.NET 4.n

Your ASP.NET WebAPI

Your ASP.NET

MVC.NET Core

.NET 4.n

.NET 4.nASP.NET Core 1.n (MVC)

.NET 4.n

.NET Standardlibraries

Your ASP.NET

WebForms.NET 4.n

Your ASP.NET WebAPI

Your ASP.NET

MVC

.NET Standard

.NET 4.n

.NET 4.nASP.NET

Core MVC

Fall 2017.NET Standard 2

.NET Standardlibraries

Your ASP.NET

WebForms.NET 4.n

Your ASP.NET WebAPI

Your ASP.NET

MVC.NET Core

.NET 4.n

.NET 4.nASP.NET

Core MVC

Preview 1 ONLY

Preview 1.NET Standard 2

Your EF 6.n

.NET 4.n

Entity Framework

.NET Core

.NET 4.n

Your EF Core 1.n

(Recent also run .NET Standard)

.NET Standardlibraries

YourEF 6.n

.NET Standard

.NET 4.nYour

EF Core 2

Entity Framework

Standard libraries implement at least .NET Standard

.NET Standard 1.0 1.1 1.2 1.3 1.4 1.5 1.6 2.0

.NET Core 1.0 1.0 1.0 1.0 1.0 1.0 1.0 2.0

.NET Framework (with tooling 1.0)

4.5 4.5 4.5.1 4.6 4.6.1 4.6.2 vNext 4.6.1

.NET Framework (with tooling 2.0)

4.5 4.5 4.5.1 4.6 4.6.1 4.6.1 4.6.1 4.6.1

Mono 4.6 4.6 4.6 4.6 4.6 4.6 4.6 vNext

Xamarin.iOS 10.0 10.0 10.0 10.0 10.0 10.0 10.0 vNext

Xamarin.Android 7.0 7.0 7.0 7.0 7.0 7.0 7.0 vNext

Universal Windows Platform

10.0 10.0 10.0 10.0 10.0 vNext vNext vNext

Windows 8.0 8.0 8.1

Windows Phone 8.1 8.1 8.1

Windows Phone Silverlight

8.0

.NET Framework version

CLR version

Included in Visual Studio version

✓ Included in+ Can be installed onWindows

✓ Included in+ Can be installed onWindows Server

.NET 4.7 4 2017 ✓10 Creators+10 Anniverary, 8.1, 7

+2016, 2012 R2, 2012, 2008 R2 SP1

.NET 4.6.2 4 ✓ 10 Anniverary Update, + 8.1, 7

✓ 2016, + 2012 R2, 2012, 2008 R2 SP1

.NET 4.6.1 4 2016 Update 1 ✓ 10 November Update, + 10, 8.1, 8, 7

+ 2012 R2, 2012, 2008 R2 SP1

.NET 4.6 4 2015 ✓ 10, + 8.1, 8, 7, Vista

+2012 R2, 2012, 2008 R2 SP1, 2008 SP2

4.5.2 4 - + 8.1, 8, 7, Vista + 2012 R2, 2012, 2008 R2 SP1, 2008 SP2

4.5.1 4 2013 ✓ 8.1, + 8, 7, Vista

✓ 2012 R2, + 2012, 2008 R2 SP1, 2008 SP2

4.5 4 2012 ✓ 8, + 7, Vista

✓ 2012, + 2008 R2 SP1, 2008 SP2

4 4 2010 + 7, Vista + 2008 R2 SP1, 2008 SP2, 20033.5 2 2008 ✓ 10, 8.1*, 8, 7

+ Vista✓2008 R2 SP1*+ 2012 R2, 2012, 2008 SP2, 2003

3 2 - ✓ Vista ✓ 2008 R2 SP1*, 2008 SP2, 2003

EF 6.x

EF Core

WPF, UWP

ASP.NET 4.x

ASP.NET Core

Xamarinforms

.NET Standard

API definitions so.NET Framework,

.NET Core, Xamarin

and their basic librariesfollow same API

Visual Studio

Visual Studio Code

What is does it take to develop?

RuntimeBasic

librariesYour code

Delivery libraries

Data libraries

Editor

Compiler

.NET Core

• New

• Faster

• Cross platform

• Module

• Open Source

Small? Dependencies?

Package of packages

Trimmed

.json projects?

Replaced with an updated MSBuild

ASP.NET Core

• Faster

• Rewritten for currently common scenarios

• Runs cross platform and off IIS (IIS still provides value)

• Sweet built-in dependency injection (DI)

• Simple configuration from multiple sources with fallback

• Only include what you want• Now there is also a reasonable default

• Razor pages

Entity Framework Core 2.0

• Global filters

• Flexible mapping

• Context pooling

• EF Everywhere (IoT demo)

• Compiled Queries

• EF Functions

• Owned Entity improvements (navigation properties)

• MAYBE: Seed data

https://channel9.msdn.com/Events/Build/2017/B8050

What train?

What train?

LTS: Long term support

FTS: Fast track support

Nightly build

LTS• Major version numbers

• Support• 3 years from release

• 1 year from next major

FTS• Minor version numbers

• Support• 3 years from release

• 1 year from next major

• 3 months from next minor

Pick your track

2.0 3.0 4.0

2.0 2.1 2.2 2.3 3.0 3.1 3.2 3.3 4.0 4.1 4.2 4.3

FTS

LTS

LTS• Major version numbers

• Support• 3 years from release

• 1 year from next major

• Will get a lot of press

FTS• Minor version numbers

• Support• 3 years from release

• 1 year from next major

• 3 months from next minor

• Will get a lot of press

More on support

• Support for ASP.NET Core: What is an LTS?

• Maria Naggaga Nakanwagi

• Build 2017

• https://channel9.msdn.com/Events/Build/2017/T6072

Windows Portability Analyzer

https://marketplace.visualstudio.com/items?itemName=ConnieYau.NETPortabilityAnalyzer

Takeaways (your mileage may vary)

• .NET needs to change to stay relevant

• Change looked really painful before .NET Standard• With Standard you can separately schedule your shift to Core• Prior to 2.0 API’s are limited

• Planning this year• Go to .NET 4.61 or 4.7 if you can (skip 4.6.2)• Run .NET Portability answer early and often• Watch for Standard 2.0; use it when it’s ready, even if you are using .NET 4.6x• Switch to ASP.NET/EF Core when you want it’s features (cross platform)

• Pick the right support track

• Core is on a brilliant set of modern principles

References

http://www.hanselman.com/blog/WhatNETDevelopersOughtToKnowToStartIn2017.aspx

https://docs.microsoft.com/en-us/dotnet/articles/standard/library

https://blogs.msdn.microsoft.com/dotnet/2016/07/26/net-support-and-versioning/

https://marketplace.visualstudio.com/items?itemName=ConnieYau.NETPortabilityAnalyzer

https://weblog.west-wind.com/posts/2016/Nov/23/NET-Standard-20-Making-Sense-of-NET-Again

Questions?


Recommended