Các nền tảng .NET: .NET framework, .NET core, Xamarin

0

Công nghệ .NET (đọc là dot NET) là tên gọi chung của một loạt công nghệ phát triển ứng dụng của Microsoft hiện đang được sử dụng vô cùng rộng rãi trên thế giới cũng như ở Việt Nam.

Ở Việt Nam, nhu cầu đào tạo và sử dụng lao động liên quan đến các công nghệ .NET đang rất cao. Để đáp ứng nhu cầu đó, các công nghệ .NET được hầu hết các trường đại học đưa vào giảng dạy. Tỷ trọng các công nghệ .NET được giảng dạy trong các trường đại học về công nghệ thông tin hiện nay là rất lớn. Sinh viên chỉ cần giỏi một trong số này là có cơ hội việc làm tốt.

Trong loạt bài giới thiệu này, chúng tôi giới thiệu và hệ thống hóa một số công nghệ .NET phổ biến trên thị trường lao động và đào tạo. Hy vọng bài viết sẽ giúp ích phần nào về việc lựa chọn công nghệ phù hợp cho các bạn sinh viên đang có ý định đi theo con đường này.

Tại sao có loạt bài viết này?
Nếu bạn là sinh viên công nghệ thông tin vừa kết thúc giai đoạn cơ sở, bạn theo học ngành/chuyên ngành công nghệ phần mềm mà chưa xác định hướng công nghệ chuyên sâu. Khi đứng đứng trước một rừng công nghệ mênh mông và bạn cảm thấy hoang mang chưa biết lựa chọn gì. Bạn đã học rất nhiều thứ trong chương trình đào tạo nhưng vẫn thấy chưa chuyên sâu về vấn đề gì.
Chúng tôi đã từng là sinh viên, đã từng trải qua những cảm giác tương tự. Chúng tôi hiểu rằng, việc lựa chọn một hướng đi có ảnh hưởng rất lớn đến công việc trong tương lai. Để giúp các bạn định hình công việc và đưa ra lựa chọn phù hợp, chúng tôi viết một số bài mang tính “hướng nghiệp”.
Đối tượng chính chúng tôi muốn hướng tới là các bạn sinh viên đang theo học cách ngành thuộc lĩnh vực công nghệ thông tin, đặc biệt là các hướng/ngành/chuyên ngành liên quan đến kỹ thuật phần mềm đang chưa có sự chuẩn bị và quyết định rõ ràng cho công việc tương lai.

Các công nghệ .NET (dot NET) cho phát triển ứng dụng

Hiện đang có nhiều công nghệ .NET đang được giảng dạy trong nhà trường. Mặc dù được học nhiều công nghệ Microsoft nhưng sinh viên thường không hệ thống hóa được chúng. Nhiều công nghệ mặc dù được sử dụng rộng rãi và có nhu cầu tuyển dụng cao nhưng sinh viên chưa được giới thiệu ở trường. Cũng có những công nghệ đã cũ nhưng vẫn tiếp tục được giảng dạy, trong khi công nghệ mới chưa được giới thiệu. Có thể có những nhầm lẫn nhất định về các công nghệ này.

Hiện nay, việc đào tạo và nhu cầu nhân lực có thể tóm gọn vào một số công nghệ phổ biến sau:

  1. Công nghệ trên dựa trên .NET Framework:
    • Phát triển ứng dụng cho Windows desktop: Windows Forms, Windows Presentation Foundation (WPF), Universal Windows Platform (UWP)
    • Phát triển ứng dụng web: Active Server Page for .NET (ASP.NET), bao gồm ASP.NET MVC, ASP.NET Web Forms, ASP.NET WebPages, SignalR.
    • Phát triển ứng dụng phân tán, ứng dụng hướng dịch vụ: Windows Communications Foundation, ASP.NET Web API, ASP.NET Core
    • Hỗ trợ làm việc với cơ sở dữ liệu quan hệ: ActiveX Data Object for .NET (ADO.NET)
    • Sharepoint
  2. Công nghệ phát triển ứng dụng mobile:
    • Xamarin (đa nền tảng)
  3. Công nghệ dựa trên .NET Core:
    • Phát triển ứng dụng web: ASP.NET Core (bao gồm MVC, API, Razor Pages, Blazor)

Lưu ý rằng, danh sách trên chỉ bao gồm những công nghệ hiện đang phổ biến trong đào tạo và nhu cầu nhân lực.

Chúng ta có thể nhận xét, hầu hết các công nghệ đều xây dựng trên .NET Framework. Công nghệ cho .NET Core hiện còn ít và chưa được phổ biến như .NET Framework. Xamarin chỉ dùng cho phát triển ứng dụng di động đa nền tảng.

Phân biệt giữa platform, framework, library

Khi tìm hiểu về các công nghệ .NET bạn có thể rất nhanh chóng gặp phải những thuật ngữ như nền tảng (platform), khung (framework), thư viện (library).

Chẳng hạn bạn có thể đọc thấy rằng “.NET Framework là một nền tảng (platform) cho phát triển ứng dụng trên windows“. Vậy tại sao trong tên gọi của nó lại là “Framework”. Bạn có có thể nghe thấy “ASP.NET là một framework cho phát triển ứng dụng web“. Vậy trong thế giới của .NET, đâu là platform, đâu là framework và đâu là library.

Thực tế cũng không có định nghĩa tiêu chuẩn nào cho 3 khái niệm này. Tuy nhiên đa số đồng ý với sự phân biệt như sau:

  • Platform: có liên quan đến phần cứng và hệ điều hành;
  • Framework: thường xây dựng bên trên platform và tích hợp với platform. Framework là cái khung xương của một phần mềm để từ đó dễ dàng phát triển tiếp.
  • Library: có thể nằm trong framework hoặc platform nhưng cung cấp hỗ trợ giới hạn về chức năng cho phát triển phần mềm.

Với sự phân biệt như trên, .NET Framework (lưu ý Framework viết hoa chữ cái F) vừa là một platform, vừa là một framework, cũng đồng thời là một hệ thống thư viện. Từ Framework ở đây không có nghĩa nó là một framework mà chỉ là một bộ phận của tên gọi. Tương tự, .NET Core và Xamarin/Mono cũng đảm đương cả 3 vai.

Lý do là vì .NET Framework vừa tạo ra cái khung cho phát triển ứng dụng (framework), vừa cung cấp hệ thống thư viện (library), đồng thời chương trình .NET lại hoạt động trong môi trường máy ảo CLR, tương tự như cách hệ điều hành tạo môi trường hoạt động cho ứng dụng native.

Tuy nhiên, các công nghệ phát triển ứng dụng cụ thể bên trên của .NET Framework hay .NET Core thì chỉ là các framework. Windows Forms hay WPF là các framework giúp phát triển ứng dụng windows desktop. ASP.NET và ASP.NET Core là các framework giúp phát triển ứng dụng web.

Bạn có thể hỏi vậy WebForms, MVC, WebPages, v.v., thuộc về nhóm nào? Câu hỏi này cũng khó có được câu trả lời xác định. Thực tế có thể coi chúng là các framework xây dựng bên trên một framework khác (ASP.NET), vì chúng tạo ra cái khung chương trình để người lập trình nhanh chóng đắp thêm da thịt thành chương trình hoàn thiện. Tuy nhiên trong nhiều tài liệu tiếng Anh người ta lại gọi là các mô hình lập trình (programming model).

Các nền tảng công nghệ .NET

.NET Framework

.NET Framework là nền tảng hoàn toàn dành cho windows. Đây là nền tảng được sử dụng rộng rãi nhất nếu phát triển ứng dụng chạy trên windows, dù là ứng dụng desktop hay web.

.NET Framework được hiểu với hai ý nghĩa: (1) một môi trường hoạt động cho ứng dụng, gọi là CLI, (2) hệ thống thư viện lớn dành cho phát triển ứng dụng. Một ứng dụng viết cho .NET Framework không thực thi trực tiếp trong hệ điều hành mà trong khuôn khổ một chương trình máy ảo (CLR). Do đó, .NET Framework đơn giản hóa việc phát triển ứng dụng và giúp ứng dụng hoạt động ổn định và an toàn hơn.

.NET Framework là cái nền để trên đó Microsoft xây dựng các bộ thư viện cho từng công nghệ cụ thể như Windows Forms, WPF, ASP.NET. Vì vậy, việc học bất kỳ công nghệ nào trong số này đều phải lấy xuất phát điểm là .NET Framework chung.

.NET Core

.NET Core có cùng nguyên lý và ý tưởng với .NET Framework nhưng hướng tới hoạt động đa nền tảng, tính module hóa và hiệu suất cao hơn. .NET Core có thể triển khai trên Linux, Mac OS và Windows.

.NET Core là một công nghệ mới và chưa đạt được mức độ hỗ trợ tốt như .NET Framework. Nhiều thư viện quan trọng trên .NET Framework chưa có bản tương ứng trên .NET Core. Hỗ trợ từ các hãng thứ ba cũng chưa nhiều.

Tuy nhiên, .NET là một công nghệ rất hứa hẹn trong tương lai gần. Hiện nay ở Việt Nam có khá nhiều công ty đang chuyển hướng sang phát triển ứng dụng trên .NET Core, nhất là mảng ứng dụng web.

Trong tương lai, .NET 5 có thể sẽ hợp nhất các nền tảng này để tạo ra một nền tảng thống nhất.

Xamarin

Xamarin cũng có thể xem như một dạng nền tảng .NET triển khai trên các hệ điều hành di động Android và iOS. Xamarin cho phép viết code một lần nhưng biên dịch ứng dụng sang cả hai nền tảng di động.

Sau khi được Microsoft mua lại và cung cấp miễn phí, cộng đồng Xamarin đã phát triển nhanh chóng. Hiện nay nhu cầu tuyển dụng Xamarin ở Việt Nam đang tăng cao, dù chưa bằng các nền tảng công nghệ khác.

Lựa chọn nền tảng .NET nào?

Ở các trường, các công nghệ .NET thường là một trong số các nhánh tự chọn bên cạnh các loại công nghệ của các hãng khác. Các hướng tự chọn thường xuất hiện từ năm thứ 3.

Học các công nghệ .NET thực chất là học cách sử dụng bộ thư viện lớp cơ bản (của nền tảng tương ứng) với một ngôn ngữ .NET nào đó và sau đó tập trung sâu hơn vào một (số) công nghệ trên nền tảng đó.

Ví dụ, sinh viên nếu lựa chọn .NET Framework thì phải học lập trình .NET Framework căn bản sử dụng một trong số các ngôn ngữ sẽ trình bày ở dưới đây. Sau đó sẽ lựa chọn tiếp hướng chuyên sâu như ứng dụng desktop (phải học Windows Forms hoặc WPF) hay web (ASP.NET MVC, ASP.NET WEB API). Sẽ là tương đối khó nếu muốn học tất cả các hướng.

Nếu xét về mức độ phổ biến và nhu cầu tuyển dụng hiện tại thì .NET Framework đang là số một. Tuy nhiên sau một vài năm nữa tình hình có thể thay đổi với hai nền tảng còn lại.

Để đưa ra quyết định, cách đơn giản nhất là tìm kiếm nhu cầu tuyển dụng hiện tại trên google, xác định nhóm công ty muốn apply, xem xét mức độ phức tạp của công nghệ để tính thời gian và công sức cần bỏ ra để học. Đương nhiên, yếu tố quan trọng vẫn là mong muốn và năng lực của bản thân.

Ngôn ngữ lập trình cho các công nghệ .NET

Về các ngôn ngữ lập trình .NET

Để làm việc với các công nghệ .NET cần học sử dụng một ngôn ngữ hỗ trợ nền tảng này. Hiện nay có các ngôn ngữ chính thức sau được Microsoft hỗ trợ:

Visual C++ for CLI: Đây là phiên bản ngôn ngữ C++ dịch sang mã CIL (mã trung gian của .NET Framework) thay vì mã native như Visual C++ cổ điển.

Visual C#: Ngôn ngữ được xây dựng riêng cho .NET Framework. C# kế thừa cấu trúc cú pháp và nhiều đặc điểm từ C/C++. C# là ngôn ngữ đơn giản, dễ học, đặc biệt với người đã biết một ngôn ngữ tương tự C (như Java, Perl, PHP, JavaScript).

Visual Basic .NET: Là ngôn ngữ kế tục của Visual Basic nổi tiếng trước đó nhưng được thiết kế lại để hoạt động trên CLI.

Visual F#: Là một ngôn ngữ đi theo hướng lập trình hàm (Functional Programming) thay vì lập trình hướng đối tượng như ba ngôn ngữ ở trên.

Ngoài các ngôn ngữ chính thức do Microsoft hỗ trợ, các hãng thứ ba cũng phát triển các ngôn ngữ khác cho CLI.

Lựa chọn ngôn ngữ .NET nào?

Nếu đã từng biết C hoặc phiên bản C++ nào đó khác thì đây là lựa chọn dễ dàng nhất. Tuy nhiên, hiện .NET Core chưa hỗ trợ C++. Xamarin cũng không hỗ trợ trực tiếp C++.

Visual Basic .NET phù hợp nhất với người đã từng biết Visual Basic (6.0) trước đó. Trong những trường hợp khác không nên học ngôn ngữ này. Visual Basic có thể dùng cho .NET Framework nhưng không được hỗ trợ trên Xamarin. .NET Core từ phiên bản 3 (2018) mới hỗ trợ Visual Basic.

F# đặc biệt phù hợp để xây dựng các thư viện hàm dành cho xử lý thông tin nhưng không phù hợp cho lập trình client.

Nói chung, ngôn ngữ phù hợp nhất là C#. Đây là lựa chọn số một cho bất kỳ ai đi theo các công nghệ Microsoft. C# có thể dùng cho tất cả các công nghệ kể trên. Thêm vào đó, các trường thường sử dụng ngôn ngữ C khi dạy nhập môn lập trình. Khi đó, C# thường là lựa chọn tự nhiên hơn cả khi chuyển sang học các công nghệ .NET.

Các công cụ hỗ trợ phát triển ứng dụng .NET

Về công cụ hỗ trợ .NET

Việc phát triển ứng dụng .NET rất đơn giản, chỉ cần một chương trình xử lý văn bản (như Notepad) là được. Chương trình compiler với giao diện dòng lệnh sẽ thực hiện biên dịch. Tuy nhiên, hiệu quả nhất vẫn là sử dụng một môi trường phát triển ứng dụng tích hợp (IDE).

Visual Studio

Visual Studio được cung cấp theo nhiều phiên bản, bao gồm cả bản trả phí và bản miễn phí. Bản miễn phí là hoàn toàn đủ cho mục đích học và làm ở các công ty/nhóm lập trình nhỏ.

Visual Studio cung cấp gần như tất cả mọi thứ cần thiết cho việc lập trình ứng dụng theo các công nghệ được hỗ trợ. Nếu thiếu, có thể tải thêm từ NuGet, trung tâm quản lý và phân phối các gói thư viện.

Đây là lựa chọn số một khi lập trình .NET mà không cần bàn cãi nhiều.

Visual Studio Code

Ngoài Visual Studio, Microsoft cung cấp miễn phí một IDE khác gọi là Visual Studio Code. Đây là một code editor chạy đa nền tảng.

Visual Studio Code đặc biệt phù hợp với phát triển ứng dụng web và ứng dụng trên .NET core.

Công cụ khác

Cùng với Visual Studio, một số công cụ khác cũng được cài đặt cùng nếu sử dụng công nghệ tương ứng.

Ví dụ, Blend dành cho thiết kế giao diện ứng dụng WPF, Android Emulator dành cho phát triển ứng dụng với Xamarin, IIS Express cho phát triển ứng dụng web, LocalDb cho phát ứng dụng sử dụng cơ sở dữ liệu quan hệ.

Các công cụ phát triển ứng dụng của Microsoft có thể tham khảo ở đây.

Kết phần

Trong phần này chúng ta mới điểm qua sơ lược một số vấn đề liên quan đến các công nghệ nền tảng của Microsoft phổ biến ở Việt Nam.

Các thông tin trên, cũng như cả loạt bài này, chỉ có tính chất giới thiệu và hỗ trợ người mới có những hình dung ban đầu về nền tảng và công cụ của Microsoft cung cấp cho người học.

Trong bài tiếp theo chúng ta sẽ trao đổi về các công nghệ cụ thể.

Loạt bài “Các công nghệ phát triển ứng dụng Microsoft sinh viên nên biết”:
Phần 1 – Giới thiệu chung, .NET Framework, .NET Core, Ngôn ngữ, Công cụ
Phần 2 – Windows form, WPF, ASP.NET, ASP.NET Core, ADO.NET
Phần 3 – Phân biệt các nền tảng .NET Core, .NET Framework, .NET Standard
Phần 4 – .NET 5 – tương lai của các công nghệ .NET

Bình luận

avatar
  Đăng ký theo dõi  
Thông báo về