ASP.NET Core 2.1 có gì mới?
Bài viết này sẽ liệt kê những sự thay đổi đáng kể trong phiên bản ASP.NET Core 2.1 so với bản trước đó là 2.0
SignalR
SignalR đã được viết lại cho ASP.NET Core 2.1 bao gồm một số các cải tiến sau:
- Mô hình dễ mở rộng
- Một thư viện JavaScript mới không phụ thuộc Jquery.
- Một giao thức nhị phân nhỏ gọn base trên MessagePack.
- Hỗ trợ các giao thức tự xây dựng
- Một mô hình phản hồi streaming mới.
- Hỗ trợ client base trên WebSocket.
Xem thêm thông tin tại ASP.NET Core SignalR.
Thư viện Razor
ASP.NET Core 2.1 dễ dàng xây dựng và thêm các thành phần UI Razor vào trong một thư viện và chia sẻ ra nhiều project. Razor SDK mới cho phép xây dựng các file Razor trong một project class library có thể được đóng gói đưa vào Nuget. Các views và các pages trong các thư viện được tự động tìm thấy và có thể được ghi đè bởi ứng dụng. Bằng cách tích hợp việc biên dịch Razor khi build ứng dụng:
- Thời gian khởi động ứng dụng nhanh hơn đáng kể.
- Các cập nhật nhanh cho Razor view và các page ở thời điểm runtime vẫn có sẵn như một phần của quá trình phát triển.
Xem thêm thông tin tại Create reusable UI using the Razor Class Library project.
Thư viện Identity UI và scaffolding
ASP.NET Core 2.1 đưa ra ASP.NET Core Identity như là một Razor Class Library. Các ứng dụng có sử dụng Identity có thể apply tính năng Identity scaffolder để thêm các source code được chọn chứa trong Identity Razor Class Library (RCL). Bạn có thể muốn gen ra source code mà bạn có thể thay đổi và custom. Ví dụ, bạn có thể chỉ thị cho scaffolder gen ra code sử dụng để cho việc đăng ký thành viên. Gen ra code có thể được ưu tiên hơn so với code hiện tại trong Identity RCL.
Ứng dụng không bao gồm phần authentication có thể áp dụng Identity scaffolder cho việc thêm RCL Identity package. Bạn có tuỳ chọn để chọn Identity code để gen ra.
Xem thêm tại Scaffold Identity in ASP.NET Core projects.
HTTPS
Với việc tăng sự chú trọng vào bảo mật và riêng tư, việc cung cấp tính năng HTTPS cho ứng dụng web là rất quan trọng. HTTPS làm tăng sự bảo vệ cho web. Các trang web không sử dụng HTTPS được xem như là không bảo mật. Các trình duyệt (Chrome, Mozilla) đang bắt đầu đưa ra các tính năng mà bắt buộc phải xuất phát từ một môi trường bảo mật. GDPR yêu cầu sử dụng HTTPS để bảo vệ sự riêng tư của người dùng. Trong khi sử dụng HTTPS trong môi trường production là rất cần t hiết, việc sử dụng HTTPS trong môi trường phát triển có thể giúp ngăn ngừa các vấn đề trong việc deploy (ví dụ các đường link kém bảo mật). ASP.NET Core 2.1 bao gồm một số các cải tiến làm cho việc sử dụng HTTPS dễ dàng hơn trong môi trường phát triển và cấu hình HTTPS trong môi trường production. Chi tiết xem tại Enforce HTTPS
Mặc định
Để tạo một website bảo mật ngay từ lúc phát triển thì giờ đây HTTPS đã được enable mặc định. Bắt đầu từ 2.1, Kestrel lắng nghe từ cổng https://localhost:5001 khi một local certificate được dùng. Một certificate cho development được tạo ra:
- Một phần của .NET Core SDK chạy lần đầu, khi bạn sử dụng SDK lần đầu.
- Dùng tay sử dụng dev-certs tool.
Chạy dotnet dev-certs https --trust để sử dụng certificate.
Chuyển hướng và thực thi HTTPS
Các ứng dụng web thường sẽ cần lắng nghe cả HTTP và HTTPS nhưng sau đó sẽ redirect tất cả sang HTTPS. Trong 2.1, giới thiệu middleware thông minh sẽ tự redirect sang HTTPS theo cấu hình hoặc được gắn theo cổng của server.
Sử dụng HTTPS có thể thực thi HTTP Strict Transport Security Protocol (HSTS). HSTS chỉ thị cho các trình duyệt luôn truy cập site thông qua HTTPS. ASP.NET Core 2.1 thêm HSTS middleware hỗ trợ các tuỳ chọn cho max age, sub domain và HSTS sẽ load chúng từ trước.
Cấu hình trên môi trường production
Trong môi trường production, HTTPS phải được cấu hình tường minh. Trong 2.1 mặc định cấu hình cho HTTPS trên Kestrel được thêm vào. Các ứng dụng có thể được cấu hình cho việc sử dung:
- Nhiều endpoint bao gồm các URL: Kestrel web server implementation: Endpoint configuration.
- Certificate cho việc dùng HTTPS từ file hoặc ổ đĩa hoặc từ một store.
GDPR
ASP.NET Core đưa ra các API và các template giúp đáp ứng một số yêu cầu từ EU General Data Protection Regulation (GDPR). Xem thêm thông tin GDPR support in ASP.NET Core. Một ứng dụng mẫu sample app demo cách làm sao để sử dụng và kiểm tra hầu hết các điểm trong GDPR và các API đưuọc thêm vào mẫu trong ASP.NET Core 2.1.
Test tích hợp
Một package mới được giới thiệu sẽ đảm nhận việc tạo test và thực thi. Microsoft.AspNetCore.Mvc.Testing package sẽ quản lý các công việc sau:
- Sao chép các file liên quan (*. deps) từ ứng dụng được test sang thư mục bin folder của test project
- Đặt thư mục gốc cho ứng dụng được test cho các file tĩnh và các page/view được tìm thấy khi test được thực thi.
- Đưa ra WebApplicationFactory class để khởi động ứng dụng được test với TestServer.
Test sử dụng xUnit để kiểm tra trang Index load với một trạng thái thành công và với đúng header Content-Type:
public class BasicTests
: IClassFixture<WebApplicationFactory<RazorPagesProject.Startup>>
{
private readonly HttpClient _client;
public BasicTests(WebApplicationFactory<RazorPagesProject.Startup> factory)
{
_client = factory.CreateClient();
}
[Fact]
public async Task GetHomePage()
{
// Act
var response = await _client.GetAsync("/");
// Assert
response.EnsureSuccessStatusCode(); // Status Code 200-299
Assert.Equal("text/html; charset=utf-8",
response.Content.Headers.ContentType.ToString());
}
}
Xem thêm thông tin chi tiết tại Integration tests topic.
[ApiController], ActionResult
ASP.NET Core 2.1 thêm một quy tắc lập trình mới làm cho việc xây dựng một web API rõ ràng và dễ hiểu hơn. ActionResult<T> là một kiểu mới được thêm vào cho phép một ứng dụng trả về một kiểu response hoặc bất cứ kiểu kết quả nào (tương tự IactionResult), trong khi vẫn chỉ ra kiểu trả về. [ApiController] đã được thêm như một cách để tuỳ chọn quy tắc cho Web API.
Xem thêm tại Build Web APIs with ASP.NET Core.
IHttpClientFactory
ASP.NET Core 2.1 thêm vào một service IHttpClientFactory mới là giúp việc cấu hình và sử dụng instance của trong ứng dụng dễ dàng hơn. HttpClient đã khái quát một thành phần nắm uỷ quyền có thể liên kết với nhau cho việc gửi HTTP Request.
- Tạo đăng ý của các thể hiện của HttpClient theo tên client trực quan hơn.
- Triển khai một Polly handler cho phép các chính sách Polly sử dụng cho Retry, CircuitBreakers…
Xem thêm tại Initiate HTTP Requests.
Cấu hình Kestrel transport
Với việc phát hành ASP.NET Core 2.1, Kestrel transport mặc định không còn base trên Libuv nữa nhưng thay vào đó nó được base trên các socket được quản lý. Xem thêm tại Kestrel web server implementation: Transport configuration.
Generic host builder
Generic Host Builder (HostBuilder) đã được giới thiệu. Builder có thể sử dụng cho ứng dụng không xử lý HTTP Request (tin nhắn, các tác vụ nền…).
Xêm thêm .NET Generic Host.
Cập nhật SPA templates
The Single Page Application templates for Angular, React, and React with Redux are updated to use the standard project structures and build systems for each framework.
The Angular template is based on the Angular CLI, and the React templates are based on create-react-app. For more information, see Use the Single Page Application templates with ASP.NET Core.
Tìm kiếm Razor Pages cho Razor assets
Trong 2.1, Razor Pages tìm kiếm Razor assts (như là layout và các partial) trong các thư mục sau:
- Thư mục Pages hiện tại.
- /Pages/Shared/
- /Views/Shared/
Razor Pages trong Area
Razor Page đã hỗ trợ Area. Để nhìn thấy một area ví dụ, tạo một trang Razor Page trong web app với mode Indivisual User Account. Một Razor Web Pages với một user account sẽ bao gồm /Areas/Identity/Pages.
Migrate từ 2.0 lên 2.1
Hãy xem chi tiết cách Migrate from ASP.NET Core 2.0 to 2.1.
Thông tin bổ sung thêm
Để xem đầy đủ nhất mời bạn truy cập ASP.NET Core 2.1 Release Notes.
Trích nguồn từ: docs.microsoft.com
Bài viết liên quan
Có gì mới trong .NET 10?
.NET 10 tập trung vào hiệu suất, tối ưu hóa JIT, cải thiện JSON, Blazor, MAUI, EF Core, và nâng cấp C# 14 với nhiều tính năng giúp code linh hoạt hơn.
Đọc thêm
Ra mắt khóa học AWS for Beginners
Khóa học này là nền tảng để các bạn tiếp cận và làm quen với một trong 3 cloud provider hàng đầu thế giới là AWS, Azure và Google Cloud.
Đọc thêm
Ra mắt khóa học Design Patterns in a nutshell
Tác giả khóa học là anh Thành Lê, một Software Architect đang sinh sống và làm việc tại Mỹ. Khóa học không chỉ giúp các bạn hiểu Design Patterns mà còn giúp nâng cao kỹ năng giải quyêt vấn đề.
Đọc thêm
Ra mắt khóa học: Xây dựng ứng dụng mạng xã hội với Flutter
Nhằm đáp ứng nhu cầu học lập trình ứng dụng Mobile cho tất cả mọi người, TEDU ra mắt khóa học Lập trình ứng dụng mạng xã hội cơ bản sử dụng .NET Core và Flutter của tác giả Nguyễn Hoài Nam
Đọc thêm
TEDU ra mắt khóa học Xây dựng hệ thống với kiến trúc Micro-services
Ra mắt khóa học xây dựng hệ thống với kiến trúc Micro-services sử dụng .NET 6, RabbitMQ, Docker dành cho mọi người, có chính sách ưu đãi mua sớm cho 100 người đầu tiên.
Đọc thêmCác bước nâng cấp ứng dụng từ .NET 5.0 lên .NET 6.0
Hướng dẫn cách nâng cấp ứng dụng .NET 5 lên .NET 6.0 một cách dễ dàng.
Đọc thêm
Microsoft ra mắt .NET 6.0 ngày 9/11/2021, chúng ta cùng điểm qua xem có gì mới?
Đúng như lộ trình phát triển, Microsoft đã tung ra bản .NET 6.0 Long Term Support (LTS) được mong chờ từ lâu. Chúng ta hãy cùng xem có gì trong bản release mới nhất này nhé.
Đọc thêm
.NET Core 3.0 (Preview 2) có gì mới?
Gần đây Microsoft cho ra mắt .NET Core 3 Preview 2. Nó bao gồm các tính năng mới cho .NET Core 3.0 và C# 8, nó cũng bao gồm luôn các tính năng mới trong Preview 1 và Preview 2
Đọc thêm
Đầu xuân mở lộc TEDU lì xì 30% các khóa học
Năm Kỷ Hợi bắt đầu một niềm tin mới, TEDU xin gửi tới các bạn một quà tặng lì xì đầu năm trị giá 30% khi tham gia các khóa học tại TEDU.
Đọc thêm
Chào đón năm 2019, TEDU sales lớn nhất năm đến 60% và ra mắt khóa học mới
Nhân dịp mừng giáng sinh và đón chào năm mới 2019, TEDU xin gửi tới toàn thể các bạn đã đang và sẽ là thành viên của cộng đồng TEDU chương trình khuyến mãi lớn nhất trong năm lên đến 60% tất cả các khóa học.
Đọc thêm