SlideShare a Scribd company logo
김명신 / 한국 마이크로소프트
Windows, Linux, Mac 신경 안 쓴다
.NET 2015와 C# 살짝 훔쳐보기
우리는 혁신이 필요하고 더 빠르게 개발할 수 있기를 바랍니다.
여러 장치에서 동작하는 앱을 개발하고 싶습니다.
오픈소스 전략이 플랫폼과 커뮤니티를 더욱 풍성하게 할겁니다.
하지만 기존의 응용 프로그램은 그대로 수행되어야 해요.
.NET의 지향점
.NET의 혁신 오픈 소스
.NET Core
ASP.NET 5
크로스 플랫폼
RyuJIT + SIMD
Garbage Collector
Runtime components Compilers
.NET Compiler Platform (Roslyn)
Languages innovation
.NET Framework 4.6
Fully-featured and integrated
.NET libraries and runtime for Windows
Modular and optimized
.NET libraries and runtimes
Base class libraries
NuGet packages
Libraries
.NET Framework 4.6
.NET SxS 배포, 대체 업데이트
.NET 4 .NET 4.5
.NET
4.5.1
.NET
4.5.2
.NET 4.6
.NET 2.0 .NET 3.0 .NET 3.5
2002 2003 2005 2006 2008 2010 2012 2013 2014 2015
.NET 1.0
.NET 1.1
.NET
Framework
4
.NET
Framework
4.5
.NET
Framework
4.5.1
.NET
Framework
4.5.2
.NET Framework 4.6
기능 라이브러리
개선점
런타임 도구
기능
WPF 투명 차일드 윈도우 지원
WPF 터치 동작에 대한 성능과 신뢰성 개선
멀티 터치 이벤트에 대하여 신뢰성 개선
UI 스레드가 바쁜 상황에서도 터치 동작이 원할 하도록 성능 개선
WPF 리스트에 대한 스크롤 가상화 개선
리스트상에 포함된 항목 조회의 신뢰성 향상
가상화 중에 레이아웃이 훼손되지 않도록 개선
WPF High DPI 지원 개선
다중 DPI 커서와 모니터 지원, 프레임워크 요소들에 대한 외곽 처리 개선
윈폼 High DPI 지원 개선
라이브러리
WCF 개선
기존 SSL 3.0, TLS 1.0 지원에 TLS 1.1, TLS 1.2 지원 추가
다수의 HTTP 연결을 통해 메시지 전송
ADO.NET 개선
SQL Server 2016에서 사용할 수 있는 Always Encrypted 기능 지원
Async
비동기 제어 흐름상에서 특정 데이터를 유지할 수 있는 기능 추가
Network 관련 타입 개선
System.Net.Sockets, System.Uri 개선
암호화 관련 라이브러리 개선
런타임
64비트 JIT 컴파일러 재작성(“RyuJIT”)
대용량의 64비트 클라우드 작업을 수행하기에 적합
64비트 CLR의 SIMD 지원
SSE2, AVX 등의 하드웨어를 지원
하드웨어 중립적인 코드 작성이 가능
가비지 수집기 개선
피닝(pinning)된 객체 최적화
Gen1에서 Gen2로의 프로모션을 메모리 효율적으로 수행하도록 개선
가비지 수집 금지 영역 지정
어셈블리 로더 성능 개선
도구
새로운 Blend
솔루션 탐색기, 팀 탐색기, 편집기 등의 VS 기술을 결합
Roslyn 기반의 새로운 언어 서비스
속도와 신뢰성 개선
코드 중심의 워크스페이스, WPF의 In-Place 편집
디버깅
Xaml UI 디버깅 도구, 디버거가 결합된 분석 도구
분석
타임라인 기반 분석 도구
Demo
참고자료
Announcing .NET Framework 4.6
http://blogs.msdn.com/b/dotnet/archive/2015/07/20/announcing-net-framework-4-6.aspx
.NET Framework의 새로운 기능
https://msdn.microsoft.com/library/ms171868.aspx#v46
NET Framework 4.6의 응용 프로그램 호환성
https://msdn.microsoft.com/library/dn833127.aspx
.NET Framework 4.6 list of changes
https://github.com/Microsoft/dotnet/blob/master/docs/releases/net46/dotnet46-changes.md
.NET Framework API diff
https://dotnet2015.blob.core.windows.net/changes/diff_net452_net46.html
.NET Framework Targeting Pack
http://www.microsoft.com/ko-kr/download/details.aspx?id=48136
Web installer(preferred)
http://www.microsoft.com/ko-kr/download/details.aspx?id=48130
Offline installer
http://www.microsoft.com/ko-kr/download/details.aspx?id=48137
Shared Core Technologies
핵심 기술
64비트 JIT
컴파일러
RyuJIT
새로운 패키지
매니저
nuget
.NET 컴파일러
플랫폼
Roslyn
RyuJit?
• .NET을 위한 차세대 64비트 JIT 컴파일러
• 코드 생성 속도 개선, 코드 품질 개선
• 고급 최적화 기능 포함(e.g. SIMD, …)
코드 품질
How fast generated code runs
코드 생성 속도
How fast JIT compiler generate app code
SIMD(Single Instruction Multiple Data)
• .NET에서 data parallelism을 사용할 수 있도록 함
• 게임, 수식 연산, 이미지 처리 등의 응용 프로그램의 성능을 개선
• nuget을 이용하여 .NET 라이브러리 형태로 이용 가능









Vector<int>.Count
var v1 = new Vector<int>(src1, i);
var v2 = new Vector<int>(src2, i);
var sum = v1 + v2;
sum.CopyTo(dest, i);
Demo
Scalar SIMD (SSE2)
http://nuget.org
Demo
https://github.com/dotnet/roslyn
Team
혁신을 이어갈 수 있는 깔끔한 아키텍쳐
Partners
소스 기반 도구나 확장 도구 개발
Developers
더욱 더 강력한 C# IDE 기능 제공
OSS
1,000,000s
1,000s
10s
Demo
C# 6
public class Customer
{
public string First { get; set; } = "Jane";
public string Last { get; set; } = "Doe";
}
Initializers for auto-properties(C# 6.0)
Getter-only auto-properties(C# 6.0)
public class Customer
{
public string First { get; } = "Jane";
public string Last { get; } = "Doe";
}
Expression bodies on method-like members(C# 6.0)
public Point Move(int dx, int dy) => new Point(x + dx, y + dy);
public static Complex operator +(Complex a, Complex b) => a.Add(b);
public void Print() => Console.WriteLine(First + " " + Last);
public string Name => First + " " + Last;
public Customer this[long id] => store.LookupCustomer(id);
Expression bodies on property-like function members(C# 6.0)
String interpolation(C# 6.0)
var s = $"{p.Name} is {p.Age} year{{s}} old";
var s = $"{p.Name} is {p.Age} year{(p.Age == 1 ? "" : "s")} old";
using static System.Console;
using static System.Math;
using static System.DayOfWeek;
class Program
{
static void Main()
{
WriteLine(Sqrt(3 * 3 + 4 * 4));
WriteLine(Friday - Monday);
}
}
using static(C# 6.0)
int? length = customers?.Length; // null if customers is null
Customer first = customers?[0]; // null if customers is null
int length = customers?.Length ?? 0; // 0 if customers is null
Null-conditional operators(C# 6.0)
nameof expressions(C# 6.0)
if (x == null) throw new ArgumentNullException(nameof(x));
WriteLine(nameof(person.Address.ZipCode)); // prints "ZipCode"
Exception filters(C# 6.0)
try { … }
catch (MyException e) when(myfilter(e)) {}
Index initializers(C# 6.0)
var numbers = new Dictionary<int, string>
{
[7] = "seven",
[9] = "nine",
[13] = "thirteen"
};
try { res = await Resource.OpenAsync(…); }
catch (ResourceException e)
{ await Resource.LogAsync(res, e); }
finally { if (res != null) await res.CloseAsync();}
await in catch and finally blocks(C# 6.0)
C# 7 preliminary
Pattern Matching
if (o is Point p && p.X == 5) { WriteLine(p.Y); }
if (o is Point{ X is 5, Y is var y }) { WriteLine(y); }
if (o is Point(5, var y)) { WriteLine(y); }
switch (o)
{
case string s:
WriteLine(s);
break;
case Point(int x, int y):
Console.WriteLine($"({x},{y})");
break;
case null:
Console.WriteLine("<null>");
break;
}
Tuple
public (int sum, int count) Tally(IEnumerable<int> values) { … }
var t = Tally(myValues);
Console.WriteLine($"Sum: {t.sum}, count: {t.count}");
public async Task<(int sum, int count)> TallyAsync(IEnumerable<int> values) { … }
var t = await TallyAsync(myValues);
Console.WriteLine($"Sum: {t.sum}, count: {t.count}");
public (int sum, int count) Tally(IEnumerable<int> values)
{
var s = 0; var c = 0;
foreach (var value in values) { s += value; c++; }
return (s, c);
}
nullable references
Dog? nullableDog = new Dog("Nullable");
nullableDog.Bark(); Compiler Error – nullable 참조로는 dereference 하지 못함
cannot dereference nullable reference(yet)
if (nullableDog != null)
{
// 컴파일러는 이 scope 내에서는 nullableDog가 null이 아님을 안다.
nullableDog.Bark(); // OK
}
else
{
// 컴파일러는 이 scope 내에서는 nullableDog가 null임을 안다.
nullableDog.Bark(); // Compiler Error – nullable 참조로는 dereference하지 못함
}
Non-nullable references
Dog! mandatoryDog = new Dog("Mandatory");
mandatoryDog.Bark(); // OK – null 일 수 없으므로 method 호출 가능
string name = mandatoryDog.Name; // OK – null 일수 없으므로 property 참조 가능
.NET Core 5
[Td 2015]windows, linux, mac 신경 안 쓴다. .net 2015와 더더 좋아지는 c# 살짝 훔쳐보기(김명신)
.NET Core 5
Modular and optimized
.NET libraries and runtimes
.NET Framework의 하위 집합
이식이 가능한 모듈화 개발
모듈 세분화, 의존관계 최소화
오픈소스로 진행
.NET Core runtime : CoreCLR
https://github.com/dotnet/coreclr
.NET Core libraries: CoreFX
https://github.com/dotnet/corefx
Demo
.NET Native
UWP 앱을 위해 클라우드에서 수행되는 차세대 클라우드 컴파일러
C#을 머신 코드로 컴파일
정적 링크
극도로 작아진 런타임을 사용하고, VC++의 Optimizer를 이용
MSIL bytecode Machine code
[Td 2015]windows, linux, mac 신경 안 쓴다. .net 2015와 더더 좋아지는 c# 살짝 훔쳐보기(김명신)
Demo
.NET의 지향점
.NET의 혁신 오픈 소스
.NET Core
ASP.NET 5
크로스 플랫폼
Mono.NET Core 크로스 플랫폼
모바일 개발과
.NET/Xamarin 파트너쉽
.NET
Xamarin
Unity
서비스와 웹 응용 프로그램 모바일 앱
Windows Linux Mac OS X
.NET Core
ASP.NET 5
64-bit JIT + SIMD
Garbage Collector
Runtime components Compilers
.NET Compiler Platform (Roslyn)
Languages innovation
.NET Framework 4.6 .NET Core 5
Fully-featured and integrated
.NET libraries and runtime for Windows
Modular and optimized
.NET libraries and runtimes
Base class libraries
NuGet packages
Libraries
• 리눅스 환경에서도 .NET 기반의 앱과 서비스를 수행
• 리눅스 환경에서 구동되는 .NET 기반의 앱을 Visual Studio를
이용하여 개발, 배포, 디버깅 수행
• OSX 사용자는 Visual Studio Code 등을 이용하여 Mac에서 .NET
code를 편집, 컴파일, 디버깅
• .NET Core 전체가 GitHub를 통해 오픈소스로 제공
개발자를 위한 이점
https://dotnet2015.blob.core.windows.net/binaries/PartsUnlimited-demo-app-darwin.tar.gz
https://dotnet2015.blob.core.windows.net/binaries/PartsUnlimited-demo-app-linux.tar.gz
http://code.visualstudio.com
http://aka.ms/vslovesdocker
Create Cross-Platform .NET Apps
https://github.com/Microsoft/PartsUnlimited
http://github.com/dotnet
참고자료
.NET의 지향점
.NET의 혁신 오픈 소스
.NET Core
ASP.NET 5
크로스 플랫폼
SSCLI (“Rotor”)
Mar 2002
WiX
Apr 2004
F#
May 2005
ASP.NET
Mar 2012
TypeScript
Oct 2012
Roslyn
Apr 2014
.NET Core
Nov 2014
Mono V1
Jun 2004
Mono
Started
~2002
.NET의 오픈 소스화
플랫폼
크로스 플랫폼 지원
오픈소스
RyuJIT, SIMD
Core-CLR
Runtime
components
Compilers
.NET Compiler Platform
(“Roslyn”)
Languages
.NET Core 5 Libraries
.NET Framework 4.6 Libraries
Libraries
.NET
Framework 4.6
.NET
Core 5
github.com/microsoft/dotnet
What is Microsoft open sourcing? (2015)
.NET API for Hadoop WebClient
.NET Compiler Platform ("Roslyn")
.NET Map Reduce API for Hadoop
.NET Micro Framework
ASP.NET MVC
ASP.NET Web API
ASP.NET Web Pages
ASP.NET SignalR
MVVM Light Toolkit
.NET Core 5
Orleans
MEF (Managed Extensibility Framework)
OWIN Authentication MiddlewareRx (Reactive Extensions)
Orchard CMS
Windows Azure .NET SDK
Thinktecture IdentityManager
WnsRecipe
Mimekit Xamarin.Auth
Xamarin.Mobile
Couchbase for .NET
Meet the people behind the .NET Foundation
http://www.dotnetfoundation.org/teamhttp://www.dotnetfoundation.org
@dotnetfdn
Mailkit
System.Drawing
ASP.NET 5
Salesforce Toolkits for .NET
NuGetKudu
Cecil
MSBuild
Practices Visibility
Governance
Mentorship
Support
Feedback
Media
Events
Sponsorship
Protection
Licenses
Copyrights
Trademarks
Patents
dotnetfoundation.org
dotnet.github.io
개방
커뮤니티
빠른 혁신
감사합니다.
• MSDN Forum http://aka.ms/msdnforum
• TechNet Forum http://aka.ms/technetforum
http://aka.ms/td2015_again
TechDays Korea 2015에서 놓치신 세션은
Microsoft 기술 동영상 커뮤니티 Channel 9에서
추후에 다시 보실 수 있습니다.

More Related Content

What's hot (20)

PDF
Modern PHP
Changwan Jun
 
PDF
소프트웨어 개선 그룹(Sig) 개발 원칙
Hong Hyo Sang
 
PDF
[TD 2015] windows server에서 만나보는 docker와 windows container(최한홍)
Sang Don Kim
 
PDF
Envoy 를 이용한 코드 배포 자동화
Juwon Kim
 
PPTX
이제 온라인이다! 브라우저 안으로 들어온 Visual studio!
SangHoon Han
 
PDF
Javascript everywhere - Node.js | Devon 2012
Daum DNA
 
PPTX
공성대전 C# 사용기
Myoung-gyu Gang
 
PPTX
xecon-phpfest2014composer
jhyeon1010
 
PPTX
bamboo 로 PHP 프로젝트 지속적인 배포
KwangSeob Jeong
 
PDF
Node.js 현재와 미래
JeongHun Byeon
 
PDF
ASP.NET Core 3.0과 Blazor를 활용한 새로운 WEB 개발(그리고 Try.NET)
SangHoon Han
 
PDF
Node.js 기본
Han Jung Hyun
 
PDF
Node.js 시작하기
Huey Park
 
PPTX
처음 시작하는 라라벨
KwangSeob Jeong
 
PDF
XECON2014 Laravel 프레임워크 소개
Jung soo Ahn
 
PDF
Python server-101
Huey Park
 
PDF
Custom Xcode Template (with VIPER)
Bongwon Lee
 
PDF
Ryan Dahl의 Node.js 소개 동영상 해설 by doortts
Suwon Chae
 
PPTX
The Future of .NET and C#
명신 김
 
PDF
[Td 2015]프로그래밍 언어의 f1머신 c++을 타고 windows 10 uwp 앱 개발의 세계로~(유영천)
Sang Don Kim
 
Modern PHP
Changwan Jun
 
소프트웨어 개선 그룹(Sig) 개발 원칙
Hong Hyo Sang
 
[TD 2015] windows server에서 만나보는 docker와 windows container(최한홍)
Sang Don Kim
 
Envoy 를 이용한 코드 배포 자동화
Juwon Kim
 
이제 온라인이다! 브라우저 안으로 들어온 Visual studio!
SangHoon Han
 
Javascript everywhere - Node.js | Devon 2012
Daum DNA
 
공성대전 C# 사용기
Myoung-gyu Gang
 
xecon-phpfest2014composer
jhyeon1010
 
bamboo 로 PHP 프로젝트 지속적인 배포
KwangSeob Jeong
 
Node.js 현재와 미래
JeongHun Byeon
 
ASP.NET Core 3.0과 Blazor를 활용한 새로운 WEB 개발(그리고 Try.NET)
SangHoon Han
 
Node.js 기본
Han Jung Hyun
 
Node.js 시작하기
Huey Park
 
처음 시작하는 라라벨
KwangSeob Jeong
 
XECON2014 Laravel 프레임워크 소개
Jung soo Ahn
 
Python server-101
Huey Park
 
Custom Xcode Template (with VIPER)
Bongwon Lee
 
Ryan Dahl의 Node.js 소개 동영상 해설 by doortts
Suwon Chae
 
The Future of .NET and C#
명신 김
 
[Td 2015]프로그래밍 언어의 f1머신 c++을 타고 windows 10 uwp 앱 개발의 세계로~(유영천)
Sang Don Kim
 

Viewers also liked (20)

PDF
[Td 2015]각이 다른 mvc6! 그 여섯 번째 이야기!(최지훈)
Sang Don Kim
 
PDF
병렬 프로그래밍
준혁 이
 
PPTX
.Net Core 1.0 vs .NET Framework
Wyn B. Van Devanter
 
PDF
20150728 100분만에 배우는 windows 10 앱 개발
영욱 김
 
PDF
[Td 2015]틱틱대도 써야 하는 windows 10 앱 개발, c# tips &amp; tricks(송기수)
Sang Don Kim
 
PPTX
What's new in .NET Framework v4.5
DSK Chakravarthy
 
PDF
[C++ Korea] Effective Modern C++ Study item14 16 +신촌
Seok-joon Yun
 
PPTX
Svn에서 git으로 이주하기
Seunghwa Song
 
PPTX
Lie Group Formulation for Robot Mechanics
Terry Taewoong Um
 
PDF
Lie Group Formulation for Robot Mechanics
Terry Taewoong Um
 
PPTX
병렬 프로그래밍 패러다임
codenavy
 
PDF
덤프 파일을 통한 사후 디버깅 실용 테크닉 NDC2012
Esun Kim
 
PPTX
이기종 멀티코어 기반의 Open cv 응용 사례 및 효율적인 어플리케이션 디자인
Seunghwa Song
 
PDF
병렬프로그래밍과 Cuda
Seok-joon Yun
 
PPTX
OpenCV 에서 OpenCL 살짝 써보기
Seunghwa Song
 
PDF
[Td 2015]녹슨 c++ 코드에 모던 c++로 기름칠하기(옥찬호)
Sang Don Kim
 
PDF
Boost 라이브리와 C++11
OnGameServer
 
PDF
코드 생성을 사용해 개발 속도 높이기 NDC2011
Esun Kim
 
PDF
자동화된 소스 분석, 처리, 검증을 통한 소스의 불필요한 #if - #endif 제거하기 NDC2012
Esun Kim
 
PDF
[Td 2015]디버깅, 어디까지 해봤니 당신이 아마도 몰랐을 디버깅 꿀팁 공개(김희준)
Sang Don Kim
 
[Td 2015]각이 다른 mvc6! 그 여섯 번째 이야기!(최지훈)
Sang Don Kim
 
병렬 프로그래밍
준혁 이
 
.Net Core 1.0 vs .NET Framework
Wyn B. Van Devanter
 
20150728 100분만에 배우는 windows 10 앱 개발
영욱 김
 
[Td 2015]틱틱대도 써야 하는 windows 10 앱 개발, c# tips &amp; tricks(송기수)
Sang Don Kim
 
What's new in .NET Framework v4.5
DSK Chakravarthy
 
[C++ Korea] Effective Modern C++ Study item14 16 +신촌
Seok-joon Yun
 
Svn에서 git으로 이주하기
Seunghwa Song
 
Lie Group Formulation for Robot Mechanics
Terry Taewoong Um
 
Lie Group Formulation for Robot Mechanics
Terry Taewoong Um
 
병렬 프로그래밍 패러다임
codenavy
 
덤프 파일을 통한 사후 디버깅 실용 테크닉 NDC2012
Esun Kim
 
이기종 멀티코어 기반의 Open cv 응용 사례 및 효율적인 어플리케이션 디자인
Seunghwa Song
 
병렬프로그래밍과 Cuda
Seok-joon Yun
 
OpenCV 에서 OpenCL 살짝 써보기
Seunghwa Song
 
[Td 2015]녹슨 c++ 코드에 모던 c++로 기름칠하기(옥찬호)
Sang Don Kim
 
Boost 라이브리와 C++11
OnGameServer
 
코드 생성을 사용해 개발 속도 높이기 NDC2011
Esun Kim
 
자동화된 소스 분석, 처리, 검증을 통한 소스의 불필요한 #if - #endif 제거하기 NDC2012
Esun Kim
 
[Td 2015]디버깅, 어디까지 해봤니 당신이 아마도 몰랐을 디버깅 꿀팁 공개(김희준)
Sang Don Kim
 
Ad

Similar to [Td 2015]windows, linux, mac 신경 안 쓴다. .net 2015와 더더 좋아지는 c# 살짝 훔쳐보기(김명신) (20)

PDF
//BUILD/ Seoul - .NET의 현재와 미래. 그 새로운 시작
Taeyoung Kim
 
PDF
C# / .NET Framework로 미래 밥그릇을 챙겨보자 (Basic)
Dong Chan Shin
 
PDF
[Td 2015]70분에 보여준다. 웹표준을 지원하는 edge 브라우저부터 웹 앱 개발까지(김영욱)
Sang Don Kim
 
PDF
[NDC 2016] 유니티, iOS에서 LINQ 사용하기
Daehee Kim
 
PPTX
Tech-days 미니 토요세미나 - 3회 C#편 PPT 자료
SeongTae Jeong
 
PDF
김재석, C++ 게임 개발자를 위한 c# 활용 기법, 월간 마이크로소프트웨어 창간 28주년 기념 C++ 개발자를 위한 게임 프로그래밍 실전...
devCAT Studio, NEXON
 
PPTX
프로그래밍 언어의 F1머신 C++을 타고 Windows 10 UWP 앱 개발의 세계로~
YEONG-CHEON YOU
 
PPTX
C# 개요 및 소개 [ 유니티 및 C# 스터디 / 2024-04-19 ]
leusin2
 
PPTX
크로스 플랫폼을 품은 오픈 소스 프레임워크 .NET Core
명신 김
 
DOCX
C#강좌
e12g
 
PPT
Ai C#세미나
Astin Choi
 
PPTX
Hoons 닷넷 정기세미나
병걸 윤
 
PPTX
자바_웹_개발자를_위한_c#_핵심_기능
Dexter Jung
 
PPTX
개발 방식을 바꾸는 15가지 기술
중선 곽
 
PPTX
.NET Conf 2019 Korea - 닷넷 17년의 변화 정리 및 닷넷 코어 3.0
SeongTae Jeong
 
PPTX
About Visual C++ 10
흥배 최
 
KEY
[H3 2012] 꽃보다 Scala
KTH, 케이티하이텔
 
PPTX
Umc.Core Frameworks
준일 엄
 
PDF
클로져 소개 강의 (한국정보통신산업노동조합)
Sang-Kyu Park
 
PDF
프로그래밍 방식의 변천 과정
중선 곽
 
//BUILD/ Seoul - .NET의 현재와 미래. 그 새로운 시작
Taeyoung Kim
 
C# / .NET Framework로 미래 밥그릇을 챙겨보자 (Basic)
Dong Chan Shin
 
[Td 2015]70분에 보여준다. 웹표준을 지원하는 edge 브라우저부터 웹 앱 개발까지(김영욱)
Sang Don Kim
 
[NDC 2016] 유니티, iOS에서 LINQ 사용하기
Daehee Kim
 
Tech-days 미니 토요세미나 - 3회 C#편 PPT 자료
SeongTae Jeong
 
김재석, C++ 게임 개발자를 위한 c# 활용 기법, 월간 마이크로소프트웨어 창간 28주년 기념 C++ 개발자를 위한 게임 프로그래밍 실전...
devCAT Studio, NEXON
 
프로그래밍 언어의 F1머신 C++을 타고 Windows 10 UWP 앱 개발의 세계로~
YEONG-CHEON YOU
 
C# 개요 및 소개 [ 유니티 및 C# 스터디 / 2024-04-19 ]
leusin2
 
크로스 플랫폼을 품은 오픈 소스 프레임워크 .NET Core
명신 김
 
C#강좌
e12g
 
Ai C#세미나
Astin Choi
 
Hoons 닷넷 정기세미나
병걸 윤
 
자바_웹_개발자를_위한_c#_핵심_기능
Dexter Jung
 
개발 방식을 바꾸는 15가지 기술
중선 곽
 
.NET Conf 2019 Korea - 닷넷 17년의 변화 정리 및 닷넷 코어 3.0
SeongTae Jeong
 
About Visual C++ 10
흥배 최
 
[H3 2012] 꽃보다 Scala
KTH, 케이티하이텔
 
Umc.Core Frameworks
준일 엄
 
클로져 소개 강의 (한국정보통신산업노동조합)
Sang-Kyu Park
 
프로그래밍 방식의 변천 과정
중선 곽
 
Ad

More from Sang Don Kim (20)

PDF
[Td 2015] 국내에서 처음으로 선보이는 microsoft 차세대 서버 운영 체제 windows server 2016
Sang Don Kim
 
PDF
[TD 2015] Microsoft Azure IaaS v2(최정현)
Sang Don Kim
 
PDF
[TD2015] 이 시대에 소규모 게임 개발팀이 마소와 함께 살아가는 방법(송용성)
Sang Don Kim
 
PDF
[Td 2015]windows 10 엔터프라이즈 시나리오 part II 보안 및 관리(권순만)
Sang Don Kim
 
PDF
[Td 2015]windows 10 엔터프라이즈 시나리오 part I 배포 및 이미징(박성기)
Sang Don Kim
 
PDF
[Td 2015]함께하면 더 좋은 windows 10과 인텔 스카이레이크, 아키텍쳐와 인텔 그래픽스 최적화 살펴보기(하태동)
Sang Don Kim
 
PDF
[Td 2015]치즈케이크 팩토리는 알겠는데, 데이터 팩토리는 뭔가요(한기환)
Sang Don Kim
 
PDF
[Td 2015]조막만한 화면에서 대박만한 화면까지. 고생 끝 적응(adaptive ui) 시작(권영철)
Sang Don Kim
 
PDF
[Td 2015]알아두면 핵 이득! vc++로 안드로이드 개발하기(김성엽)
Sang Don Kim
 
PDF
[Td 2015]박애주의 office 365, 멀티플랫폼과 사랑에 빠지다(최한홍)
Sang Don Kim
 
PDF
[Td 2015]맨땅에 헤딩하고 터득한 스토어 공략법(돈벌기)(육주용)
Sang Don Kim
 
PDF
[Td 2015]라즈베리파이에 windows 10 io t core 맛있게 발라 먹기(유정현)
Sang Don Kim
 
PDF
[Td 2015]너에게만 나는 반응해 반응형 응용프로그램(이규원)
Sang Don Kim
 
PDF
[Td 2015]구름 위로 올려 어느 곳에서든 연결되는 서비스 azure 앱 서비스(이종인)
Sang Don Kim
 
PDF
[Td 2015]개발하기 바쁜데 푸시서버와 메시지큐는 있는거 쓸래요(김영재)
Sang Don Kim
 
PDF
[Td 2015]python을 azure에서 사용하는법(배권한)
Sang Don Kim
 
PDF
[Td 2015]microsoft 개발자들을 위한 달콤한 hadoop, hd insight(최종욱)
Sang Don Kim
 
PDF
[Td 2015]general session 세상을 품은 플랫폼과 그 가능성에 대하여(기술에반젤리스트)
Sang Don Kim
 
PDF
[Td 2015]java script에게 형(type)이 생겼어요. typescript(박용준)
Sang Don Kim
 
PDF
[Td 2015] what is new in visual c++ 2015 and future directions(ulzii luvsanba...
Sang Don Kim
 
[Td 2015] 국내에서 처음으로 선보이는 microsoft 차세대 서버 운영 체제 windows server 2016
Sang Don Kim
 
[TD 2015] Microsoft Azure IaaS v2(최정현)
Sang Don Kim
 
[TD2015] 이 시대에 소규모 게임 개발팀이 마소와 함께 살아가는 방법(송용성)
Sang Don Kim
 
[Td 2015]windows 10 엔터프라이즈 시나리오 part II 보안 및 관리(권순만)
Sang Don Kim
 
[Td 2015]windows 10 엔터프라이즈 시나리오 part I 배포 및 이미징(박성기)
Sang Don Kim
 
[Td 2015]함께하면 더 좋은 windows 10과 인텔 스카이레이크, 아키텍쳐와 인텔 그래픽스 최적화 살펴보기(하태동)
Sang Don Kim
 
[Td 2015]치즈케이크 팩토리는 알겠는데, 데이터 팩토리는 뭔가요(한기환)
Sang Don Kim
 
[Td 2015]조막만한 화면에서 대박만한 화면까지. 고생 끝 적응(adaptive ui) 시작(권영철)
Sang Don Kim
 
[Td 2015]알아두면 핵 이득! vc++로 안드로이드 개발하기(김성엽)
Sang Don Kim
 
[Td 2015]박애주의 office 365, 멀티플랫폼과 사랑에 빠지다(최한홍)
Sang Don Kim
 
[Td 2015]맨땅에 헤딩하고 터득한 스토어 공략법(돈벌기)(육주용)
Sang Don Kim
 
[Td 2015]라즈베리파이에 windows 10 io t core 맛있게 발라 먹기(유정현)
Sang Don Kim
 
[Td 2015]너에게만 나는 반응해 반응형 응용프로그램(이규원)
Sang Don Kim
 
[Td 2015]구름 위로 올려 어느 곳에서든 연결되는 서비스 azure 앱 서비스(이종인)
Sang Don Kim
 
[Td 2015]개발하기 바쁜데 푸시서버와 메시지큐는 있는거 쓸래요(김영재)
Sang Don Kim
 
[Td 2015]python을 azure에서 사용하는법(배권한)
Sang Don Kim
 
[Td 2015]microsoft 개발자들을 위한 달콤한 hadoop, hd insight(최종욱)
Sang Don Kim
 
[Td 2015]general session 세상을 품은 플랫폼과 그 가능성에 대하여(기술에반젤리스트)
Sang Don Kim
 
[Td 2015]java script에게 형(type)이 생겼어요. typescript(박용준)
Sang Don Kim
 
[Td 2015] what is new in visual c++ 2015 and future directions(ulzii luvsanba...
Sang Don Kim
 

[Td 2015]windows, linux, mac 신경 안 쓴다. .net 2015와 더더 좋아지는 c# 살짝 훔쳐보기(김명신)

  • 1. 김명신 / 한국 마이크로소프트 Windows, Linux, Mac 신경 안 쓴다 .NET 2015와 C# 살짝 훔쳐보기
  • 2. 우리는 혁신이 필요하고 더 빠르게 개발할 수 있기를 바랍니다. 여러 장치에서 동작하는 앱을 개발하고 싶습니다. 오픈소스 전략이 플랫폼과 커뮤니티를 더욱 풍성하게 할겁니다. 하지만 기존의 응용 프로그램은 그대로 수행되어야 해요.
  • 3. .NET의 지향점 .NET의 혁신 오픈 소스 .NET Core ASP.NET 5 크로스 플랫폼
  • 4. RyuJIT + SIMD Garbage Collector Runtime components Compilers .NET Compiler Platform (Roslyn) Languages innovation .NET Framework 4.6 Fully-featured and integrated .NET libraries and runtime for Windows Modular and optimized .NET libraries and runtimes Base class libraries NuGet packages Libraries
  • 6. .NET SxS 배포, 대체 업데이트 .NET 4 .NET 4.5 .NET 4.5.1 .NET 4.5.2 .NET 4.6 .NET 2.0 .NET 3.0 .NET 3.5 2002 2003 2005 2006 2008 2010 2012 2013 2014 2015 .NET 1.0 .NET 1.1
  • 9. 기능 WPF 투명 차일드 윈도우 지원 WPF 터치 동작에 대한 성능과 신뢰성 개선 멀티 터치 이벤트에 대하여 신뢰성 개선 UI 스레드가 바쁜 상황에서도 터치 동작이 원할 하도록 성능 개선 WPF 리스트에 대한 스크롤 가상화 개선 리스트상에 포함된 항목 조회의 신뢰성 향상 가상화 중에 레이아웃이 훼손되지 않도록 개선 WPF High DPI 지원 개선 다중 DPI 커서와 모니터 지원, 프레임워크 요소들에 대한 외곽 처리 개선 윈폼 High DPI 지원 개선
  • 10. 라이브러리 WCF 개선 기존 SSL 3.0, TLS 1.0 지원에 TLS 1.1, TLS 1.2 지원 추가 다수의 HTTP 연결을 통해 메시지 전송 ADO.NET 개선 SQL Server 2016에서 사용할 수 있는 Always Encrypted 기능 지원 Async 비동기 제어 흐름상에서 특정 데이터를 유지할 수 있는 기능 추가 Network 관련 타입 개선 System.Net.Sockets, System.Uri 개선 암호화 관련 라이브러리 개선
  • 11. 런타임 64비트 JIT 컴파일러 재작성(“RyuJIT”) 대용량의 64비트 클라우드 작업을 수행하기에 적합 64비트 CLR의 SIMD 지원 SSE2, AVX 등의 하드웨어를 지원 하드웨어 중립적인 코드 작성이 가능 가비지 수집기 개선 피닝(pinning)된 객체 최적화 Gen1에서 Gen2로의 프로모션을 메모리 효율적으로 수행하도록 개선 가비지 수집 금지 영역 지정 어셈블리 로더 성능 개선
  • 12. 도구 새로운 Blend 솔루션 탐색기, 팀 탐색기, 편집기 등의 VS 기술을 결합 Roslyn 기반의 새로운 언어 서비스 속도와 신뢰성 개선 코드 중심의 워크스페이스, WPF의 In-Place 편집 디버깅 Xaml UI 디버깅 도구, 디버거가 결합된 분석 도구 분석 타임라인 기반 분석 도구
  • 13. Demo
  • 14. 참고자료 Announcing .NET Framework 4.6 http://blogs.msdn.com/b/dotnet/archive/2015/07/20/announcing-net-framework-4-6.aspx .NET Framework의 새로운 기능 https://msdn.microsoft.com/library/ms171868.aspx#v46 NET Framework 4.6의 응용 프로그램 호환성 https://msdn.microsoft.com/library/dn833127.aspx .NET Framework 4.6 list of changes https://github.com/Microsoft/dotnet/blob/master/docs/releases/net46/dotnet46-changes.md .NET Framework API diff https://dotnet2015.blob.core.windows.net/changes/diff_net452_net46.html .NET Framework Targeting Pack http://www.microsoft.com/ko-kr/download/details.aspx?id=48136 Web installer(preferred) http://www.microsoft.com/ko-kr/download/details.aspx?id=48130 Offline installer http://www.microsoft.com/ko-kr/download/details.aspx?id=48137
  • 16. 핵심 기술 64비트 JIT 컴파일러 RyuJIT 새로운 패키지 매니저 nuget .NET 컴파일러 플랫폼 Roslyn
  • 17. RyuJit? • .NET을 위한 차세대 64비트 JIT 컴파일러 • 코드 생성 속도 개선, 코드 품질 개선 • 고급 최적화 기능 포함(e.g. SIMD, …) 코드 품질 How fast generated code runs 코드 생성 속도 How fast JIT compiler generate app code
  • 18. SIMD(Single Instruction Multiple Data) • .NET에서 data parallelism을 사용할 수 있도록 함 • 게임, 수식 연산, 이미지 처리 등의 응용 프로그램의 성능을 개선 • nuget을 이용하여 .NET 라이브러리 형태로 이용 가능
  • 20. Vector<int>.Count var v1 = new Vector<int>(src1, i); var v2 = new Vector<int>(src2, i); var sum = v1 + v2; sum.CopyTo(dest, i);
  • 21. Demo
  • 24. Demo
  • 26. Team 혁신을 이어갈 수 있는 깔끔한 아키텍쳐 Partners 소스 기반 도구나 확장 도구 개발 Developers 더욱 더 강력한 C# IDE 기능 제공 OSS 1,000,000s 1,000s 10s
  • 27. Demo
  • 28. C# 6
  • 29. public class Customer { public string First { get; set; } = "Jane"; public string Last { get; set; } = "Doe"; } Initializers for auto-properties(C# 6.0) Getter-only auto-properties(C# 6.0) public class Customer { public string First { get; } = "Jane"; public string Last { get; } = "Doe"; }
  • 30. Expression bodies on method-like members(C# 6.0) public Point Move(int dx, int dy) => new Point(x + dx, y + dy); public static Complex operator +(Complex a, Complex b) => a.Add(b); public void Print() => Console.WriteLine(First + " " + Last); public string Name => First + " " + Last; public Customer this[long id] => store.LookupCustomer(id); Expression bodies on property-like function members(C# 6.0) String interpolation(C# 6.0) var s = $"{p.Name} is {p.Age} year{{s}} old"; var s = $"{p.Name} is {p.Age} year{(p.Age == 1 ? "" : "s")} old";
  • 31. using static System.Console; using static System.Math; using static System.DayOfWeek; class Program { static void Main() { WriteLine(Sqrt(3 * 3 + 4 * 4)); WriteLine(Friday - Monday); } } using static(C# 6.0)
  • 32. int? length = customers?.Length; // null if customers is null Customer first = customers?[0]; // null if customers is null int length = customers?.Length ?? 0; // 0 if customers is null Null-conditional operators(C# 6.0) nameof expressions(C# 6.0) if (x == null) throw new ArgumentNullException(nameof(x)); WriteLine(nameof(person.Address.ZipCode)); // prints "ZipCode" Exception filters(C# 6.0) try { … } catch (MyException e) when(myfilter(e)) {}
  • 33. Index initializers(C# 6.0) var numbers = new Dictionary<int, string> { [7] = "seven", [9] = "nine", [13] = "thirteen" }; try { res = await Resource.OpenAsync(…); } catch (ResourceException e) { await Resource.LogAsync(res, e); } finally { if (res != null) await res.CloseAsync();} await in catch and finally blocks(C# 6.0)
  • 35. Pattern Matching if (o is Point p && p.X == 5) { WriteLine(p.Y); } if (o is Point{ X is 5, Y is var y }) { WriteLine(y); } if (o is Point(5, var y)) { WriteLine(y); } switch (o) { case string s: WriteLine(s); break; case Point(int x, int y): Console.WriteLine($"({x},{y})"); break; case null: Console.WriteLine("<null>"); break; }
  • 36. Tuple public (int sum, int count) Tally(IEnumerable<int> values) { … } var t = Tally(myValues); Console.WriteLine($"Sum: {t.sum}, count: {t.count}"); public async Task<(int sum, int count)> TallyAsync(IEnumerable<int> values) { … } var t = await TallyAsync(myValues); Console.WriteLine($"Sum: {t.sum}, count: {t.count}"); public (int sum, int count) Tally(IEnumerable<int> values) { var s = 0; var c = 0; foreach (var value in values) { s += value; c++; } return (s, c); }
  • 37. nullable references Dog? nullableDog = new Dog("Nullable"); nullableDog.Bark(); Compiler Error – nullable 참조로는 dereference 하지 못함 cannot dereference nullable reference(yet) if (nullableDog != null) { // 컴파일러는 이 scope 내에서는 nullableDog가 null이 아님을 안다. nullableDog.Bark(); // OK } else { // 컴파일러는 이 scope 내에서는 nullableDog가 null임을 안다. nullableDog.Bark(); // Compiler Error – nullable 참조로는 dereference하지 못함 }
  • 38. Non-nullable references Dog! mandatoryDog = new Dog("Mandatory"); mandatoryDog.Bark(); // OK – null 일 수 없으므로 method 호출 가능 string name = mandatoryDog.Name; // OK – null 일수 없으므로 property 참조 가능
  • 41. .NET Core 5 Modular and optimized .NET libraries and runtimes .NET Framework의 하위 집합 이식이 가능한 모듈화 개발 모듈 세분화, 의존관계 최소화 오픈소스로 진행 .NET Core runtime : CoreCLR https://github.com/dotnet/coreclr .NET Core libraries: CoreFX https://github.com/dotnet/corefx
  • 42. Demo
  • 44. UWP 앱을 위해 클라우드에서 수행되는 차세대 클라우드 컴파일러 C#을 머신 코드로 컴파일 정적 링크 극도로 작아진 런타임을 사용하고, VC++의 Optimizer를 이용 MSIL bytecode Machine code
  • 46. Demo
  • 47. .NET의 지향점 .NET의 혁신 오픈 소스 .NET Core ASP.NET 5 크로스 플랫폼
  • 48. Mono.NET Core 크로스 플랫폼 모바일 개발과 .NET/Xamarin 파트너쉽 .NET Xamarin Unity 서비스와 웹 응용 프로그램 모바일 앱 Windows Linux Mac OS X .NET Core ASP.NET 5
  • 49. 64-bit JIT + SIMD Garbage Collector Runtime components Compilers .NET Compiler Platform (Roslyn) Languages innovation .NET Framework 4.6 .NET Core 5 Fully-featured and integrated .NET libraries and runtime for Windows Modular and optimized .NET libraries and runtimes Base class libraries NuGet packages Libraries
  • 50. • 리눅스 환경에서도 .NET 기반의 앱과 서비스를 수행 • 리눅스 환경에서 구동되는 .NET 기반의 앱을 Visual Studio를 이용하여 개발, 배포, 디버깅 수행 • OSX 사용자는 Visual Studio Code 등을 이용하여 Mac에서 .NET code를 편집, 컴파일, 디버깅 • .NET Core 전체가 GitHub를 통해 오픈소스로 제공 개발자를 위한 이점
  • 52. .NET의 지향점 .NET의 혁신 오픈 소스 .NET Core ASP.NET 5 크로스 플랫폼
  • 53. SSCLI (“Rotor”) Mar 2002 WiX Apr 2004 F# May 2005 ASP.NET Mar 2012 TypeScript Oct 2012 Roslyn Apr 2014 .NET Core Nov 2014 Mono V1 Jun 2004 Mono Started ~2002
  • 54. .NET의 오픈 소스화 플랫폼 크로스 플랫폼 지원 오픈소스 RyuJIT, SIMD Core-CLR Runtime components Compilers .NET Compiler Platform (“Roslyn”) Languages .NET Core 5 Libraries .NET Framework 4.6 Libraries Libraries .NET Framework 4.6 .NET Core 5 github.com/microsoft/dotnet What is Microsoft open sourcing? (2015)
  • 55. .NET API for Hadoop WebClient .NET Compiler Platform ("Roslyn") .NET Map Reduce API for Hadoop .NET Micro Framework ASP.NET MVC ASP.NET Web API ASP.NET Web Pages ASP.NET SignalR MVVM Light Toolkit .NET Core 5 Orleans MEF (Managed Extensibility Framework) OWIN Authentication MiddlewareRx (Reactive Extensions) Orchard CMS Windows Azure .NET SDK Thinktecture IdentityManager WnsRecipe Mimekit Xamarin.Auth Xamarin.Mobile Couchbase for .NET Meet the people behind the .NET Foundation http://www.dotnetfoundation.org/teamhttp://www.dotnetfoundation.org @dotnetfdn Mailkit System.Drawing ASP.NET 5 Salesforce Toolkits for .NET NuGetKudu Cecil MSBuild
  • 57. 감사합니다. • MSDN Forum http://aka.ms/msdnforum • TechNet Forum http://aka.ms/technetforum
  • 58. http://aka.ms/td2015_again TechDays Korea 2015에서 놓치신 세션은 Microsoft 기술 동영상 커뮤니티 Channel 9에서 추후에 다시 보실 수 있습니다.