SlideShare una empresa de Scribd logo
1 de 37
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.

Más contenido relacionado

La actualidad más candente

La actualidad más candente (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 a .Net december 2017 updates - Tamir Dresher

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 designPatrick 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 abstractionIntro C# Book
 
20.1 Java working with abstraction
20.1 Java working with abstraction20.1 Java working with abstraction
20.1 Java working with abstractionIntro C# Book
 
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 testingEric (Trung Dung) Nguyen
 
Demystifying Reactive Programming
Demystifying Reactive ProgrammingDemystifying Reactive Programming
Demystifying Reactive ProgrammingTom 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 2019Victor Rentea
 
Preprocessor directives
Preprocessor directivesPreprocessor directives
Preprocessor directivesVikash Dhal
 
1183 c-interview-questions-and-answers
1183 c-interview-questions-and-answers1183 c-interview-questions-and-answers
1183 c-interview-questions-and-answersAkash 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 googleRoel 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 nativeworkshopEmily 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 a .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 소개
 

Más de 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.pdfTamir 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.pptxTamir 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 6Tamir 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 seasonTamir 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 2019Tamir 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 2019Tamir 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 CoreTamir 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 RxTamir 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 dresherTamir 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 dresherTamir 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 DresherTamir 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 DresherTamir 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 DresherTamir 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 GroupTamir 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 DresherTamir 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 ConferenceTamir 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 DresherTamir Dresher
 

Más de 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
 

Último

%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrandmasabamasaba
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Steffen Staab
 
Generic or specific? Making sensible software design decisions
Generic or specific? Making sensible software design decisionsGeneric or specific? Making sensible software design decisions
Generic or specific? Making sensible software design decisionsBert Jan Schrijver
 
Introducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) SolutionIntroducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) SolutionOnePlan Solutions
 
%+27788225528 love spells in Vancouver Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Vancouver Psychic Readings, Attraction spells,Br...%+27788225528 love spells in Vancouver Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Vancouver Psychic Readings, Attraction spells,Br...masabamasaba
 
Define the academic and professional writing..pdf
Define the academic and professional writing..pdfDefine the academic and professional writing..pdf
Define the academic and professional writing..pdfPearlKirahMaeRagusta1
 
SHRMPro HRMS Software Solutions Presentation
SHRMPro HRMS Software Solutions PresentationSHRMPro HRMS Software Solutions Presentation
SHRMPro HRMS Software Solutions PresentationShrmpro
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...Health
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Modelsaagamshah0812
 
VTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnVTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnAmarnathKambale
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfkalichargn70th171
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsJhone kinadey
 
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...Shane Coughlan
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsArshad QA
 
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park %in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park masabamasaba
 
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrainmasabamasaba
 
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...masabamasaba
 
Exploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdfExploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdfproinshot.com
 
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
Direct Style Effect Systems -The Print[A] Example- A Comprehension AidDirect Style Effect Systems -The Print[A] Example- A Comprehension Aid
Direct Style Effect Systems - The Print[A] Example - A Comprehension AidPhilip Schwarz
 
%in Durban+277-882-255-28 abortion pills for sale in Durban
%in Durban+277-882-255-28 abortion pills for sale in Durban%in Durban+277-882-255-28 abortion pills for sale in Durban
%in Durban+277-882-255-28 abortion pills for sale in Durbanmasabamasaba
 

Último (20)

%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
 
Generic or specific? Making sensible software design decisions
Generic or specific? Making sensible software design decisionsGeneric or specific? Making sensible software design decisions
Generic or specific? Making sensible software design decisions
 
Introducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) SolutionIntroducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) Solution
 
%+27788225528 love spells in Vancouver Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Vancouver Psychic Readings, Attraction spells,Br...%+27788225528 love spells in Vancouver Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Vancouver Psychic Readings, Attraction spells,Br...
 
Define the academic and professional writing..pdf
Define the academic and professional writing..pdfDefine the academic and professional writing..pdf
Define the academic and professional writing..pdf
 
SHRMPro HRMS Software Solutions Presentation
SHRMPro HRMS Software Solutions PresentationSHRMPro HRMS Software Solutions Presentation
SHRMPro HRMS Software Solutions Presentation
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Models
 
VTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnVTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learn
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial Goals
 
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview Questions
 
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park %in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
 
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
 
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
 
Exploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdfExploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdf
 
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
Direct Style Effect Systems -The Print[A] Example- A Comprehension AidDirect Style Effect Systems -The Print[A] Example- A Comprehension Aid
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
 
%in Durban+277-882-255-28 abortion pills for sale in Durban
%in Durban+277-882-255-28 abortion pills for sale in Durban%in Durban+277-882-255-28 abortion pills for sale in Durban
%in Durban+277-882-255-28 abortion pills for sale in Durban
 

.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.

Notas del editor

  1. 5 + 1