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


Source: Google

Trong hình trên, phần ‘Compile time’ là quá trình ‘Build’, và ‘Runtime’ là quá trình chạy .

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.

- Cho đến năm 2013, Microsoft định hướng đi đa nền tảng và phát triển .NET core. .NET core hiện được sử dụng trong các ứng dụng Universal Windows Platform và ASP.NET Core.


Source : Google

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 ?


Source : Google

Điều đó tùy thuộc vào ứng dụng mà bạn có ý định phát triển. Đối với các ứng dụng Windows desktop, .NET Framework sẽ là sự lựa chọn của bạn. Đối với các Web server, bạn có thể sử dụng cả .NET Framework và .NET Core.


Nhận xét