ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Microsoft는 .NET Core 3.0 및 C # 8.0으로 새로운 시대를 열었습니다.
    건강과 과학/과학기술 2019. 9. 24. 07:14

    Microsoft는 .NET Core 3.0 및 C # 8.0으로 새로운 시대를 열었습니다.

    Microsoft는 ".NET Conf 2019"의 일부로 .NET Core 3.0 및 C # 8.0을 출시했습니다. 버전 16.3의 Visual Studio 2019도 릴리스되었습니다.

    2018 년 12 월에서 2019 년 9 월 사이에 9 개의 미리보기 버전과 릴리스 후보가 포함 된 긴 미리보기 단계가 끝나면 소프트웨어 개발자는 이제 최종 버전의 .NET Core 3.0을 무료로 다운로드 할 수 있습니다. 언어 버전 C # 8.0을 지원하는 버전 3.3의 C # 컴파일러가 포함되어 있습니다. 두 사용자 모두 프레임 워크와 컴파일러를 이전 버전으로 통합 할 수는 있었지만 Visual Studio 2019 버전 16.3을 권장합니다.

    C # 8.0은 모든 곳에서 완벽하게 지원되지는 않습니다
    C # 8.0의 가장 큰 변화는 인터페이스의 표준 구현 ( Java 8에서 이미 "기본 메소드"로 존재하는 해당 혁신 참조 ), 스위치 표현식 (간결한 스위치 분기로만 구성되는 방법), 색인 및 범위 함수입니다. 서브 세트 및 비동기 스트림 (foreach를 사용한 비동기 반복)을 처리하는 연산자.

    Visual Studio 2019 버전 16.3의 일부로 여전히 클래식 .NET Framework를 사용하는 소프트웨어 개발자는 새 컴파일러를 사용할 수 있습니다. 그러나 발표 된대로 클래식 .NET Framework 에서는 일부 새로운 언어 기능을 사용할 수 없으며 Microsoft는 클래식 .NET Framework에 필요한 .NET Standard 2.1을 제공하지 않습니다. Mono, Xamarin 및 Unity에서 전체 C # 8.0 언어 범위에 대한 작업이 진행 중입니다.
    CLR (공용 언어 런타임) 수준에서 JIT (Just-In-Time) 컴파일러의 이전에 선택적인 계층화 된 컴파일 (TC)은 이제 .NET Core 3.0 의 새로운 표준입니다 . JIT 컴파일러는 처음에는 최적의 결과보다는 기계 코드로의 빠른 변환에 중점을 둡니다. 나중에 만 번역이 자주 사용되는 프로그램 부분에 최적화됩니다.

    프로세서에는 ARM64에 대한 지원이 새로 도입되었지만 처음에는 Linux 운영 체제에서만 지원됩니다. 현재 Windows 사용자는 ARM64 프로세서에서 실행되는 .NET 핵심 응용 프로그램을 작성할 수 없습니다 .

    Windows 데스크톱 용 .NET Core
    .NET Core의 첫 두 버전이 웹 서버 및 콘솔 응용 프로그램과 Windows 10 용 Universal Apps 만 지원 한 후 개발자는 이제 Windows Presentation Foundation (WPF) 및 Windows Forms가있는 최초의 클래식 데스크톱 응용 프로그램 인 .NET Core 3.0을 사용할 수 있습니다. 만듭니다. 그러나 .NET 핵심 응용 프로그램은 .NET 핵심 Windows 데스크톱 런타임을 사용하여 플랫폼 독립성을 잃습니다.

    WPF 및 Windows Forms의 일부 기능은 .NET Core에서 아직 사용할 수 없습니다. 여기에는 XBAP (XAML 브라우저 응용 프로그램) 및 Windows Forms 용 그래픽 디자이너와 개발자가 자신의 응용 프로그램에 디자이너를 구축하는 데 사용할 수있는 프레임 워크 클래스가 포함됩니다. 그러나 Microsoft는 디자이너와 함께 일하면서 거의 20 년 전에 만든 디자이너 프로그램 코드를 현재 .NET Core로 마이그레이션하는 데 따른 어려움을 YouTube 비디오에서 논의하고 있습니다. WPF의 경우 .NET Core 사용자 지정 디자이너는 이미 Visual Studio 2019 버전 16.3에 포함되어 있습니다.

    Windows Forms의 경우 .NET Core 3.0에는 클래식 .NET Framework에없는 고해상도 디스플레이 장치를위한 새로운 인터페이스 사용자 지정 기능이 도입되었습니다 ( 참조Application.SetHighDpiMode() ). SetHighDpiMode()첫 번째 창을 열기 전에 만 작동합니다.

    .NET Core의 엔티티 프레임 워크
    기존 .NET Framework 응용 프로그램을 .NET Core로 마이그레이션하는 것과 관련하여 Microsoft는 기존 버전의 개체 관계형 매퍼 인 ADO.NET Entity Framework를 .NET Core로 마이그레이션했습니다. 새 버전 6.3는 .NET Core에서 실행하는 기능 이외의 새로운 기능을 제공하지 않습니다. 다시, 그래픽 디자이너가 없습니다.

    이 문제를 해결하기 위해 .NET Core에서 Windows Forms 및 Entity Framework 사용을 시작하려는 개발자는 초기에 클래식 .NET 프로젝트에서 해당 디자이너를 사용하여 결과를 .NET 코어 프로젝트에 연결할 수 있습니다.

    그러나 Microsoft는 새 프로젝트가 Entity Framework로 시작하지 말고 Entity Framework Core 로만 시작해야한다고 강조 합니다 . 버전 3.0에서 Microsoft는 LINQ to SQL 변환을 완전히 재 작업하여 통합 작업, 하위 쿼리 및보다 복잡한 "그룹 별"문을 이제 SQL로 변환 할 수 있습니다. 대안으로 처리를 위해 테이블에서 RAM으로 모든 데이터를 가져 오는 위험한 자동 클라이언트 평가가 폐지되었습니다.

    리버스 엔지니어링의 몇 가지 사소한 개선 사항과 오랫동안 개발되어 온 클라우드 데이터베이스 서비스 Cosmos DB의 데이터베이스 드라이버 외에도 버전 3.0에는 다른 변경 사항이 거의 없지만 여러 가지 주요 변경 사항 이 있으며 때로는 기존 프로그램 코드에 대한 광범위한 변경이 필요합니다. Microsoft는 향후 출시 될 새로운 기능을 위해 제품을 준비하려고합니다.

    새로운 유통 채널

    특히 재발견 된 데스크톱 환경과 관련하여 .NET Core는 새로운 배포 기능을 제공합니다. .NET 코어 응용 프로그램은 이제 이전과 같이 게시 명령이 아닌 컴파일 중에 .exe 파일을 직접 생성합니다 . 단일 파일 실행 파일에서 개발자 는 단순화 된 배포를 위해 응용 프로그램에 필요한 모든 DLL 및 기타 파일을 .exe 파일 로 묶습니다 . 그러나 원래 트리 흔들림을 발표 한대로 실행되지는 않습니다. EXE는 시작시 C : \ Users \ xy \ AppData \ Local \ Temp \ . Net \ 로 압축 해제 된 모든 파일의 압축 된 아카이브입니다 .
    모노에서 IL 링커를 선택적으로 사용하면 .NET 핵심 개발자는 적어도 필요하지 않은 배포 패키지에서 DLL을 제거 할 수 있습니다. 그러나 Reflection 또는 다른 동적 기술을 사용하는 경우 개발자는 링커가 필요한 것을 인식하도록 도와야합니다. "ReadyToRun 이미지"(R2R) 기능을 사용하여 새로운 CrossGen 도구는 해당 기계 코드를 중급 언어 코드와 병렬로 컴파일에 도입합니다. 응용 프로그램 파일이 커지지 만 더 빨리 시작됩니다. 그러면 트리 흔들림이 포함 된 완전한 Ahead-of-Time 컴파일러가 2020 년 11 월에 .NET 5.0이라는 .NET Core 후속 버전에 나타납니다 .

    다른 배포 옵션 인 .NET 핵심 개발자는 이제 Visual Studio 2019 버전 16.3 이상에서 .NET 핵심 데스크톱 또는 콘솔 응용 프로그램 용 Windows 응용 프로그램 패키징 프로젝트를 만들어 최신 MSIX 설치 패키지 형식을 사용할 수도 있습니다. MSIX를 사용하여 설치된 응용 프로그램은 응용 프로그램이 시작될 때 웹 페이지 또는 네트워크 드라이브에서 자체적으로 업데이트 될 수 있습니다. 이로 인해 MSIX는 손실 된 click-once 배포를 대신 할 수 있습니다.

    새로운 "주요 버전 롤 포워드"기능을 통해 응용 프로그램 개발자 또는 운영자는 이전 .NET 코어 응용 프로그램을 최신 .NET 코어 런타임 환경으로 시작하도록 제어 할 수 있습니다.

    개발자에게 .NET 핵심 소프트웨어 개발 키트 (SDK)는 하드 디스크 및 하위 폴더의 디렉토리에만 적용되는 로컬 도구도 제공합니다. Microsoft는 이것을 노드 패키지 관리자 (NPM)에서 복사했습니다.

    서버 사이드 블레이저
    웹 개발자를 위해 ASP.NET Core 3.0 에는 많이 기대되는 ASP.NET Blazor 의 첫 번째 버전이 포함되어 있어 Razor Components를 사용하여 .NET에서 단일 페이지 응용 프로그램 (SPA)을 작성할 수 있습니다. 그러나 ASP.NET Core 3.0 별칭 "Server Side Blazor"의 버전 "Blazor Server App"은 브라우저에서 WebAssembly를 기준으로 실행되지 않지만 이름에서 알 수 있듯이 웹 서버에서는 실행됩니다.

    사용자는 여전히 SPA를 경험할 수 있습니다. ASP.NET Core SignalR은 Websocket을 통해 웹 사이트와의 사용자 상호 작용을 서버로 보내고 서버의 변경 사항을 DOM (Document Object Model)으로 브라우저로 전송합니다. 그러나 연결된 각 브라우저에 대해 웹 서버에서 필요한 섀도 DOM은 확장 성을 제한하며 오프라인이 가능하지 않습니다. 이 모델은 사용자 수가 적은 웹 응용 프로그램에 적합하며 WebAssembly를 사용하여 브라우저에서 실행되지만 아직 발표 날짜가없는 클라이언트 측 Blazor로 쉽게 마이그레이션 할 수 있습니다.

    .NET Framework에서 더 이상 ASP.NET Core
    ASP.NET Core 3.0을 통해 Microsoft는 이제 버전 2.0에 대해 이미 위협을 받고있는 것을 구현 하고 있습니다 . 웹 프레임 워크는 더 이상 클래식 .NET 프레임 워크에서 실행되지 않고 .NET Core에서만 실행됩니다. Entity Framework Core의 경우에도 마찬가지입니다. ASP.NET Core 또는 Entity Framework Core의 기초로 클래식 .NET Framework를 사용한 모든 고객은 이제 .NET Core로 전환하거나 추가 개발에서 제외됩니다.




    결국 Microsoft는 Entity Framework Core 2.1을 포함한 ASP.NET Core 2.1에 대한 지원을 지원 정책에서 벗어나 .NET Framework로 확장 했다고 발표 했습니다 . 이는 버전 2.2가 아니라 버전 2.1을 참조한다는 것은 전자가 장기 지원 버전이고 여기서 Microsoft는 다른 버전에 대한 장기 지원 비용을 추가로 절약하려고하기 때문입니다.

    Google RPC 및 시스템 서비스
    더 이상 서버 측 WCF (Windows Communication Foundation)를 닷넷 코어 제공을 대체하지 않으려면 마이크로 소프트는 이외에 지금 제공하는 기존의 제 1 코어 버전 REST 기반 WebAPIs 또한 HTTP / 2 및 프로토콜 버퍼 위에 구축에 대한 지원을하기 때문에 구글 클라이언트 및 서버로서의 RPC .

    백그라운드 서비스를 생성하기 위해 .NET Core 3.0은 작업자 서비스 템플릿과 Windows 용 Microsoft.Extensions.Hosting.WindowsServices 및 Linux 패키지 용 Microsoft.Extensions.Hosting.Systemd 를 사용할 수 있습니다 .

    더 새로운 수업
    .NET Core 3.0은 .NET 표준 버전 2.1 을 구현 하는 최초의 .NET 변형입니다 . .NET 코어 3.0의 새로운 클래스 중 몇 가지 언어 기능에 대한 기본 클래스에 추가됩니다 (예를 들어 System.Index, System.Range, System.Span<T>, System.Memory<T>, System.ValueTask<T>)와 같은 동적 코드 생성과 같은 .NET의 초기에서 오래된 아줌마 반사 방출 과 데이터베이스 공급자의 추상화 DbProviderFactories 심지어 오래된 C #에서도 사용할 수있는 Visual Basic API.

    .NET 표준 외에도 .NET Core 3.0은 이제 COM 및 WinRT 구성 요소 (Windows에만 해당)와의 상호 운용성을 처리 하고 어셈블리에서 메타 데이터 만 MetadataLoadContext로드하고 ( )로드 된 어셈블리를 언로드합니다 ( AssemblyLoaderContextJSON 의 새 라이브러리). 직렬화 및 역 직렬화가 포함되어 있습니다 ( System.Text.Json ) 및 사용 등 웹 API를 사이에 ASP.NET 코어로 제공, 제임스 뉴튼 - 왕과 마이크로 소프트 후, JSON.NET의 저자는 지금까지 사용 하지 변환을 동의 할 수있었습니다 .

    이 클래스는 System.Net.Http.HttpClient이제 HTTP / 2를 지원합니다. TLS 1.3에 대한 지원은 .NET Core 3.0에서도 가능하지만 지금까지는 Linux에서만 가능합니다. 이전에는 Windows에서만 프로그래밍 할 수 있었던 직렬 인터페이스를 이제 Linux에서도 사용할 수 있습니다 . 수학 라이브러리에서 System.Math의 개발자는 다음과 같은 새로운 기능을 발견 할 것이다 BitIncrement(Double), BitDecrement(Double), MaxMagnitude(Double, Double), MinMagnitude(Double, Double), ILogB(Double), ScaleB(Double, Int32)와 CopySign(Double, Double).

    .NET Core 3.0에서 작지만 매우 유용한 혁신은 현재 .NET 버전 ( System.Runtime.InteropServices.RuntimeInformation.FrameworkDescription및 System.Environment.Version) 에 대한 정보를 제공하는 API가 이제 .NET Core에서 올바른 버전 번호 3.0을보고한다는 것입니다. .NET Core 1.x 및 2.x에서 호출자는 항상 4로 시작하고 클래식 .NET Framework를 기반으로하는 버전 번호를 받았습니다.



Designed by Tistory.