.Net Core là một nền tảng mã nguồn mở được Microsoft giới thiệu lần đầu tiên năm 2014 và trở thành một trong những nền tảng phổ biến nhất hiện nay. .Net Core có thể được dùng cho nhiều mục đích như thương mại, học thuật hay cá nhân. Nhiều công ty xem .NET Core như là nền tảng công nghệ quan trọng nhất trong phát triển các sản phẩm, một số còn triển khai các sản phẩm của họ trên GitHub để cung cấp hướng dẫn đến người dùng.
Một số đặc điểm .NET Core
- Đa nền (Cross-platform): Windows (cả Windows Server), macOS và Linux
- Nhất quán hay có cùng ứng xử với các kiến trúc xử lý khác nhau như x64, x86 và ARM
- Có thể sử dụng dòng lệnh
- Mềm dẻo: có thể gộp hay cài đặt trong ứng dụng. Có thể được dùng với Docker
- Tương thích với các nền tảng khác của Microsoft như Mono, .NET Framework hay Xamarin
- Open source theo tiêu chuẩn MIT và Apache 2
- Mặc dù là open source nhưng được hỗ trợ bởi Microsoft
.NET Framework và .NET Core
.NET Framework được giới thiệu năm 2000 và trở thành nền tảng chủ yếu trong việc phát triển sản phẩm .NET của Microsoft. Hai nền tảng .NET Core và .NET Framework có một số điểm khác biệt:
- .NET Core không hỗ trợ tất cả các mô hình .NET Framework. Cụ thể, .NET Core không hỗ trợ ASP.NET Web Forms và ASP.NET MVC nhưng nó hỗ trợ ASP.NET Core MVC. Bắt đầu từ .NET Core 3.0 cũng hỗ trợ Window Forms và WPF chỉ trên nền tảng Windows.
- .NET Core chứa một tập lớn các tập con của Thư viện lớp cơ sở .NET Framework (.NET Framework Base Class Libraly) nhưng có những yếu tố khác biệt như tên các assembly, kiểu,…
- .NET Framework chỉ hỗ trợ Windows và Windows Server trong khi đó .NET Core hỗ trợ thêm macOS và Linux.
- .NET Core là open source – điểm khác biệt cốt lõi với .NET Framework.
Ứng dụng Console với .NET Core trong Visual Studio
.NET Core hỗ trợ các ngôn ngữ chính của microsoft như C#, F# hay Visual Basic. Nó được tích hợp trong Visual Studio từ 2015 trở về sau. Bài viết này minh họa cách tạo ứng dụng Console đơn giản với .NET Core trong Visual Studio 2017 Community dùng ngôn ngữ C#.
- Mở Visual Studio 2017 Community, vào File > New > Project chọn Visual C# và Console App (.NET Core). Nhập tên ứng dụng trong Name và vị trí lưu tại Location:
- Nhấn OK sẽ xuất hiện lớp Program.cs như sau:
using System; namespace FirstConsoleAppCore { class Program { static void Main(string[] args) { Console.WriteLine("Hello World!"); } } }
- Thay đổi nội dung bên trong hàm Main như sau:
using System; namespace FirstConsoleAppCore { class Program { static void Main(string[] args) { Console.WriteLine("\nWhat is your name? "); var name = Console.ReadLine(); var date = DateTime.Now; Console.WriteLine($"\nHello, {name}, on {date:d} at {date:t}!"); Console.Write("\nPress any key to exit..."); Console.ReadKey(true); } } }
- Thực thi ứng dụng bằng cách nhấn F5 hay nhấn nút trên thanh công cụ
Kết quả
- Nhấn phím bất kỳ để đóng cửa sổ ouput.
Như vậy chúng ta đã hoàn thành việc tạo một ứng dụng Console với .NET Core. Bây giờ chúng ta sẽ debug ứng dụng này.
Debug ứng dụng Console với .NET Core trong Visual Studio
Debug và Release là hai cấu hình mặc định của Visual Studio
Để kiểm tra cách thực hiện của chương trình, có thể dùng chế độ Debug giúp kiểm soát và viết chương trình hiệu quả hơn. Một vài kỹ thuật được áp dụng trong chế độ Debug như sau.
Thiết lập điểm dừng (set a breakpoint)
- Chọn lệnh Console.WriteLine($”\nHello, {name}, on {date:d} at {date:t}!”) và thiết lập điểm dừng (breakpoint) bằng cách đặt dấu nháy trước lệnh và nhấn F9 ( hay chọn Debug > Toggle Breakpoint. Một chấm đỏ sẽ xuất hiện bên lề trái:
- Nhấn F5 để thực thi lệnh trong chế độ Debug, nhập thông tin sau dòng What is your name? và nhấn Enter. Chương trình sẽ ngừng thực thi khi đến điểm breakpoint và xuất hiện mũi tên màu vàng:
- Một cửa sổ Locals sẽ xuất hiện (nếu không xuất hiện thì vào Debug > Windows > Locals) sẽ xuất hiện các giá trị của các biến được định nghĩa trong phương thức đang thực thi:
- Một cửa sổ cũng rất quan trọng giúp ta tương tác với ứng dụng trong chế độ Debug là cửa sổ Immediate. Mở cửa sổ này bằng cách vào Debug > Windows > Immediate.
- Trong cửa sổ Immediate, nhập name = “Messi” và nhấn Enter, nhập date = DateTime.Parse(“02/07/2020 5:25 PM”) và nhấn Enter. Chúng ta thấy rằng giá trị các biến name và date được cập nhật lại trong cửa sổ Locals:
- Tiếp tục thực thi chương trình bằng cách nhấn nút Continue trên thanh công cụ (hay chọn Debug > Continue). Kết quả hiển thị trong cửa sổ console tương ứng với giá trị chúng ta nhập trong cửa sổ Immediate:
Nhấn phím bất kỳ để đóng ứng dụng và ngừng Debug. Nếu vẫn còn dấu tròn màu đỏ (break point) thì nhấn chuột trái vào ngay dấu tròn này và nó sẽ biến mất.
Thiết lập điểm dừng điều kiện (set a conditional breakpoint)
- Thiết lập một BreakPoint tại lệnh như trên. Nhấn chuột phải vào điểm màu đỏ và chọn Conditions
Một cửa sổ điều kiện sẽ xuất hiện
Thay dòng e.g. x== 5 bằng String.IsNullOrEmpty(name)
Chúng ta dùng phương thức IsNullOrEmpty để kiểm tra biến name và trả về true nếu biến name là null hay giá trị chuỗi rỗng. Nhấn Close đóng hộp thoại điều kiện.
- Nhấn F5 thực thi ứng dụng trong chế độ Debug. Nhấn Enter trong cửa sổ output khi dòng What is your name? xuất hiện, đều này ngụ ý biến name nhận giá trị rỗng. Chương trình ngừng thực thi khi đến điểm breakpoint.
- Mở cửa sổ Locals, để ý biến name nhận giá trị “” (String.Empty)
- Chúng ta có thể xác nhận giá trị của biến name là String.Empty bằng cách nhập lệnh ? name == String.Empty vào cửa sổ Immediate và nhấn Enter, kết quả:
- Nhấn Continue
Nhấn phím bất kỳ đóng cửa sổ output. Xóa Breakpoint.
Dạo quanh chương trình với công cụ Debug
Chúng ta có thể xem xét sự thực thi của từng dòng lệnh trong chương trình bằng công cụ Debug của Visual Studio. Có thể mở công cụ này bằng cách vào mục View > Toolbars > Debug, Thanh công cụ debug như hình sau:
- Step Into: thực hiện từng lệnh trong phương thức (cả phương thức khác được gọi)
- Step Over: giống Step Into, khác biệt chỉ xảy ra nếu lệnh hiện tại gọi một phương thức khác, Step Over sẽ vẫn xem lệnh này như một lệnh bình thường và chuyển qua lệnh kế tiếp, Step Into sẽ nhảy đến phương thức được gọi và đi qua tuần tự các lệnh trong phương thức này và sẽ trở lại phương thức ban đầu ngay khi kết thúc phương thức được gọi.
- Step Out: thực hiện tất cả các lệnh kế tiếp mà không dừng lại.
Công cụ debugger rất hữu ích trong quá trình phát hiện và xử lý lỗi. Việc thực thi công cụ này trong Visual 2017 (hay cao hơn) tương tự các phiên bản Visual Studio trước như Visual Studio 2012. Xem ví dụ minh học thực thi công cụ này để kiểm tra hoạt động của một vòng lặp trong Visual Studio trong bài https://ngocminhtran.com/lenh-lap-iteration-statements/
Xuất bản ứng dụng với .NET Core
Chúng ta đã viết chương trình, đã debug và chúng ta cũng có thể dễ dàng xuất bản ứng dụng trong .NET Core theo các bước sau đây.
- Đảm bảo chương trình trong chế độ Release bằng cách chọn Release thay cho Debug
- Kích chuột phải vào dự án FirstConsoleAppCore trong cửa sổ Solution Explorer và chọn Publish
- Chọn thư mục để xuất chứa ứng dụng (giả sử chứa tại Desktop) và nhấn nút Publish
Có một số tập tin:
- FirstConsoleAppCore.deps.json: là tập tin định nghĩa các components và thư viện .NET Core cần thiết để chạy ứng dụng. Là tập tin phụ thuộc vào thời gian chạy của ứng dụng (runtime dependencies file)
- FirstConsoleAppCore.dll: phiên bản triển khai phụ thuộc framework (the framework-dependent deployment version) của ứng dụng (xem chi tiết nó là gì tại https://docs.microsoft.com/en-us/dotnet/core/deploying/deploy-with-cli#framework-dependent-deployment
- FirstConsoleAppCore.exe: phiên bản thực thi phụ thuộc framework (the framework-dependent executable version) của ứng dụng (xem chi tiết nó là gì tại https://docs.microsoft.com/en-us/dotnet/core/deploying/deploy-with-cli#framework-dependent-deployment
- FirstConsoleAppCore.runtimeconfig.json: tập tin định nghĩa phiên bản .NET Core mà ứng dụng được xây dựng để thực thi. Là tập tin cấu hình thời gian chạy của ứng dụng (run-time configuration file)
Kết luận
Bài viết chỉ giới thiệu sơ lược về .NET Core – nền tảng hiện tại và tương lai của Microsoft. Tạo một ứng dụng Cosole, debug và xuất bản nó trên .NET Core có vẻ tương tự như trong .NET Framework (trong Visual Studio 2017 chúng ta chọn Console App (.NET Framework)) nhưng nếu tìm hiểu kỹ lưỡng sẽ là một thế giới khác biệt. Học hỏi và xây dựng ứng dụng (desktop, mobile, web,…) trên nền tảng .NET Core là xu thế tất yếu cho những .NET developer ngày nay.
Tháng Chín 11, 2020 at 2:52 sáng
bài viết hay. cảm ơn tác giả
ThíchThích