Trong
bài viết ngày hôm nay, Dev Aptech sẽ cùng nhau các bạn phân biệt,so sánh giữa 2 nền tảng
.Net Core và .Net Framework để đưa ra quyết định việc chọn cái nào để phát
triển ứng dụng của mình. Hi vọng các bạn sẽ enjoy cái post này và cho chúng
mình xin 1 tym, 1 share và 1 cmt nhaaa.
Các
thành phần của .NET :
- Runtime ( Môi trường hoạt động
)
- Libraries (
Thư viện )
- Toolings (
Công cụ )
Trước
hết, chúng ta cần hiểu được làm thế nào .NET có thể chạy được đoạn code C# mà
bạn viết ra. Để hiểu được điều này, chúng
ta cần nắm rõ quy trình biên soạn code trong .NET
Về cơ bản, khi bạn thực hiện lệnh build thì source code của
bạn được chuyển hóa thành một dạng ngôn ngữ trung gian có tên là MSIL
(Microsoft Intermediate Language). Khi ứng dụng được khởi chạy, thành phần
Runtime-hay tên gọi riêng biệt trong .NET là CLR (common language runtime) sẽ
tiến hành dịch mã MSIL thành mã máy (Native code) để cho máy tính có thể thực
thi. Quá trình này gọi là JIT (just-in-time) compilation. Cách biên soạn
và vận hành của .NET khá giống với Java.
Ngoài việc biên dịch, môi trường hoạt động (Runtime) còn có
những công dụng như:
– Tự động quản lý bộ nhớ. Khi làm việc với những ngôn ngữ bậc
cao như C# hay Java, bạn không cần giải phóng bộ nhớ bằng cách gọi free()
như khi làm việc với C/C++. CLR bao gồm một công cụ dọn rác (Garbage collector
-GC) sẽ tự động giải phóng những phần bộ nhớ không được sử dụng.
– Strong typings: CLR quản lý thông tin về các kiểu dữ liệu
mà bạn sử dụng. Điều này giúp cho bạn có thể phân biệt được các định dạng thông
tin của từng biến khác nhau (class, structure…)
Khi bạn làm việc với .NET, code của bạn sẽ tương tác với rất
nhiều các class khác nhau. Ví dụ: Class được sử dụng nhiều nhất trong .NET là
System.String. Tất cả những class này được định nghĩa trong hệ thống thư viện
cơ bản của .NET mà người ta hay gọi tắt là BCL (Base class libraries).
Các công cụ (toolings) của .NET bao gồm compiler và Visual
Studio .NET sử dụng hệ thống build của Microsoft gọi là MSBuild. Đối với nền
tảng .NET core mới thì chúng ta còn có thêm công cụ dòng lệnh.
Phân biệt .NET Framework, .NET Core
Đối với những người mới làm quen với .NET hay kể cả một số người làm việc với .NET lâu năm, những cái tên như .NET Framework hay .NET Core vẫn hay gây ra những hiểu lầm. Tuy nhiên những khái niệm căn bản về .NET nói trên sẽ giúp chúng ta phân biệt khá dễ dàng. Về cơ bản, .NET Framework, .NET Core là 2 phiên bản .NET khác nhau.
Vậy tại sao lại có đến 2 phiên bản khác nhau?
- .NET Framework được Microsoft đưa ra chính thức từ năm 2002.
.NET Framework chỉ hoạt động trên Windows. Những nền tảng ứng dụng như WPF,
Winforms, ASP.NET (1-4) hoạt động dựa trên .NET Framework.
Những điểm khác nhau
giữa .NET Framework và .NET Core
Nhu cầu đa nền tảng (Cross-platform)
- Nếu mục tiêu là có một ứng dụng có thể chạy trên các nền tảng (Windows, Linux và Mac OS) thì lựa chọn tốt nhất trong hệ sinh thái của .Net là .Net Core.
- Khi sử dụng .Net Core, sự lựa chọn tốt nhất chính là việc sử
dụng Visual Studio IDE với Windows trong việc hỗ trợ những tính năng như quản
lý dự án, debug, quản lý source,.. Nhưng chúng ta còn có thể sử dụng các công
cụ khác như Visual Studio Code (chạy trên Mac và Linux), Sublime Text, Vim để
tạo ra các ứng dụng .Net Core.
Microservices
- Kiểu xây dựng những ứng dụng phức tạp theo những module có thể
tách rời và mỗi module có thể sử dụng những công nghệ khác nhau, framework hay
các bộ thư viện khác nhau để phát triển. .Net Core chính là sự lựa chọn phù hợp
để hỗ trợ cho các ứng dụng theo hướng Microservice.
Hiệu suất làm việc cùng khả năng mở rộng hệ thống
- Khi hệ thống của bạn cần hiệu năng và khả năng mở rộng tốt
nhất có thể để bạn có được khả năng phản hồi tốt nhất cho dù bạn có bao nhiêu
người dùng, thì đó là nơi .NET Core và ASP.NET Core thực sự tỏa sáng.
- Thời của cải tiến hiệu suất theo qui luật Moore Moore cho các
CPU đơn không còn áp dụng nữa; Tuy nhiên, bạn cần phải làm nhiều hơn trong khi
hệ thống của bạn đang phát triển và cần khả năng mở rộng và hiệu suất cao hơn
cho những người dùng đòi hỏi khắt khe hơn hàng ngày. Cuối cùng, bạn cần có được
hiệu quả cao hơn, tối ưu hóa ở mọi nơi và mở rộng quy mô tốt hơn trên các cụm
máy, VM và lõi CPU. Đây không chỉ là vấn đề về sự hài lòng của người dùng; nó
cũng có thể tạo ra sự khác biệt lớn về chi phí / TCO. Đây là lý do tại sao điều
quan trọng là phải phấn đấu cho hiệu suất và khả năng mở rộng.
- Như đã đề cập, nếu bạn có thể cô lập các phần nhỏ trong hệ
thống của mình dưới dạng microservice hoặc bất kỳ phương pháp liên kết lỏng lẻo
nào khác, nó sẽ tốt hơn khi bạn có thể không chỉ phát triển từng mảnh nhỏ /
dịch vụ siêu nhỏ một cách độc lập và có sự linh hoạt và bảo trì lâu dài tốt
hơn, nhưng bạn cũng có thể sử dụng bất kỳ công nghệ nào khác ở cấp độ
microservice nếu những gì bạn cần làm không tương thích với .NET Core. Và cuối
cùng, bạn có thể cấu trúc lại nó và mang nó đến .NET Core khi có thể.
Command line cho Mac, Linux hay Windows
- Cách tiếp cận này là tùy chọn khi sử dụng .NET Core. Tất
nhiên, chúng ta cũng có thể sử dụng Visual Studio đầy đủ. Nhưng nếu bạn là một
lập trình viên muốn phát triển với các trình soạn thảo nhẹ và sử dụng nhiều
dòng lệnh, thì .Net Core được thiết kế cho CLI.
Ưu điểm của .NET Framework
- Nếu bạn là một lập trình viên về .Net và cần phát triển nhanh
một ứng dụng nhưng không đủ thời gian để học .Net Core thì .Net Framework chính
là sự lựa chọn.
- Nếu bạn đang bảo trì hay nâng cấp ứng dụng .Net có sẵn thì
.Net Framework cũng chính là sự lựa chọn của bạn. Việc nâng cấp từ hệ thống
.Net lên .Net core bắt buộc chúng ta phải làm một số việc để làm điều đó.
- Hiện tại thì .Net Framework chỉ dừng lại ở phiên bản 4.8 và nó
chính là phiên bản cuối cùng của .Net Framework. Không có kế hoạch nào để nâng
cấp lên phiên bản mới trong tương lai.
Ưu điểm của .NET Core
- Nếu bạn đang phát triển một ứng dụng mới và đang có sự lựa
chọn giữa .Net Framework và .Net Core thì .Net Core chính là sự lựa chọn không
tồi.
- Microsoft vừa mới phát hành phiên bản mới nhất là .Net core
3.0, với rất nhiều sự cải tiến của .Net Core. Nếu bạn muốn học hỏi những cái
mới và tương lai thì đó cũng là một điểm để đưa ra quyết định
- .Net Core phù hợp cho nhiều nền tảng bao gồm Windows, Linux,
hay Mac Os. Cùng với sự hộ trợ của Visual Studio Code hay những editor khác thì
bạn cũng có thể phát triển ứng dụng trên nhiều nền tảng khác nhau mà không gặp
bất kì trở ngại nào.
- Việc deploy các ứng dụng .Net core cũng trở nên đơn giản hơn
bao giờ hết và tiết kiệm nguồn tài nguyên khi kết hợp với Docker Containers hay
Azure Kubernates Service.
- Tốc độ thực thi cũng như khả năng mở rộng ứng dụng chính là
những lợi điểm tuyệt vời nhất mà .Net core mang lại.
Vậy
bạn nên sử dụng .NET Framework, .NET Core ?
Nhận xét
Đăng nhận xét