Các công nghệ .NET thông dụng: Winforms, WPF, ASP.NET, ASP.NET Core, ADO.NET

0

Windows Forms, WPF, ASP.NET (MVC và Web API), ASP.NET Core, ADO.NET là những framework trên .NET thông dụng nhất hiện nay cả về nhu cầu tuyển dụng và đào tạo. Thông thường, nắm bắt sâu một trong số các công nghệ này có thể giúp ích rất lớn cho bạn cả về việc học và làm sau này.

Trong bài viết này, chúng ta sẽ xem xét kỹ hơn một số vấn đề liên quan đến các công nghệ nói trên, cũng như đưa ra một số lời khuyên hữu ích nếu bạn muốn đi theo con đường trở thành lập trình viên .NET.

Đây là bài viết thứ hai trong loạt bài về các công nghệ phát triển ứng dụng phổ biến của Microsoft tại Việt Nam mà sinh viên nên học/biết. Trong bài này chúng ta sẽ nói về các công nghệ phát triển ứng dụng trên từng nền tảng cụ thể.
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át triển ứng dụng desktop

Windows Forms

Windows Forms (thường gọi tắt là winforms) là framework dành cho phát triển ứng dụng desktop cho Windows đầu tiên trên .NET Framework, được sử dụng rất rộng rãi và tồn tại cho đến tận ngày nay.

Windows Forms hoàn toàn đơn giản hóa việc lập trình GUI (giao diện đồ họa), hỗ trợ thiết kế giao diện trực quan (mà không cần tự viết code), đồng thời nhận được sự hỗ trợ rất tốt từ các hãng thứ ba (Devexpress, Syncfusion, Telerik, v.v.) và cộng đồng.

Khuyến nghị

Winforms rất dễ học với người mới bắt đầu. Sau khi học qua C#/VB.NET căn bản hầu hết đều có thể tự bắt đầu học Windows Forms. Mô hình lập trình của Windows Forms đơn giản và dễ nắm bắt. Việc thiết kế giao diện rất trực quan, đơn giản. Tuy nhiên, mô hình thiết kế giao diện người dùng và mô hình lập trình của Winforms không thực sự phù hợp với yêu cầu hiện nay.

Hiện nay vẫn có nhiều công ty tuyển nhân sự về mảng này, chủ yếu để bảo trì và cải tiến các hệ thống đã xây dựng từ trước.

Windows Forms cũng vẫn là một công cụ hữu ích cho quá trình học tập. Trong quá trình học có thể thường xuyên phải làm project môn học. Winforms là một công cụ rất thích hợp.

Sau khi học .NET căn bản nên học qua Windows Forms. Khi cần thiết có thể sử dụng như một công cụ lập trình nhanh ra các ứng dụng nhỏ hoặc prototype.

Windows Presentation Foundation (WPF)

WPF ra đời cùng với .NET 3.5 và có thể coi như người kế tục Windows Forms.

WPF sử dụng DirectX để tạo ra giao diện với khả năng xử lý đồ họa rất mạnh cho phép tạo ra những giao diện hiện đại, đẹp, mượt mà và những hiệu ứng mà Windows Forms không thể hoặc rất khó đạt được.

WPF sử dụng ngôn ngữ riêng, XAML, để biểu diễn giao diện, cho phép các designer chuyên nghiệp hoạt động độc lập với coder.

WPF có một mẫu kiến trúc riêng, MVVM (Model-View-ViewModel).

Cơ chế Data binding của WPF mạnh hơn nhiều so với Windows Forms, giúp giải quyết vấn đề hiển thị dữ liệu rất hiệu quả, ổn định và an toàn.

Khuyến nghị

Đây là một framework xứng đáng để đầu tư. Các dự án mới, nếu phát triển desktop application, đều được khuyến nghị sử dụng WPF. Nếu tìm kiếm trên Google có thể thấy rất nhiều yêu cầu tuyển dụng về WPF.

Nhược điểm lớn nhất của WPF là phức tạp, khó học, khó thành thạo (nếu so với Windows Forms). Để phát huy hiệu quả thực sự của WPF đòi hỏi người người lập trình phải sử dụng mẫu thiết kế MVVM xây dựng riêng cho WPF, thành thạo XAML, hiểu cơ chế Data Binding, có khả năng thiết kế, và rất nhiều kỹ thuật nâng cao khác.

Do đó, nếu xác định học WPF sẽ phải đầu tư nhiều thời gian và công sức, cũng như phải chuẩn bị kỹ thuật nền tảng rất chắc về .NET.

Nếu cần một công nghệ phát triển ứng dụng nhỏ và nhanh thì WPF không phải là lựa chọn phù hợp. WPF phù hợp với các dự án lớn.

Universal Windows Platform (UWP)

UWP là framework mới nhất chuyên để phát triển ứng dụng cho Windows Store và xuất hiện cùng với Windows 10.

Microsoft phát triển UWP với mục tiêu tạo ra một cấu trúc thống nhất cho ứng dụng chạy trên các nền tảng của mình mà không cần phải phát triển riêng cho từng nền tảng cụ thể nào.

Khuyến nghị

Đây là framework còn rất mới và sự hỗ trợ chưa thực sự tốt.

Thêm vào đó, ứng dụng UWP chỉ có thể cài đặt thông qua windows store. Điều này có thể không thực sự phù hợp với một số loại ứng dụng (như ứng dụng quản lý chuyên dụng cho doanh nghiệp).

Ở Việt Nam hiện nay nhu cầu về công nghệ này chưa rõ ràng. Vì vậy việc học UWP hướng tới làm việc chuyên nghiệp tạm thời chưa khuyến khích. Tuy nhiên, bạn đọc cũng hoàn toàn có thể tự tìm hiểu thử.

Phát triển ứng dụng web

ASP.NET

ASP.NET là tên gọi một framework hỗ trợ phát triển các ứng dụng được host (chạy) bên trong chương trình máy chủ web IIS (Internet Information Services) của Windows. Bản thân ASP.NET được xây dựng bên trên .NET Framework.

Trên nền của ASP.NET, Microsoft xây dựng các mô hình lập trình (programming model) khác nhau, bao gồm ASP.NET Web Forms, ASP.NET MVC, ASP.NET Web API, và một số mô hình khác nữa (SignalR, Web Pages, WebHooks).

Như vậy không nên nhầm và lẫn lộn giữa mô hình cụ thể xây dựng trên ASP.NET và bản thân ASP.NET

Tiếp theo chúng ta nói về các mô hình MVC, Web API, và Web Forms.

ASP.NET Web Forms

Web Forms là mô hình lập trình ứng dụng web đầu tiên xây dựng trên ASP.NET. Microsoft muốn tạo ra một mô hình phát triển ứng dụng web “stateful” (gần giống như ứng dụng desktop) thay cho bản chất “stateless” của web và HTTP. Kết quả là mô hình này rất nặng nề, mã HTML sinh ra không kiểm soát được, đồng thời tách xa khỏi các tiêu chuẩn về web do cộng đồng đặt ra.

Tuy nhiên, với thời gian tồn tại khá dài, có nhiều project lớn sử dụng công nghệ này và vẫn còn hoạt động đến ngày nay. Rất nhiều công cụ từ các hãng thứ ba hỗ trợ cho Web Forms.

Nhu cầu tuyển dụng về Web Forms hiện nay khá nhỏ, chủ yếu để bảo trì các project cũ. Nếu mới bắt đầu với ASP.NET thì không nên học framework này nữa. Thay vào đó, nên học ASP.NET MVC sẽ giới thiệu sau đây.

ASP.NET MVC

ASP.NET MVC là bước đi của Microsoft để đưa mô hình phát triển ứng dụng web trên ASP.NET về với các tiêu chuẩn chung của web đã được xác lập.

Đây là framework hỗ trợ phát triển ứng dụng web theo mô hình kiến trúc MVC – mô hình được sử dụng rộng rãi trong phát triển ứng dụng web.

Rất nhiều thư viện hỗ trợ được các hãng thứ ba phát triển cho MVC. Đồng thời, khác biệt với Web Forms, MVC cũng sử dụng được tất cả các công cụ phát triển web chung do cộng đồng tạo ra.

Khuyến nghị

Có thể nói đây là framework được sử dụng phổ biến hàng đầu của Microsoft hiện nay. Nhu cầu công việc liên quan đến ASP.NET MVC hiện rất cao. Hầu hết các công ty sử dụng công nghệ của Microsoft đều tuyển dụng.

Đây là một framework mà sinh viên công nghệ thông tin nên học từ sớm, ngay sau khi hoàn thành khóa .NET căn bản.

Tuy nhiên cũng nên lưu ý học thêm các công cụ và công nghệ hỗ trợ phát triển ứng dụng web khác nữa (JavaScript, Html, Css).

ASP.NET Web API

Web API là framework hỗ trợ xây dựng thành phần dịch vụ (service) cho hệ thống phần mềm hướng dịch vụ (Service-Oriented Application, SOA). Web API cũng thường được sử dụng song song với MVC để bổ sung API mở cho hệ thống.

Hiểu đơn giản thế này, ví dụ, một hệ thống quản lý (cho doanh nghiệp chẳng hạn) có thể chứa desktop client, mobile client, và một cổng thông tin trên web. Ba loại thành phần client này không cần tự mình chứa và xử lý dữ liệu. Thay vào đó chúng gọi đến một dịch vụ tập trung để lấy và xử lý dữ liệu.

Các hệ thống quản lý mới xây dựng hầu như đều đi theo mô hình này.

Khuyến nghị

Web API cũng có nhu cầu tuyển dụng hàng đầu hiện nay với công ty sử dụng .NET. Đây cũng là công nghệ mà sinh viên không nên bỏ qua.

Việc học Web API khá đơn giản nếu đã học MVC vì chúng có rất nhiều điểm chung. Hai framework này có thể học song hành với nhau.

Cũng lưu ý rằng, Web API hoàn toàn là công nghệ cho service. Nghĩa là phải dùng một (số) công nghệ khác để xây dựng thành phần client. Ví dụ, có thể dùng winforms/WPF để xây dựng client desktop.

ASP.NET Core

ASP.NET Core là một framework hoàn toàn mới hỗ trợ phát triển ứng dụng web. Ứng dụng ASP.NET Core có thể (1) chạy trên .NET Framework, và (2) chạy trên .NET Core.

ASP.NET Core thống nhất cả hai mô hình MVC và API vào cùng một framework, giúp đơn giản hóa việc phát triển ứng dụng web hiện đại, nâng cao hiệu suất, và có khả năng host trên nhiều loại chương trình server khác nhau.

Ứng dụng ASP.NET Core có thể phát triển và hoạt động đa nền tảng, bao gồm Linux, Windows và macOS, cũng như phối hợp với các loại server khác nhau (IIS, Apache, Enginx).

Ngoài ra Microsoft liên tục xây dựng thêm các mô hình và framework mới trên .NET Core như Blazor, Razor Pages.

Khuyến nghị

ASP.NET Core đang nhận được nhiều quan tâm rất lớn của cộng đồng do nó là một framework mã mở. Bản thân Microsoft trong thời gian qua đã tập trung đầu tư cho ASP.NET Core và khuyến nghị chuyển đổi sang framework này, nhất là đối với các project mới. Các project cũ cũng có thể chuyển đổi sang ASP.NET Core.

Ở Việt Nam, các công ty đang dần chuyển hướng sang công nghệ này. Vì vậy, nhu cầu đối với ASP.NET Core đang khá lớn và dần tăng lên.

Việc học ASP.NET Core hiện nay là phù hợp. Ngoài ra, Asp.net Core cũng rất dễ học nếu đã quen thuộc với ASP.NET.

Bonus: giới thiệu một số framework khác cho phát triển ứng dụng web

Ở trên chúng ta vừa nhắc tới các framework (programming model) cho phát triển ứng dụng web thông dụng nhất. Trên nền Asp.net hoặc asp.net core còn có những framework/model rất tốt khác nữa.

Asp.net Web Pages

Asp.net Web Pages là một framework đơn giản gọn nhẹ xây dựng bên trên Asp.net giúp xây dựng các trang web động. Cách thức hoạt động của Web Pages rất gần gũi với các trang web động viết bằng PHP hoặc ASP cổ điển (giờ đã ngừng hỗ trợ). Khác biệt lớn nhất là sử dụng code C# kết hợp với HTML.

Cú pháp kết hợp C# và HTML được gọi là Razor. Đây cũng là loại cú pháp được sử dụng để xây dựng thành phần View của mô hình MVC.

Web Pages rất dễ học nếu bạn đã biết C#. Mô hình lập trình này cũng rất đơn giản và phù hợp với các project cỡ nhỏ (không cần đến sự phức tạp của MC).

Khi đã biết Web Pages bạn cũng rất dễ dàng chuyển tiếp sang học MVC (vì bạn đã biết làm thành phần View).

Hiện nay Microsoft khuyến khích sử dụng Razor Pages (xây dựng trên Asp.net Core) thay cho Web Pages.

Blazor

Blazor là một loại framework mới đưa vào ASP.NET Core hướng tới xây dựng thành phần web client (thay vì thành phần server như các framework bên trên).

Blazor giúp xây dựng thành phần client (native) cho ứng dụng web đơn trang (Single Page Application, SPA) nhưng sử dụng C# thay cho JavaScript.

Hiện nay Blazor có hai mô hình: Blazor ServerBlazor WebAssembly. Đây là những framework rất đáng học nhưng hiện chưa có nhu cầu lao động (vì quá mới, Blazor Server xuất hiện từ giữa 2019 còn Blazor WebAssembly chưa chính thức xuất bản).

Razor Pages

Razor Pages có thể xem như phiên bản Web Pages trên ASP.NET Core và được Microsoft khuyến khích sử dụng. Razor Pages có cùng mô hình làm việc như Web Pages.

Bạn có thể sử dụng Razor Pages khi thực hiện các dự án nhỏ chưa cần đến sự phức tạp của MVC.

Giống như với Web Pages, Razor Pages cũng có thể xem như là thành phần View của MVC. Do đó bạn rất dễ dàng chuyển tiếp sang MVC nếu dự án tiếp tục mở rộng.

Bạn cũng nên bắt đầu với Razor Pages nếu mới chuyển sang ASP.NET Core, sau đó tiếp tục học MVC. Đường đi này sẽ dễ dàng hơn cho bạn.

SignalR

SignalR là một bộ thư viện giúp server gửi thông báo bất đồng bộ theo thời gian thực tới web client. Hiểu một cách đơn giản, nếu có dữ liệu mới xuất hiện trên server, server có thể trực tiếp đẩy dữ liệu này cho client mà không cần chờ client phát truy vấn dữ liệu.

Thư viện SignalR giúp xây dựng các ứng dụng web có tính tương tác cao theo thời gian thực và thay đổi hoàn toàn mô hình request/response của ứng dụng web truyền thông.

Bộ thư viện này bao gồm thành phần server chạy trên Asp.net và thành phần client là một thư viện JavaScript.

SignalR được sử dụng để truyền thông tin trong Blazor Server.

ADO.NET – làm việc với cơ sở dữ liệu

ADO.NET có vai trò đặc biệt quan trọng trong phát triển mọi loại ứng dụng trên .NET Framework.

ADO.NET đóng vai trò trung gian giúp ứng dụng kết nối và làm việc với các hệ quản trị cơ sở dữ liệu quan hệ (như SQL Server, MySQL). ADO.NET cũng cho phép ứng dụng kết nối với các nguồn dữ liệu khác (như OLE DB, ODBC).

Trong các chương trình đào tạo cấp độ đại học, sinh viên học môn Cơ sở dữ liệu thường được giới thiệu hai hệ quản trị thông dụng là SQL Server và MySQL. SQL Server được ADO.NET hỗ trợ trực tiếp và được khuyến nghị sử dụng nếu phát triển ứng dụng trên .NET Framework. MySQL được hỗ trợ thông qua connector của bên thứ ba.

Sau khi hoàn thành học .NET căn bản gần như bắt buộc phải chuyển tiếp sang ADO.NET.

Entity Framework

Làm việc trực tiếp với ADO.NET đối với các project lớn với rất nhiều lớp là một công việc tẻ nhạt và dễ mắc lỗi. Ví dụ, ứng với mỗi lớp thực thể người lập trình phải lặp lại việc viết và xử lý 4 loại truy vấn cơ bản (Create, Retrieve, Update, Delete – gọi chung là CRUD).

Để đơn giản hóa các công việc này, Microsoft tạo ra Entity Framework trên nền của ADO.NET. Entity Framework là một ORM (Object – Relational Mapping), cho phép ánh xạ giữa các object (của một class trong chương trình) với các bản ghi của một bảng cơ sở dữ liệu và ngược lại.

Nhờ Entity Framework, lập trình viên hoàn toàn không cần quan tâm đến ngôn ngữ SQL. Lập trình với cơ sở dữ liệu hoàn toàn là xử lý các object quen thuộc của ngôn ngữ lập trình. Toàn bộ các thao tác như tạo cơ sở dữ liệu, tạo bảng, CRUD giờ do Entity Framework chịu trách nhiệm.

Entity Framework hoạt động được trên cả .NET Framework và .NET Core. Ngoài ra, bạn cũng có thể sử dụng Entity Framework Core – một ORM mới của Microsoft.

ADO.NET hay Entity Framework?

Câu trả lời là: phải học cả hai, nhưng mức độ chuyên sâu khác nhau.

ADO.NET là công nghệ nền tảng của Entity Framework. Việc học ADO.NET là cần thiết để hiểu cách thức làm việc với cơ sở dữ liệu nói chung. Tuy nhiên, ADO.NET cũng rất rộng và bao gồm nhiều thành phần hỗ trợ cho từng loại công nghệ cụ thể. Sinh viên không nhất thiết phải học hết.

Nên học ADO.NET ở mức độ cơ bản để hiểu những gì diễn ra khi làm việc với cơ sở dữ liệu quan hệ. Các chủ đề sâu hơn như vận dụng trong các loại công nghệ khác nhau thì không cần.

Entity Framework, ở phía ngược lại, là bắt buộc phải học và thành thạo để có thể ứng dụng khi viết nhiều loại phần mềm khác nhau. Cả ứng dụng desktop và ứng dụng web hiện nay đều sử dụng Entity Framework rất nhiều.

Entity Framework không phải là ORM duy nhất trong .NET Framework. Một ORM khác được sử dụng rất nhiều là NHibernate, phiên bản Hibernate cho .NET. Đây cũng là một công cụ rất đáng đầu tư thời gian học và nhiều công ty sử dụng.

Ngoài ra, Microsoft cũng phát hành một ORM mới – Entity Framework Core. Mặc dù gần gũi với Entity Framework nhưng đây là một ORM được xây dựng mới từ đầu.

KẾT LUẬN

Trong loạt hai bài này chúng ta đã nhắc tới những công nghệ Microsoft phổ biến nhất ở Việt Nam dành cho phát triển ứng dụng. Lưu ý rằng đây chỉ là những thông tin chung nhất mang tính chất giới thiệu, làm xuất phát điểm để các bạn tiếp tục tìm hiểu và đưa ra định hướng của riêng mình.

Hy vọng rằng chút thông tin này sẽ giúp ích cho bạn.

Chúc bạn thành công!

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ề