ASP .NET Core, phần 1 giới thiệu .NET CORE

Rất vui được gặp các bạn tại phần đầu tiên của series ASP .NET Core.

Tại phần này mình sẽ không đề cập nhiều về việc lập trình, mình chỉ nói sơ qua hoàn cảnh và “sứ mệnh lịch sử” của .NET Core cũng như kiến trúc tổng quát của nền tảng này.

  1. Hoàn cảnh lịch sử và mục đích của .NET Core
  2. Kiến trúc của .NET
  3. Nên dùng .NET Framework hay .NET Core?
  4. ASP .NET Core MVC có những tính năng gì?
  5. Tài liệu tham khảo

Hoàn cảnh lịch sử và mục đích của .NET Core

Thông qua hoàn cảnh lịch sử của .NET Core, mục đích ra đời cũng như các mục tiêu mà .NET Core hướng tới, hy vọng bạn sẽ hiểu hơn về nền tảng này và giúp bạn đưa ra các quyết định chính xác hơn trong việc lựa chọn một nền tảng phù hợp cho công việc hằng ngày.

Vậy, ASP .NET Core là gì, tại sao nó được quan tâm như vậy ?.

Như bạn đã biết, kể từ phiên bản đầu tiên của .NET Framework được phát hành vào năm 2002 thì các ứng dụng được xây dựng trên nền tảng này đều phải chạy trên Windows, nhưng như vậy vẫn  chưa để nào đáp ứng đủ được nhu cầu của đông đảo cộng đồng người dùng .NET Framework về việc chạy các ựng dụng của .NET Framework trên các hệ điều hành khác như Linux hay MacOS,..

Xuất phát từ nhu cầu trên của cộng đồng, Mono-Project đã bước vào cuộc chơi để đưa .NET Framework đến với cộng đồng người dùng Linux

Kể từ phiên bản đầu tiên của Mono được phát hành vào năm 2004, đến nay cũng đã hơn 12 năm. Cộng đồng Mono cũng đã rất phát triển và dần hoàn thiện cho đến ngày hôm nay.

Tuy nhiên, bạn cần phải biết : Mono-Project  là bản sao chép của .NET Framework bằng cách sao chép lại các tính năng của C# dựa trên bản đặc tả ECMA  cho C#. Bằng cách này Mono-Project giúp bạn có thể phát triển ựng dụng .NET trên Linux.

Việc sao chép này đồng nghĩa với việc Mono-Project cũng “sao chép” luôn sự đầy đủ lẫn cồng kềnh của .NET Framework.

.NET Framework rất tốt, hầu hết các tính năng đều có sẵn giúp cho bạn phát triển ứng dụng dễ dàng hơn và nhanh hơn. Tuy nhiên, sự tiện lợi sẽ đi ngược với kích thước và tốc độ.  Vì .NET Framework quá nhiều tính năng sẵn có, quá nặng nề nên tốc độ và kích thước ứng dụng sẽ bị ảnh hưởng.

Như vậy, ý tưởng về việc xây dựng một thư viện nhỏ gọn, khả năng mở rộng mạnh mẽ kèm với việc chạy đa nền tảng là một ý tưởng  vô cùng tuyệt vời lúc này.

“Nhỏ, gọn, nhanh”

Cùng với sự phát triển của Micro-Service, mình nghĩ đó là lý do mà .NET Core ra đời.  “Core” có nghĩa là “cốt lõi” tức là chỉ bao gồm những tin năng cần thiết thôi, chứ không phải nặng nề như “Framework” .

Nhờ sự nhỏ, gọn này mà .NET Core đạt được tốc độ khá tuyệt vời khi phát triển úng dụng Web:

Stack Server Req/sec Load Params Impl Observations
ASP.NET 4.6 perfsvr 57,843 32 threads, 256 connections Generic reusable handler, unused IIS modules removed CPU is 100%, almost exclusively in user mode
IIS Static File (kernel cached) perfsvr 276,727 32 threads, 512 connections hello.html containing “HelloWorld” CPU is 36%, almost exclusively in kernel mode
IIS Static File (non-kernel cached) perfsvr 231,609 32 threads, 512 connections hello.html containing “HelloWorld” CPU is 100%, almost exclusively in user mode
NodeJS perfsvr 106,479 32 threads, 256 connections The actual TechEmpower NodeJS app CPU is 100%, almost exclusively in user mode
NodeJS perfsvr2 (Linux) 127,017 32 threads, 512 connections The actual TechEmpower NodeJS app CPU is 100%, almost exclusively in user mode
ASP.NET Core on Kestrel perfsvr 313,001 32 threads, 256 connections Middleware class, multi IO thread CPU is 100%
Scala – Plain perfsvr 176,509 32 threads, 1024 connections The actual TechEmpower Scala Plain plaintext app CPU is 68%, mostly in kernel mode
Netty perfsvr 447,993 32 threads, 256 connections The actual TechEmpower Netty app CPU is 100%

(Nguồn asp.net benchmarks )

Bạn có thể thẩy là ASP .NET Core đã nhanh hơn gấp nhiều lần so với .NET Framework, thậm chí là nhanh hơn gấp 2 lần NodeJS.

Có thể thấy, bước đi lần này của Microsoft đã ghi lại dấu ấn khá lớn trong cộng đồng phát triển ứng dụng Web.

Kiến trúc của .NET

components

(Ảnh: docs.microsoft.com)

Bạn có thể thấy, nền tảng .NET bây giờ gồm 3 mảng chính là :

  • .NET Framework
  • .NET Core
  • Xamarin (dựa trên Mono-Project)

Mỗi mảng sẽ phục vụ cho một mục đích riêng

  • .NET Framework: chuyên về ứng dụng chạy trên Windows, đầy đủ các tính năng sẵn có.
  • .NET Core: thiêng về các ứng dụng đa nền tảng,  Microservices, chứa các tính năng cơ bản, và hiện tại chỉ đang tập trung vào console app, UWP và ứng dụng Web mà thôi.
  • Xamarin thì chuyên về lập trình ứng dụng di động.

Bạn cần lưu ý là .NET Core hỗ trợ đa nền tảng. Tuy nhiên, căn cứ theo ROADMAP được công bố, với khối lượng công việc hiện tại thì .NET Core chỉ đang tập trung vào 3 mảng chính là Console App, UWP và ứng dụng Web mà thôi.

Cho nên .NET Core vẫn chưa hỗ trợ xây dựng các ứng dụng có đồ hoạ trên Linux tại thời điểm hiện tại.

Nên dùng .NET Framework hay .NET Core?

Như đã đề cập ở trên .NET Core hiện tại chỉ tập trung vào 3 mảng chính là  Console App, UWP và ứng dụng Web.

Nếu ứng dụng của bạn thuộc 3 loại trên, và yêu cầu chạy trên nền tảng khác ngoài Windows, và .NET Core đáp ứng hết các tính năng mà ứng dụng bạn yêu cầu thì bạn có thể thử sức với .NET Core.

Tuy nhiên, bạn nên lưu ý là các tính năng và thư viện của .NET Core hiện tại vẫn còn hạn chế. Trước khi quyết định dùng .NET Core cho sản phẩm của bạn, hãy đảm bảo rằng .NET Core có thể đáp ứng hết tất cả các tính năng mà bạn yêu cầu.

ASP .NET Core MVC có những tính năng gì?

Khả năng chạy trên đa nền tảng tuyệt vời của ASP .Net Core là không bàn cãi. Bên canh đó, ưu điểm về tốc độ và các tính năng mới của ASP .NET core cũng đáng để lưu ý như:

  • HTTP handler gọn nhẹ hơn
  • Modular HTTP request pipeline thông qua Middle-Ware
  • Tích hợp sẵn DJ (Dependency Injection)
  • Razor view engine hỗ trợ Tag Helpers
  • Cấu trúc Project có thay đổi. Thay vì cấu hình thông số của project qua tập trình *.csproj. Thì .NET Core cho phép cấu hình qua project.json sẽ giúp dễ đọc và thao tác hơn.
  • Chạy trên nhiều hệ điều hành
  • Mã nguồn mở.

Viết đến đây cũng đã rất dài rồi, nên trong phạm vi bài viết này mình chỉ đề cập đến các tính năng và thay đổi chính của ASP .NET Core so với ASP .NET MVC. Nếu đi sâu và sự khác biệt .NET Core và .NET MVC thì sẽ có một bài khác dài không kém :D.

Cảm ơn bạn đã bỏ thời gian theo dõi bài viết này, chúc bạn làm quen thành công với ASP .NET Core 😛

Tài liệu tham khảo:

[1] The introduction to ASP .NET Core (https://docs.microsoft.com/en-us/aspnet/core/)

[2] .NET Platform Guilde (https://docs.microsoft.com/en-us/dotnet/articles/standard/)

[3] ASP .NET Core MVC announcement (https://blogs.msdn.microsoft.com/webdev/2016/06/27/announcing-asp-net-core-1-0/)

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.