Học C# .NET core hay C# .NET framework?

Chỉ cần bước chân vào thế giới lập trình đủ lâu, bạn sẽ nhận ra rằng không một ngôn ngữ lập trình, công nghệ nào có thể đứng độc lập. Một ngôn ngữ, công nghệ nào đó cho dù cool đến đâu đi chăng nữa vẫn cần những vệ tinh support xung quanh nó, tạo nên một hệ sinh thái. Như vậy, để có thể tạm gọi là master một công nghệ nhất định, ngoài bản thân công nghệ đó ra, bạn cần phải hiểu rõ hệ sinh thái xung quanh nó.

Cụ thể với C#, cha đẻ của nó Microsoft xây dựng một hệ sinh thái rộng lớn gọi là .NET. Nếu bạn muốn trở thành một C# developer, bạn bắt buộc phải quen thuộc với .NET, không có .NET, C# sẽ trở thành một thứ phế phẩm không hơn không kém. Nhưng mình thấy lạ ở chỗ, nhiều developer sử dụng C#, .NET hàng ngày nhưng lại không hiểu được .NET là gì, hoặc không phân biệt được C# và .NET khác nhau ở đâu. Khá nguy hiểm.

Gần đây, thật ra cũng không gần lắm, khoảng 3 năm trở lại đây, .NET core đang dần trở nên phổ biến. Nó gần như trở thành châm ngôn mới của các C# developer, “cạnh tranh” trực tiếp với đàn anh .NET framework. Câu hỏi được đặt ra là liệu chúng ta nên học .NET core hay .NET framework? Hay trước tiên là 2 khái niệm này là gì? Khác nhau như thế nào?

Hệ sinh thái .NET
Để có thể hiểu về .NET core và .NET framework, trước tiên mình cần phải giới thiệu với bạn một chút về .NET ecosystem.


.NET ecosystem architecture
Cùng nhìn từ dưới lên trên, có rất nhiều thứ cần hiểu ở đây nhưng mình chỉ muốn nhấn mạnh đến phần Languages. Mình thấy rất nhiều bạn đánh đồng giữa C# và .NET, nghĩ rằng chúng là một. Thực tế không phải như vậy, ngoài C#, bạn hoàn toàn có thể dùng VB hay F# để làm việc trong hệ sinh thái .NET. Nghĩa là bạn hoàn toàn có thể dùng VB để viết Winforms app, ASP.NET web … tương tự như sử dụng C#.

Phía trên cùng là phần application, bạn có thể nhìn thấy 3 đại diện gồm có: .NET framework, .NET core và Xamarin.

Trong đó, .NET framework có tuổi đời lâu nhất, từ những năm 2000. Với .NET framework, bạn có thể build Windows form application app, ASP.NET MVC 5 app, WPF…, nói chung là tất cả mọi thứ liên quan đến .NET ecosystem trước thời .NET core (2016). Là phiên bản nguyên mẫu của .NET, .NET framework có một số điểm mà bạn cần lưu ý:

Chỉ có thể chạy trên Windows, một điểm trọng yếu của .NET trước kỷ nguyên core.
Mã nguồn đóng (mở một phần).
Có thể develop với C#, VB, F#.
Về .NET core, đây là một đứa con mới, một chiến lược mới của Microsoft dành cho .NET. .NET core tách biệt hoàn toàn so với .NET framework, sử dụng Common languague runtime của riêng nó. Một vài đặc điểm quan trọng:

Cross platform, chạy trên cả Windows, Mac, Linux, đây là một đặc điểm mang tính thời đại của các công nghệ mới.
Mã nguồn mở.
Có thể develop với C#, F#.
Không có quá nhiều điều để nói về Xamarin, bạn có thể sử dụng Xamarin để build ứng dụng di động đa nền tảng bao gồm Android, IOS và đã từng là Windows phone trong một quá khứ buồn.

Bên dưới tầng application là .NET standard library, đây là các thư viện .NET mà bạn có thể sử dụng ở cả .NET framework, .NET core và Xamarin. Cả 3 phiên bản runtime đều được xây dựng trên các standard library này.



.NET standard
Như hình phía trên, giả sử bạn muốn tạo ra một library project (build ra dll file). Nếu như bạn chọn sử dụng .NET standard project, bạn chỉ có thể sử dụng một số thư viện nhất định có trong .NET standard library, thư viện mà bạn build ra có thể sử dụng ở cả .NET framework, .NET core lẫn Xamarin. Nếu như bạn chọn sử dụng class library (.NET framework), bạn có thể sử dụng rất nhiều thư viện khác được xây dựng trong .NET framework, những thư viện này không hề tồn tại trong .NET standard library. Tuy nhiên, thư viện bạn build ra chỉ có thể sử dụng trong một project .NET framework, không thể sử dụng trong .NET core.

.NET framework vs .NET core
.NET framework vs .NET core


.Net framework
Chỉ chạy trên windows
Số lượng Third-party lớn, chất lượng
Docker, microservices còn nhiều hạn chế
Support Windows form, WPF
Chạy ổn định, cộng đồng support lớn
Số lượng công việc nhiều
.Net core
Đa nền tảng
Cộng đồng còn non trẻ, số lượng third-party ít
Được sinh ra để dành cho microservices, rất mạnh mẽ
Windows form, WPF chỉ mới được thêm vào từ phiên bản 3.0 (9-2019)
Là một công nghệ khá mới, chưa có tính ổn định
Số lượng việc không nhiều bằng .NET framework
Với một số so sánh mình đưa ra ở trên, bạn hoàn toàn có thể tự tìm ra câu trả lời cho bản thân. Với mình, câu trả lời của mình cho câu hỏi “học .NET hay .NET core” sẽ là “học cả 2”. NET framework và .NET core khá tương đồng trong cách code, vì vậy bạn có thể dễ dàng học được cả 2 công nghệ này. Nếu như mình viết bài này vào khoảng vài tháng trước thì mình sẽ đưa ra nhiều lý do để bạn không chọn .NET core hơn. Tuy nhiên, trong bản release .NET core 3.0 mới nhất Microsoft đã bổ sung rất nhiều feature cho .NET core mà trước đây chỉ .NET framework mới có, khiến .NET core trở nên mạnh mẽ hơn rất nhiều.
Ngoài ra, có một số yếu tố mà bạn có thể xem xét. Giả sử như bạn muốn tìm kiếm một công việc liên quan đến .NET trong tương lai gần thì bạn nên học .NET framework trước, bởi vì ở thời điểm hiện tại, số lượng công việc của .NET core chưa nhiều, hầu hết các ASP.NET website, Winform app, WPF app hiện tại đều sử dụng .NET framework và đang trong giai đoạn maintenance. Ngoài lý do này ra, bạn không có bất cứ lý do nào khác để không học thêm .NET core cả. Bởi vì theo những động thái mới nhất từ Microsoft thì .NET core sẽ là tương lai của .NET.

The end
Mình hy vọng bài viết sẽ giúp bạn có cái nhìn rõ ràng hơn về .NET framework và .NET core cũng như là .NET ecosystem.

Take care!

Nguồn: https://thedarkknighttech.com

Related Articles