Giới thiệu những tính năng mới trong .NET Core 3

Giới thiệu những tính năng mới trong .NET Core 3

.NET Core là một framework mở, open-source và đa nền tảng, support cho cả Windows, Linux và macOS của Microsoft. .NET Core 3.0 được thông báo chính thức vào ngày 7 tháng 5 năm 2019 và được ra mắt vào ngày 23 tháng 9 năm 2019, .NET Core 3.1 ra mắt sau đó chỉ mấy tháng vào ngày 3 tháng 12 năm 2019. Với lần release lần này, team .NET Core đã cải thiện rất nhiều về mặt performance và thêm nhiều tính năng mới so với .NET Core 1 và 2 ra mắt trước đó. Tuy nhiên trong phạm vi bài viết này chỉ giới thiệu một số tính năng nổi bật như việc hỗ trợ lập trình Windows Forms, WPF trong .NET Core, Blazor framework, những feature của C# 8. Ngoài ra, nếu muốn tìm hiểu đầy đủ thông tin về .NET Core 3.0 và .NET Core 3.1, hãy tham khảo link cung cấp ở cuối bài viết.

Nền tảng hỗ trợ

Những nền tảng sau sẽ được hỗ trợ:

  • Alpine: 3.9+
  • Debian: 9+
  • openSUSE: 42.3+
  • Fedora: 26+
  • Ubuntu: 16.04+
  • RHEL: 6+
  • SLES: 12+
  • macOS: 10.13+
  • Windows Client: 7, 8.1, 10 (1607+)
  • Windows Server: 2012 R2 SP1+

Download

Để bắt đầu sử dụng .NET Core, bạn có thể  download theo link sau:

https://dotnet.microsoft.com/download/dotnet-core

Nếu đã từng triển khai ứng dụng với .NET Core 1 hay 2, bạn cũng có thể cài version 3 mới để trải nghiệm những tính năng mà .NET Core trước chưa có.

Môi trường phát triển

.NET Core 3 sẽ được hỗ trợ trên Visual Studio 2019 version 16.3 và các bản mới hơn, Visual Studio cho  Mac 8.3, và Visual Studio Code.

Chuyển đổi từ .NET framework và .NET Core 2

Để chuyển đổi từ .NET framework sang .NET Core 3, hãy làm theo hướng dẫn link sau, trong đó cung cấp cho bạn nhiều thông tin giúp cho việc chuyển đổi, cách hiệu chỉnh config, đồng thời cung cấp nhiều tool hữu ích.

https://docs.microsoft.com/en-us/dotnet/core/porting/

Nếu bạn đã sử dụng .NET Core 1 hay 2 trước đây và giờ muốn update lên .NET Core 3, thì hãy lưu ý những tính năng được liệt kê ở list sau có thể đã không còn được hỗ trợ nữa:

https://docs.microsoft.com/en-us/dotnet/core/compatibility/2.2-3.0

Những tính năng mới trong .NET Core 3?

Windows forms and Windows Presentation Foundation (WPF):

Có thể đây là một trong những tính năng được nhiều người mong chờ nhất. .NET Core 3 lần này đã hỗ trợ việc xây dựng Windows desktop app với WPF and Windows Forms. Tuy nhiên, tính năng này vẫn chỉ mới có trên Windows.

Nếu muốn tạo ứng dụng desktop mới, bạn có thể dùng .NET Core CLI để tạo new app hoặc tạo project trong Visual Studio 2019. Nếu muốn, bạn có thể chuyển đổi từ ứng dụng .NET framework sang .NET Core mới để có thể tích hợp được những tính năng mà chỉ trong .NET Core 3 có như self-contained deployment, performance runtime tốt hơn đối với một số API (I/O và networking), và các hỗ trợ từ Windows 10 như MSIX packaging technology, nền tảng APIS thông qua NuGET, và UI updates với XAML Islands.

dotnet new wpf
dotnet new winforms

Trong Visual Studio 2019, bạn có thể tạo project wpf và windows forms với các template sau:

 

Blazor:

Như đã biết, Blazor là một framework trong ASP.NET Core giúp xây dụng client-side web app dựa trên C#/Razor page và html. Điểm tuyệt vời là với Blazor, bạn không cần phải cài đặt thêm add-on gì lên trình duyệt. Blazor có thể hoạt động dưới hai hình thức: 1 là chạy trên server, và 2 là chạy trên browser và dùng WebAssembly. Với NET Core 3, ta có thể tạo project Blazor với cả 2 hình thức này, chọn template ‘Blazor App’ như hình dưới. Như vậy là đủ để bạn tạo ra một client web app mà không cần sử dụng tới Javascript.

Compile/deploy:

.NET Core 3 cho phép bạn build ra file executable mặc định. Khi sử dụng command ‘dotnet build’ và ‘dotnet publish’, file executable sẽ được sinh ra. Chỉ cần double-click vào file là đã có thể run được app.

Single-file executable cũng là một tính năng tuyệt vời trong .NET Core 3. Toàn bộ chương trình sẽ được build và nén vào một file EXE duy nhất. Bất cứ ai có file này cũng có thể sử dụng và chạy trên máy của họ mà không cần cài đặt thêm gì cả. Để thực hiện chức năng trên, khi publish app, tham khảo hướng dẫn như hình sau: Chọn edit Configuration khi publish app, và click chọn ‘Produce single file’ trong Profile Settings.

Những điểm nổi bật khác:

  • High performance JSON APIs
  • Garbage collector dùng ít bộ nhớ hơn
  • .NET Standard 2.1
  • Cải tiến trên Linux
  • Cải tiến về bảo mật
  • Cập nhật SingalR code
  • Các điểm khác

C# 8 có gì mới?

C# 8 lần này giới thiệu tới nhiều tính năng mới giúp code clean và performance tốt hơn:

Ranges, indexes:

Index là một kiểu mới để khai báo một array index (bắt đầu từ 0). Tuy nhiên để tính Index từ điểm cuối thì có thể thêm prefix^. Hãy xem ví dụ dưới đây:

Index i1 = 0;
Index i2 = ^1;
int[] a = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
// a[i1] = 1, a[i2] = 9;

Có thể tạo ra Range từ Index:

var arr1 = [1..4];
var arr2 = [^2..^0];

Nullable reference types

Tính năng này cho phép tham chiếu có thể null. Khi biến có thể null, compiler sẽ áp dụng rule và yêu cầu bạn phải kiểm tra null trước khi sử dụng tham chiếu. Tuy nhiên mặc định thì sẽ không bật tính năng này. Với nullable reference type, bạn có thể viết tham chiếu cụ thể hơn, compiler cũng sẽ giúp bạn nhiều hơn trong việc phát hiện lỗi. Để sử dụng tính năng này, thì cần phải chỉnh lại config sau:

<PropertyGroup>
   <Nullable>enable</Nullable>
</PropertyGroup>
string? str = null;
Console.Writeline($”str[0]”); // you will get the warning because str may be null
string? str = null;
if (str != null) {
   Console.Writeline($”str[0]”); // the checking will remove the warning
}

Async streams:

Tính năng này giúp bạn có thể await trên một dãy/chuỗi các kết quả từ hàm async. Hãy thử xem ví dụ dưới đây. Hàm getQueriesAsync là một hàm async và trả ra một IAsyncEnumerable<T>. Hàm này sẽ trả về 1 dãy kết quả theo vòng lặp và sử dụng từ khóa yield.  Sau đó, để sử dụng, thì bạn có thể thêm từ khóa await trước vòng lặp.

await foreach(var query in getQueriesAsync(filter)
{
   Console.WriteLine(query);
}

Bạn có thể tìm hiểu thêm một số tính năng mới của C# 8:

  • Switch expressions
  • Recursive patterns
  • Default implementations
  • Cải tiến IEEE Floating-point
  • Các pattern khác

Bạn có thểm tham khảo full list tại đây:

https://docs.microsoft.com/en-us/dotnet/csharp/whats-new/csharp-8

Tương lai của .NET?

Ở trên chỉ nói về tổng quan những điểm mới của .NET Core 3 và C# 8, đồng thời giới thiệu những nét nổi bật nhất . Tuy nhiên để đi sâu về chi tiết và tất cả những điểm cải thiện của .NET Core 3 và C#8, ví dụ như chi tiết của từng tính năng, cách sử dụng chúng như thế nào thì cần dành thời gian để tìm hiểu thêm. Có thể tham khảo một vài link dưới đây.

.NET Core 3 hiện tại là bản stable và đầy đủ các tính năng nhất trong các thế hệ .NET Core, giúp cho developer và các business có thể ứng dụng phát triển sản phẩm một cách tốt nhất. Tuy nhiên với tương lai là .NET 5, Microsoft sẽ xây dựng một platform đồng nhất, mong muốn kế thừa và hợp nhất  cả .NET framework thường và .NET Core. .NET 5 có thể sẽ được ra mắt vào cuối năm 2020 và mong chờ đây là sẽ là nền tảng hợp nhất, giúp phát triển phần mềm cho cả Windows, Linux, macOS, iOS, Android, và các nền tảng khác. Với mong muốn kế thừa, nên bạn không cần phải quá lo lắng về việc các sản phẩm .NET Core 3 hiện tại sẽ không tương thích.

Tham khảo:

https://docs.microsoft.com/en-us/dotnet/core/whats-new/dotnet-core-3-0

https://docs.microsoft.com/en-us/aspnet/core/release-notes/aspnetcore-3.0?view=aspnetcore-3.1

https://docs.microsoft.com/en-us/dotnet/csharp/whats-new/csharp-8