SlideShare a Scribd company logo
1
Tamir Dresher (@tamir_dresher)
Cloud Division Leader
J
.NET News & Connect(); 2017 Recap
1
• Cloud Division Leader @ CodeValue
• Software architect, consultant and instructor
• Software Engineering Lecturer @ Ruppin Academic Center
• Author of Rx.NET in Action (Manning)
• Visual Studio and Development Technologies MVP
@tamir_dresher
tamirdr@codevalue.net
http://www.TamirDresher.com.
About Me
Agenda
What’s new for Application Developers & DevOps
Other Announcements ad Updated (Tools, Data, AI & ML)
C# 7.2 & 8.0
3
5
What’s new for Application
Developers & DevOps
Visual Studio 2017 Version 15.6 Preview
https://blogs.msdn.microsoft.com/visualstudio/2017/12/07/visual-
studio-2017-version-15-6-preview/
Some profiling improvements
Team explorer git features
pull-request review in VS
Git tags
Bug fixes
Xamarin improvements
6
Visual Studio App Center
https://www.visualstudio.com/app-center/
Automate the lifecycle of your iOS, Android, Windows, and macOS
apps.
build, test, distribute to beta testers and app stores, and monitor. All in
one place.
Crash reporting & analytics
Continuous integration builds
Continuous deployment to groups of testers / store
Automated testing using the device cloud
Targeted push notifications
7
ApCenter
8
9
10
Live Share
11
VS Live Share
12
VS Live Share
13
Visual Studio Connected
Environment for AKS
14
Visual Studio Connected Environment for AKS
15
VSTS Git Forks
A fork is a complete copy of a repository, including all files, commits,
and (optionally) branches.
Forks are a great way to isolate experimental, risky, or confidential
changes from the original codebase.
16
GVFS - Git Virtual File System
The Git client was never designed to work with repos with many files or
large amount of content.
Windows codebase has over 3.5 million files and is over 270 GB in size
when you run “git checkout” and it takes up to 3 hours, or even a simple “git
status” takes almost 10 minutes to run.
GVFS virtualizes the file system beneath your repo
Files will only be downloaded when needed
17
DevOps projects
18
DevOps project
19
20
21
22
23
AI, Data and ML
24
Making AI and ML Accessible to any Developer
many announcements such as Visual Studio Code Tools for AI
the new Microsoft AI School
25
C# 7.2 & 8.0
26
C# Access Modifiers
What are the C# access modifiers? How many?
public - Access is not restricted
private - Access is limited to the containing type
protected - Access is limited to the containing class or types derived from the
containing class
internal - Access is limited to the current assembly
protected internal - Access is limited to the current assembly or types
derived from the containing class
(*new) private protected - Access is limited to the containing class or
types derived from the containing class within the current assembly
27
Readonly structs
A read-only struct is a struct whose public members are read-only, as
well as the “this” parameter.
28
public readonly struct ReadOnlyPoint
{
public int X { get; }
public int Y { get; }
public ReadOnlyPoint(int x, int y)
{
X = x;
Y = y;
}
}
Readonly structs
A read-only struct is a struct whose public members are read-only, as
well as the “this” parameter.
29
public readonly struct ReadOnlyPoint
{
public int X { get; set; }
public int Y { get; set; }
public ReadOnlyPoint(int x, int y)
{
X = x;
Y = y;
}
}
Readonly arguments
Problem:
30
public static MutablePoint Add(MutablePoint point1, MutablePoint point2)
{
point1.X += point2.X;
point1.Y += point2.Y;
return point1;
}
Add(x1, x1);
Caller has no way of telling
that this is being modified
public static MutablePoint Add(in MutablePoint point1, in MutablePoint point2)
{
point1.X += point2.X;
point1.Y += point2.Y;
return point1;
}
Solution:
Readonly arguments
Problem:
31
public static MutablePoint Add(MutablePoint point1, MutablePoint point2)
{
point1.X += point2.X;
point1.Y += point2.Y;
return point1;
}
Add(x1, x1);
Caller has no way of telling
that this is being modified
public static MutablePoint Add(in MutablePoint point1, in MutablePoint point2)
{
return new MutablePoint(point1.X + point2.X, point1.Y + point2.Y);
}
SafeAdd(in x1, in x1);
Solution:
Readonly structs
A read-only struct is a struct whose public members are read-only, as
well as the “this” parameter.
In short - a feature that makes this parameter of all instance members of a
struct, except for constructors, an in parameter.
public readonly struct ReadOnlyPoint
{
public int X { get; set; }
public int Y { get; set; }
public ReadOnlyPoint(int x, int y)
{
X = x;
Y = y;
}
}
Nullable reference types
Do you see a problem with this code?
33
public static void PrintNames(IEnumerable<Person> people)
{
foreach (var person in people)
{
PrintInCapital(person.FirstName);
PrintInCapital(person.MiddleName);
PrintInCapital(person.LastName);
}
}
public class Person
{
public string FirstName { get; set; }
public string MiddleName { get; set; }
public string LastName { get; set; }
}
public static void PrintInCapital(string s)
{
Console.WriteLine(s.ToUpper());
}
Potential
NullRefenceException
Nullable reference types - motivation
Do you see a problem with this code?
34
public static void PrintNames(IEnumerable<Person> people)
{
foreach (var person in people)
{
PrintInCapital(person.FirstName);
PrintInCapital(person.MiddleName);
PrintInCapital(person.LastName);
}
}
public class Person
{
public string FirstName { get; set; }
public string MiddleName { get; set; }
public string LastName { get; set; }
}
public static void PrintInCapital(string s)
{
Console.WriteLine(s.ToUpper());
}
Potential
NullRefenceException
Nullable reference types
Allow developers to express whether a variable, parameter or result of
a reference type is intended to be null or not.
Provide warnings when such variables, parameters and results are not
used according to that intent.
35
public class Person
{
public string FirstName { get; set; }
public string? MiddleName { get; set; }
public string LastName { get; set; }
}
var valid=new Person{FirstName = "Bart", MiddleName = null, LastName = "Simpson"};
var invalid=new Person{FirstName = "Madone", MiddleName = null, LastName = null};
PrintInCapital(person.MiddleName);
Span<T> and Memory<T>
How many allocations are made?
Allocations put pressure on the GC and effects your application
performance
36
string input = "Tamir,Dresher";
int commaPos = input.IndexOf(',');
int first = int.Parse(input.Substring(0, commaPos));
int second = int.Parse(input.Substring(commaPos + 1));
String
allocation
String
allocation
Span<T> and Memory<T>
Span<T> is a safe and Performant wrapper over a contiguous regions of
arbitrary memory. Can only live on the stack
Memeory<T> is like Span<T> but can live on the heap
37
string input = "Tamir,Dresher";
ReadOnlySpan<char> inputSpan = input.AsSpan();
int commaPos = input.IndexOf(',');
int first = int.Parse(inputSpan.Slice(0, commaPos));
int second = int.Parse(inputSpan.Slice(commaPos + 1));
Pointer
Length
Summary
What’s new for Application Developers & DevOps
Other Announcements ad Updated (Tools, Data, AI & ML)
C# 7.2 & 8.0
Private protected
Readonly structs and arguments
Nullable reference types
Span<T>
38
@tamir_dresher
tamirdr@codevalue.net
http://www.TamirDresher.com.

More Related Content

What's hot

Pattern printing programs
Pattern printing programsPattern printing programs
Pattern printing programs
Mukesh Tekwani
 
Intake 38 data access 5
Intake 38 data access 5Intake 38 data access 5
Intake 38 data access 5
Mahmoud Ouf
 
C# programs
C# programsC# programs
C# programs
Gourav Pant
 
Intake 37 linq2
Intake 37 linq2Intake 37 linq2
Intake 37 linq2
Mahmoud Ouf
 
Intake 38 5
Intake 38 5Intake 38 5
Intake 38 5
Mahmoud Ouf
 

What's hot (6)

Pattern printing programs
Pattern printing programsPattern printing programs
Pattern printing programs
 
C# labprograms
C# labprogramsC# labprograms
C# labprograms
 
Intake 38 data access 5
Intake 38 data access 5Intake 38 data access 5
Intake 38 data access 5
 
C# programs
C# programsC# programs
C# programs
 
Intake 37 linq2
Intake 37 linq2Intake 37 linq2
Intake 37 linq2
 
Intake 38 5
Intake 38 5Intake 38 5
Intake 38 5
 

Similar to .Net december 2017 updates - Tamir Dresher

Design Patterns
Design PatternsDesign Patterns
Java beginners meetup: Introduction to class and application design
Java beginners meetup: Introduction to class and application designJava beginners meetup: Introduction to class and application design
Java beginners meetup: Introduction to class and application design
Patrick Kostjens
 
Intro to object oriented programming
Intro to object oriented programmingIntro to object oriented programming
Intro to object oriented programmingDavid Giard
 
Presentation on design pattern software project lll
 Presentation on design pattern  software project lll  Presentation on design pattern  software project lll
Presentation on design pattern software project lll
Uchiha Shahin
 
From Legacy to Hexagonal (An Unexpected Android Journey)
From Legacy to Hexagonal (An Unexpected Android Journey)From Legacy to Hexagonal (An Unexpected Android Journey)
From Legacy to Hexagonal (An Unexpected Android Journey)
Jose Manuel Pereira Garcia
 
20.4 Java interfaces and abstraction
20.4 Java interfaces and abstraction20.4 Java interfaces and abstraction
20.4 Java interfaces and abstraction
Intro C# Book
 
20.1 Java working with abstraction
20.1 Java working with abstraction20.1 Java working with abstraction
20.1 Java working with abstraction
Intro C# Book
 
Legacy is Good
Legacy is GoodLegacy is Good
Legacy is Good
Uberto Barbini
 
The real beginner's guide to android testing
The real beginner's guide to android testingThe real beginner's guide to android testing
The real beginner's guide to android testing
Eric (Trung Dung) Nguyen
 
Demystifying Reactive Programming
Demystifying Reactive ProgrammingDemystifying Reactive Programming
Demystifying Reactive Programming
Tom Bulatewicz, PhD
 
Evolving a Clean, Pragmatic Architecture at JBCNConf 2019
Evolving a Clean, Pragmatic Architecture at JBCNConf 2019Evolving a Clean, Pragmatic Architecture at JBCNConf 2019
Evolving a Clean, Pragmatic Architecture at JBCNConf 2019
Victor Rentea
 
Preprocessor directives
Preprocessor directivesPreprocessor directives
Preprocessor directives
Vikash Dhal
 
1183 c-interview-questions-and-answers
1183 c-interview-questions-and-answers1183 c-interview-questions-and-answers
1183 c-interview-questions-and-answers
Akash Gawali
 
Creating sub zero dashboard plugin for apex with google
Creating sub zero dashboard plugin for apex with googleCreating sub zero dashboard plugin for apex with google
Creating sub zero dashboard plugin for apex with google
Roel Hartman
 
Compiler Case Study - Design Patterns in C#
Compiler Case Study - Design Patterns in C#Compiler Case Study - Design Patterns in C#
Compiler Case Study - Design Patterns in C#
CodeOps Technologies LLP
 
Cloud nativeworkshop
Cloud nativeworkshopCloud nativeworkshop
Cloud nativeworkshop
Emily Jiang
 
Petcube epic battle: architecture vs product. UA Mobile 2017.
Petcube epic battle: architecture vs product. UA Mobile 2017.Petcube epic battle: architecture vs product. UA Mobile 2017.
Petcube epic battle: architecture vs product. UA Mobile 2017.
UA Mobile
 
JSLounge - TypeScript 소개
JSLounge - TypeScript 소개JSLounge - TypeScript 소개
JSLounge - TypeScript 소개Reagan Hwang
 

Similar to .Net december 2017 updates - Tamir Dresher (20)

Clean code
Clean codeClean code
Clean code
 
Design Patterns
Design PatternsDesign Patterns
Design Patterns
 
Java beginners meetup: Introduction to class and application design
Java beginners meetup: Introduction to class and application designJava beginners meetup: Introduction to class and application design
Java beginners meetup: Introduction to class and application design
 
Intro to object oriented programming
Intro to object oriented programmingIntro to object oriented programming
Intro to object oriented programming
 
Presentation on design pattern software project lll
 Presentation on design pattern  software project lll  Presentation on design pattern  software project lll
Presentation on design pattern software project lll
 
From Legacy to Hexagonal (An Unexpected Android Journey)
From Legacy to Hexagonal (An Unexpected Android Journey)From Legacy to Hexagonal (An Unexpected Android Journey)
From Legacy to Hexagonal (An Unexpected Android Journey)
 
20.4 Java interfaces and abstraction
20.4 Java interfaces and abstraction20.4 Java interfaces and abstraction
20.4 Java interfaces and abstraction
 
Design Patterns
Design PatternsDesign Patterns
Design Patterns
 
20.1 Java working with abstraction
20.1 Java working with abstraction20.1 Java working with abstraction
20.1 Java working with abstraction
 
Legacy is Good
Legacy is GoodLegacy is Good
Legacy is Good
 
The real beginner's guide to android testing
The real beginner's guide to android testingThe real beginner's guide to android testing
The real beginner's guide to android testing
 
Demystifying Reactive Programming
Demystifying Reactive ProgrammingDemystifying Reactive Programming
Demystifying Reactive Programming
 
Evolving a Clean, Pragmatic Architecture at JBCNConf 2019
Evolving a Clean, Pragmatic Architecture at JBCNConf 2019Evolving a Clean, Pragmatic Architecture at JBCNConf 2019
Evolving a Clean, Pragmatic Architecture at JBCNConf 2019
 
Preprocessor directives
Preprocessor directivesPreprocessor directives
Preprocessor directives
 
1183 c-interview-questions-and-answers
1183 c-interview-questions-and-answers1183 c-interview-questions-and-answers
1183 c-interview-questions-and-answers
 
Creating sub zero dashboard plugin for apex with google
Creating sub zero dashboard plugin for apex with googleCreating sub zero dashboard plugin for apex with google
Creating sub zero dashboard plugin for apex with google
 
Compiler Case Study - Design Patterns in C#
Compiler Case Study - Design Patterns in C#Compiler Case Study - Design Patterns in C#
Compiler Case Study - Design Patterns in C#
 
Cloud nativeworkshop
Cloud nativeworkshopCloud nativeworkshop
Cloud nativeworkshop
 
Petcube epic battle: architecture vs product. UA Mobile 2017.
Petcube epic battle: architecture vs product. UA Mobile 2017.Petcube epic battle: architecture vs product. UA Mobile 2017.
Petcube epic battle: architecture vs product. UA Mobile 2017.
 
JSLounge - TypeScript 소개
JSLounge - TypeScript 소개JSLounge - TypeScript 소개
JSLounge - TypeScript 소개
 

More from Tamir Dresher

NET Aspire - NET Conf IL 2024 - Tamir Dresher.pdf
NET Aspire - NET Conf IL 2024 - Tamir Dresher.pdfNET Aspire - NET Conf IL 2024 - Tamir Dresher.pdf
NET Aspire - NET Conf IL 2024 - Tamir Dresher.pdf
Tamir Dresher
 
Tamir Dresher - DotNet 7 What's new.pptx
Tamir Dresher - DotNet 7 What's new.pptxTamir Dresher - DotNet 7 What's new.pptx
Tamir Dresher - DotNet 7 What's new.pptx
Tamir Dresher
 
Tamir Dresher - What’s new in ASP.NET Core 6
Tamir Dresher - What’s new in ASP.NET Core 6Tamir Dresher - What’s new in ASP.NET Core 6
Tamir Dresher - What’s new in ASP.NET Core 6
Tamir Dresher
 
Tamir Dresher - Async Streams in C#
Tamir Dresher - Async Streams in C#Tamir Dresher - Async Streams in C#
Tamir Dresher - Async Streams in C#
Tamir Dresher
 
Anatomy of a data driven architecture - Tamir Dresher
Anatomy of a data driven architecture - Tamir Dresher   Anatomy of a data driven architecture - Tamir Dresher
Anatomy of a data driven architecture - Tamir Dresher
Tamir Dresher
 
Tamir Dresher Clarizen adventures with the wild GC during the holiday season
Tamir Dresher   Clarizen adventures with the wild GC during the holiday seasonTamir Dresher   Clarizen adventures with the wild GC during the holiday season
Tamir Dresher Clarizen adventures with the wild GC during the holiday season
Tamir Dresher
 
Debugging tricks you wish you knew Tamir Dresher - Odessa 2019
Debugging tricks you wish you knew   Tamir Dresher - Odessa 2019Debugging tricks you wish you knew   Tamir Dresher - Odessa 2019
Debugging tricks you wish you knew Tamir Dresher - Odessa 2019
Tamir Dresher
 
From zero to hero with the actor model - Tamir Dresher - Odessa 2019
From zero to hero with the actor model  - Tamir Dresher - Odessa 2019From zero to hero with the actor model  - Tamir Dresher - Odessa 2019
From zero to hero with the actor model - Tamir Dresher - Odessa 2019
Tamir Dresher
 
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
Tamir Dresher
 
Breaking the monolith to microservice with Docker and Kubernetes (k8s)
Breaking the monolith to microservice with Docker and Kubernetes (k8s)Breaking the monolith to microservice with Docker and Kubernetes (k8s)
Breaking the monolith to microservice with Docker and Kubernetes (k8s)
Tamir Dresher
 
Testing time and concurrency Rx
Testing time and concurrency RxTesting time and concurrency Rx
Testing time and concurrency Rx
Tamir Dresher
 
Building responsive application with Rx - confoo - tamir dresher
Building responsive application with Rx - confoo - tamir dresherBuilding responsive application with Rx - confoo - tamir dresher
Building responsive application with Rx - confoo - tamir dresher
Tamir Dresher
 
.NET Debugging tricks you wish you knew tamir dresher
.NET Debugging tricks you wish you knew   tamir dresher.NET Debugging tricks you wish you knew   tamir dresher
.NET Debugging tricks you wish you knew tamir dresher
Tamir Dresher
 
From Zero to the Actor Model (With Akka.Net) - CodeMash2017 - Tamir Dresher
From Zero to the Actor Model (With Akka.Net) - CodeMash2017 - Tamir DresherFrom Zero to the Actor Model (With Akka.Net) - CodeMash2017 - Tamir Dresher
From Zero to the Actor Model (With Akka.Net) - CodeMash2017 - Tamir Dresher
Tamir Dresher
 
Building responsive applications with Rx - CodeMash2017 - Tamir Dresher
Building responsive applications with Rx  - CodeMash2017 - Tamir DresherBuilding responsive applications with Rx  - CodeMash2017 - Tamir Dresher
Building responsive applications with Rx - CodeMash2017 - Tamir Dresher
Tamir Dresher
 
Debugging tricks you wish you knew - Tamir Dresher
Debugging tricks you wish you knew  - Tamir DresherDebugging tricks you wish you knew  - Tamir Dresher
Debugging tricks you wish you knew - Tamir Dresher
Tamir Dresher
 
Rx 101 - Tamir Dresher - Copenhagen .NET User Group
Rx 101  - Tamir Dresher - Copenhagen .NET User GroupRx 101  - Tamir Dresher - Copenhagen .NET User Group
Rx 101 - Tamir Dresher - Copenhagen .NET User Group
Tamir Dresher
 
Cloud patterns - NDC Oslo 2016 - Tamir Dresher
Cloud patterns - NDC Oslo 2016 - Tamir DresherCloud patterns - NDC Oslo 2016 - Tamir Dresher
Cloud patterns - NDC Oslo 2016 - Tamir Dresher
Tamir Dresher
 
Reactiveness All The Way - SW Architecture 2015 Conference
Reactiveness All The Way - SW Architecture 2015 ConferenceReactiveness All The Way - SW Architecture 2015 Conference
Reactiveness All The Way - SW Architecture 2015 Conference
Tamir Dresher
 
Rx 101 Codemotion Milan 2015 - Tamir Dresher
Rx 101   Codemotion Milan 2015 - Tamir DresherRx 101   Codemotion Milan 2015 - Tamir Dresher
Rx 101 Codemotion Milan 2015 - Tamir Dresher
Tamir Dresher
 

More from Tamir Dresher (20)

NET Aspire - NET Conf IL 2024 - Tamir Dresher.pdf
NET Aspire - NET Conf IL 2024 - Tamir Dresher.pdfNET Aspire - NET Conf IL 2024 - Tamir Dresher.pdf
NET Aspire - NET Conf IL 2024 - Tamir Dresher.pdf
 
Tamir Dresher - DotNet 7 What's new.pptx
Tamir Dresher - DotNet 7 What's new.pptxTamir Dresher - DotNet 7 What's new.pptx
Tamir Dresher - DotNet 7 What's new.pptx
 
Tamir Dresher - What’s new in ASP.NET Core 6
Tamir Dresher - What’s new in ASP.NET Core 6Tamir Dresher - What’s new in ASP.NET Core 6
Tamir Dresher - What’s new in ASP.NET Core 6
 
Tamir Dresher - Async Streams in C#
Tamir Dresher - Async Streams in C#Tamir Dresher - Async Streams in C#
Tamir Dresher - Async Streams in C#
 
Anatomy of a data driven architecture - Tamir Dresher
Anatomy of a data driven architecture - Tamir Dresher   Anatomy of a data driven architecture - Tamir Dresher
Anatomy of a data driven architecture - Tamir Dresher
 
Tamir Dresher Clarizen adventures with the wild GC during the holiday season
Tamir Dresher   Clarizen adventures with the wild GC during the holiday seasonTamir Dresher   Clarizen adventures with the wild GC during the holiday season
Tamir Dresher Clarizen adventures with the wild GC during the holiday season
 
Debugging tricks you wish you knew Tamir Dresher - Odessa 2019
Debugging tricks you wish you knew   Tamir Dresher - Odessa 2019Debugging tricks you wish you knew   Tamir Dresher - Odessa 2019
Debugging tricks you wish you knew Tamir Dresher - Odessa 2019
 
From zero to hero with the actor model - Tamir Dresher - Odessa 2019
From zero to hero with the actor model  - Tamir Dresher - Odessa 2019From zero to hero with the actor model  - Tamir Dresher - Odessa 2019
From zero to hero with the actor model - Tamir Dresher - Odessa 2019
 
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
 
Breaking the monolith to microservice with Docker and Kubernetes (k8s)
Breaking the monolith to microservice with Docker and Kubernetes (k8s)Breaking the monolith to microservice with Docker and Kubernetes (k8s)
Breaking the monolith to microservice with Docker and Kubernetes (k8s)
 
Testing time and concurrency Rx
Testing time and concurrency RxTesting time and concurrency Rx
Testing time and concurrency Rx
 
Building responsive application with Rx - confoo - tamir dresher
Building responsive application with Rx - confoo - tamir dresherBuilding responsive application with Rx - confoo - tamir dresher
Building responsive application with Rx - confoo - tamir dresher
 
.NET Debugging tricks you wish you knew tamir dresher
.NET Debugging tricks you wish you knew   tamir dresher.NET Debugging tricks you wish you knew   tamir dresher
.NET Debugging tricks you wish you knew tamir dresher
 
From Zero to the Actor Model (With Akka.Net) - CodeMash2017 - Tamir Dresher
From Zero to the Actor Model (With Akka.Net) - CodeMash2017 - Tamir DresherFrom Zero to the Actor Model (With Akka.Net) - CodeMash2017 - Tamir Dresher
From Zero to the Actor Model (With Akka.Net) - CodeMash2017 - Tamir Dresher
 
Building responsive applications with Rx - CodeMash2017 - Tamir Dresher
Building responsive applications with Rx  - CodeMash2017 - Tamir DresherBuilding responsive applications with Rx  - CodeMash2017 - Tamir Dresher
Building responsive applications with Rx - CodeMash2017 - Tamir Dresher
 
Debugging tricks you wish you knew - Tamir Dresher
Debugging tricks you wish you knew  - Tamir DresherDebugging tricks you wish you knew  - Tamir Dresher
Debugging tricks you wish you knew - Tamir Dresher
 
Rx 101 - Tamir Dresher - Copenhagen .NET User Group
Rx 101  - Tamir Dresher - Copenhagen .NET User GroupRx 101  - Tamir Dresher - Copenhagen .NET User Group
Rx 101 - Tamir Dresher - Copenhagen .NET User Group
 
Cloud patterns - NDC Oslo 2016 - Tamir Dresher
Cloud patterns - NDC Oslo 2016 - Tamir DresherCloud patterns - NDC Oslo 2016 - Tamir Dresher
Cloud patterns - NDC Oslo 2016 - Tamir Dresher
 
Reactiveness All The Way - SW Architecture 2015 Conference
Reactiveness All The Way - SW Architecture 2015 ConferenceReactiveness All The Way - SW Architecture 2015 Conference
Reactiveness All The Way - SW Architecture 2015 Conference
 
Rx 101 Codemotion Milan 2015 - Tamir Dresher
Rx 101   Codemotion Milan 2015 - Tamir DresherRx 101   Codemotion Milan 2015 - Tamir Dresher
Rx 101 Codemotion Milan 2015 - Tamir Dresher
 

Recently uploaded

A Sighting of filterA in Typelevel Rite of Passage
A Sighting of filterA in Typelevel Rite of PassageA Sighting of filterA in Typelevel Rite of Passage
A Sighting of filterA in Typelevel Rite of Passage
Philip Schwarz
 
Developing Distributed High-performance Computing Capabilities of an Open Sci...
Developing Distributed High-performance Computing Capabilities of an Open Sci...Developing Distributed High-performance Computing Capabilities of an Open Sci...
Developing Distributed High-performance Computing Capabilities of an Open Sci...
Globus
 
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Globus
 
Corporate Management | Session 3 of 3 | Tendenci AMS
Corporate Management | Session 3 of 3 | Tendenci AMSCorporate Management | Session 3 of 3 | Tendenci AMS
Corporate Management | Session 3 of 3 | Tendenci AMS
Tendenci - The Open Source AMS (Association Management Software)
 
AI Pilot Review: The World’s First Virtual Assistant Marketing Suite
AI Pilot Review: The World’s First Virtual Assistant Marketing SuiteAI Pilot Review: The World’s First Virtual Assistant Marketing Suite
AI Pilot Review: The World’s First Virtual Assistant Marketing Suite
Google
 
Globus Connect Server Deep Dive - GlobusWorld 2024
Globus Connect Server Deep Dive - GlobusWorld 2024Globus Connect Server Deep Dive - GlobusWorld 2024
Globus Connect Server Deep Dive - GlobusWorld 2024
Globus
 
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Mind IT Systems
 
Enhancing Project Management Efficiency_ Leveraging AI Tools like ChatGPT.pdf
Enhancing Project Management Efficiency_ Leveraging AI Tools like ChatGPT.pdfEnhancing Project Management Efficiency_ Leveraging AI Tools like ChatGPT.pdf
Enhancing Project Management Efficiency_ Leveraging AI Tools like ChatGPT.pdf
Jay Das
 
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data AnalysisProviding Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
Globus
 
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
informapgpstrackings
 
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.ILBeyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
Natan Silnitsky
 
A Comprehensive Look at Generative AI in Retail App Testing.pdf
A Comprehensive Look at Generative AI in Retail App Testing.pdfA Comprehensive Look at Generative AI in Retail App Testing.pdf
A Comprehensive Look at Generative AI in Retail App Testing.pdf
kalichargn70th171
 
First Steps with Globus Compute Multi-User Endpoints
First Steps with Globus Compute Multi-User EndpointsFirst Steps with Globus Compute Multi-User Endpoints
First Steps with Globus Compute Multi-User Endpoints
Globus
 
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Globus
 
Understanding Globus Data Transfers with NetSage
Understanding Globus Data Transfers with NetSageUnderstanding Globus Data Transfers with NetSage
Understanding Globus Data Transfers with NetSage
Globus
 
RISE with SAP and Journey to the Intelligent Enterprise
RISE with SAP and Journey to the Intelligent EnterpriseRISE with SAP and Journey to the Intelligent Enterprise
RISE with SAP and Journey to the Intelligent Enterprise
Srikant77
 
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, BetterWebinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
XfilesPro
 
Orion Context Broker introduction 20240604
Orion Context Broker introduction 20240604Orion Context Broker introduction 20240604
Orion Context Broker introduction 20240604
Fermin Galan
 
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoamOpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
takuyayamamoto1800
 
BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024
Ortus Solutions, Corp
 

Recently uploaded (20)

A Sighting of filterA in Typelevel Rite of Passage
A Sighting of filterA in Typelevel Rite of PassageA Sighting of filterA in Typelevel Rite of Passage
A Sighting of filterA in Typelevel Rite of Passage
 
Developing Distributed High-performance Computing Capabilities of an Open Sci...
Developing Distributed High-performance Computing Capabilities of an Open Sci...Developing Distributed High-performance Computing Capabilities of an Open Sci...
Developing Distributed High-performance Computing Capabilities of an Open Sci...
 
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
 
Corporate Management | Session 3 of 3 | Tendenci AMS
Corporate Management | Session 3 of 3 | Tendenci AMSCorporate Management | Session 3 of 3 | Tendenci AMS
Corporate Management | Session 3 of 3 | Tendenci AMS
 
AI Pilot Review: The World’s First Virtual Assistant Marketing Suite
AI Pilot Review: The World’s First Virtual Assistant Marketing SuiteAI Pilot Review: The World’s First Virtual Assistant Marketing Suite
AI Pilot Review: The World’s First Virtual Assistant Marketing Suite
 
Globus Connect Server Deep Dive - GlobusWorld 2024
Globus Connect Server Deep Dive - GlobusWorld 2024Globus Connect Server Deep Dive - GlobusWorld 2024
Globus Connect Server Deep Dive - GlobusWorld 2024
 
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
 
Enhancing Project Management Efficiency_ Leveraging AI Tools like ChatGPT.pdf
Enhancing Project Management Efficiency_ Leveraging AI Tools like ChatGPT.pdfEnhancing Project Management Efficiency_ Leveraging AI Tools like ChatGPT.pdf
Enhancing Project Management Efficiency_ Leveraging AI Tools like ChatGPT.pdf
 
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data AnalysisProviding Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
 
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
 
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.ILBeyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
 
A Comprehensive Look at Generative AI in Retail App Testing.pdf
A Comprehensive Look at Generative AI in Retail App Testing.pdfA Comprehensive Look at Generative AI in Retail App Testing.pdf
A Comprehensive Look at Generative AI in Retail App Testing.pdf
 
First Steps with Globus Compute Multi-User Endpoints
First Steps with Globus Compute Multi-User EndpointsFirst Steps with Globus Compute Multi-User Endpoints
First Steps with Globus Compute Multi-User Endpoints
 
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
 
Understanding Globus Data Transfers with NetSage
Understanding Globus Data Transfers with NetSageUnderstanding Globus Data Transfers with NetSage
Understanding Globus Data Transfers with NetSage
 
RISE with SAP and Journey to the Intelligent Enterprise
RISE with SAP and Journey to the Intelligent EnterpriseRISE with SAP and Journey to the Intelligent Enterprise
RISE with SAP and Journey to the Intelligent Enterprise
 
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, BetterWebinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
 
Orion Context Broker introduction 20240604
Orion Context Broker introduction 20240604Orion Context Broker introduction 20240604
Orion Context Broker introduction 20240604
 
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoamOpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
 
BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024
 

.Net december 2017 updates - Tamir Dresher

  • 1. 1 Tamir Dresher (@tamir_dresher) Cloud Division Leader J .NET News & Connect(); 2017 Recap 1
  • 2. • Cloud Division Leader @ CodeValue • Software architect, consultant and instructor • Software Engineering Lecturer @ Ruppin Academic Center • Author of Rx.NET in Action (Manning) • Visual Studio and Development Technologies MVP @tamir_dresher tamirdr@codevalue.net http://www.TamirDresher.com. About Me
  • 3. Agenda What’s new for Application Developers & DevOps Other Announcements ad Updated (Tools, Data, AI & ML) C# 7.2 & 8.0 3
  • 4. 5 What’s new for Application Developers & DevOps
  • 5. Visual Studio 2017 Version 15.6 Preview https://blogs.msdn.microsoft.com/visualstudio/2017/12/07/visual- studio-2017-version-15-6-preview/ Some profiling improvements Team explorer git features pull-request review in VS Git tags Bug fixes Xamarin improvements 6
  • 6. Visual Studio App Center https://www.visualstudio.com/app-center/ Automate the lifecycle of your iOS, Android, Windows, and macOS apps. build, test, distribute to beta testers and app stores, and monitor. All in one place. Crash reporting & analytics Continuous integration builds Continuous deployment to groups of testers / store Automated testing using the device cloud Targeted push notifications 7
  • 8. 9
  • 9. 10
  • 14. Visual Studio Connected Environment for AKS 15
  • 15. VSTS Git Forks A fork is a complete copy of a repository, including all files, commits, and (optionally) branches. Forks are a great way to isolate experimental, risky, or confidential changes from the original codebase. 16
  • 16. GVFS - Git Virtual File System The Git client was never designed to work with repos with many files or large amount of content. Windows codebase has over 3.5 million files and is over 270 GB in size when you run “git checkout” and it takes up to 3 hours, or even a simple “git status” takes almost 10 minutes to run. GVFS virtualizes the file system beneath your repo Files will only be downloaded when needed 17
  • 19. 20
  • 20. 21
  • 21. 22
  • 22. 23
  • 23. AI, Data and ML 24
  • 24. Making AI and ML Accessible to any Developer many announcements such as Visual Studio Code Tools for AI the new Microsoft AI School 25
  • 25. C# 7.2 & 8.0 26
  • 26. C# Access Modifiers What are the C# access modifiers? How many? public - Access is not restricted private - Access is limited to the containing type protected - Access is limited to the containing class or types derived from the containing class internal - Access is limited to the current assembly protected internal - Access is limited to the current assembly or types derived from the containing class (*new) private protected - Access is limited to the containing class or types derived from the containing class within the current assembly 27
  • 27. Readonly structs A read-only struct is a struct whose public members are read-only, as well as the “this” parameter. 28 public readonly struct ReadOnlyPoint { public int X { get; } public int Y { get; } public ReadOnlyPoint(int x, int y) { X = x; Y = y; } }
  • 28. Readonly structs A read-only struct is a struct whose public members are read-only, as well as the “this” parameter. 29 public readonly struct ReadOnlyPoint { public int X { get; set; } public int Y { get; set; } public ReadOnlyPoint(int x, int y) { X = x; Y = y; } }
  • 29. Readonly arguments Problem: 30 public static MutablePoint Add(MutablePoint point1, MutablePoint point2) { point1.X += point2.X; point1.Y += point2.Y; return point1; } Add(x1, x1); Caller has no way of telling that this is being modified public static MutablePoint Add(in MutablePoint point1, in MutablePoint point2) { point1.X += point2.X; point1.Y += point2.Y; return point1; } Solution:
  • 30. Readonly arguments Problem: 31 public static MutablePoint Add(MutablePoint point1, MutablePoint point2) { point1.X += point2.X; point1.Y += point2.Y; return point1; } Add(x1, x1); Caller has no way of telling that this is being modified public static MutablePoint Add(in MutablePoint point1, in MutablePoint point2) { return new MutablePoint(point1.X + point2.X, point1.Y + point2.Y); } SafeAdd(in x1, in x1); Solution:
  • 31. Readonly structs A read-only struct is a struct whose public members are read-only, as well as the “this” parameter. In short - a feature that makes this parameter of all instance members of a struct, except for constructors, an in parameter. public readonly struct ReadOnlyPoint { public int X { get; set; } public int Y { get; set; } public ReadOnlyPoint(int x, int y) { X = x; Y = y; } }
  • 32. Nullable reference types Do you see a problem with this code? 33 public static void PrintNames(IEnumerable<Person> people) { foreach (var person in people) { PrintInCapital(person.FirstName); PrintInCapital(person.MiddleName); PrintInCapital(person.LastName); } } public class Person { public string FirstName { get; set; } public string MiddleName { get; set; } public string LastName { get; set; } } public static void PrintInCapital(string s) { Console.WriteLine(s.ToUpper()); } Potential NullRefenceException
  • 33. Nullable reference types - motivation Do you see a problem with this code? 34 public static void PrintNames(IEnumerable<Person> people) { foreach (var person in people) { PrintInCapital(person.FirstName); PrintInCapital(person.MiddleName); PrintInCapital(person.LastName); } } public class Person { public string FirstName { get; set; } public string MiddleName { get; set; } public string LastName { get; set; } } public static void PrintInCapital(string s) { Console.WriteLine(s.ToUpper()); } Potential NullRefenceException
  • 34. Nullable reference types Allow developers to express whether a variable, parameter or result of a reference type is intended to be null or not. Provide warnings when such variables, parameters and results are not used according to that intent. 35 public class Person { public string FirstName { get; set; } public string? MiddleName { get; set; } public string LastName { get; set; } } var valid=new Person{FirstName = "Bart", MiddleName = null, LastName = "Simpson"}; var invalid=new Person{FirstName = "Madone", MiddleName = null, LastName = null}; PrintInCapital(person.MiddleName);
  • 35. Span<T> and Memory<T> How many allocations are made? Allocations put pressure on the GC and effects your application performance 36 string input = "Tamir,Dresher"; int commaPos = input.IndexOf(','); int first = int.Parse(input.Substring(0, commaPos)); int second = int.Parse(input.Substring(commaPos + 1)); String allocation String allocation
  • 36. Span<T> and Memory<T> Span<T> is a safe and Performant wrapper over a contiguous regions of arbitrary memory. Can only live on the stack Memeory<T> is like Span<T> but can live on the heap 37 string input = "Tamir,Dresher"; ReadOnlySpan<char> inputSpan = input.AsSpan(); int commaPos = input.IndexOf(','); int first = int.Parse(inputSpan.Slice(0, commaPos)); int second = int.Parse(inputSpan.Slice(commaPos + 1)); Pointer Length
  • 37. Summary What’s new for Application Developers & DevOps Other Announcements ad Updated (Tools, Data, AI & ML) C# 7.2 & 8.0 Private protected Readonly structs and arguments Nullable reference types Span<T> 38 @tamir_dresher tamirdr@codevalue.net http://www.TamirDresher.com.

Editor's Notes

  1. 5 + 1