Tính năng mới của từng phiên bản .NET Framework

Tính năng mới của từng phiên bản .NET Framework
5 (100%) 1 vote[s]

.NET Framework.NET Framework là một trong những framework được sử dụng rất rộng rãi hiện nay để xây dựng các ứng dụng trong hệ sinh thái của Microsoft. Cùng với thời gian .NET framework ngày càng lớn lên và bổ sung rất nhiều tính năng vào mỗi phiên bản. Điều này đôi khi làm khó lập trình viên vì không cập nhật kịp dẫn đến là đi viết lại những thứ đã tồn tại trong framework (đây cũng là một trong những lý do mà rất nhiều lập trình viên Java ko thích .NET).

Vì vậy trong bài viết này chúng ta sẽ cùng điểm qua những tính năng mới qua từng phiên bản .NET framework để có một cái nhìn tổng quát về framework này.

.NET 1.0

Common Language Runtime

Tính năng quan trọng nhất trong .NET framework đó chính là khả năng tạo ứng dụng sử dụng nhiều ngôn ngữ khác nhau. Tăng khả năng sử dụng lại (reuse) code. VD: Trong cùng một ứng dụng có thể module này được viết bằng C# nhưng module kia lại viết bằng VB.NET, C++…

Để làm được điều này thì tất cả ngôn ngữ mà .NET hỗ trợ (ước chừng gần 50 ngôn ngữ) đều được biên dịch thành ngôn ngữ trung gian (IL) và sau đó IL mới được dịch thành ngôn ngữ máy. Tốc độ thực thi ứng dụng .NET khá nhanh, chỉ chậm hơn khoảng 5% so với ngôn ngữ máy và như ta đã thấy ở trên lợi ích mà .NET mang lại rất lớn.

Garbage Collector

Trình dọn rác (GC) đảm bảo việc quản lý bộ nhớ trong ứng dụng .NET một cách tự động, nó giúp cho lập trình viên không còn phải quan tâm đến quản lý bộ nhớ thủ công như khi viết các ứng dụng C++ trước đây nữa (Tất nhiên điều này không phải tuyệt đối đúng – chúng ta sẽ bàn sâu hơn về vấn đề này ở các bài viết sau nói về quản lý bộ nhớ trong .NET). Ngoài ra kể từ .NET 4 GC được xử lý ở các thread riêng biệt vì vậy hiệu năng của ứng dụng .NET được tăng cường đáng kể.

ADO.NET

ADO (ActiveX Data Objects) là một phần của COM (Component Object Model) dùng để truy cập các nguồn dữ liệu (Xem thêm về COM trong bài viết Cơ bản về .NET). ADO.NET là một bước tiến lớn so với ADO nhưng nó không có gì chung với ADO ngoại trừ cái tên J. Nói một cách ngắn gọn ADO.NET là một tập các API nằm trong namespace System.Data dùng để truy cập cơ sở dữ liệu. Các hệ quản trị cơ sở dữ liệu khác nhau như MS SQL, Oracle, DB2… sẽ cung cấp các provider ADO.NET khác nhau để làm việc với cơ sở dữ liệu tương ứng.

String

Trong .NET thì chỉ có duy nhất một kiểu string được dùng để mô tả giá trị chuỗi. Chuỗi được biểu diễn dưới định dạng UTF-8 và trong bộ nhớ chỉ tồn tại một thể hiện (instance). Mỗi khi chúng ta trích xuất một chuỗi con từ chuỗi ban đầu thì sẽ xuất hiện một instance mới chứ không phải thay đổi chuỗi ban đầu (đặc tính của kiểu immutable type)

.NET 1.1

Regular Expressions

Biểu thức chính quy cung cấp một kỹ thuật mạnh mẽ, linh hoạt và rất hiệu quả cho việc xử lý chuỗi. Bất cứ khi nào bạn cần lấy một chuỗi con từ một chuỗi cho trước, hãy nghĩ ngay đến việc sử dụng biểu thức chính quy. Lý thuyết về biểu thức chính quy trông có vẻ phức tạp lúc mới tiếp cận nhưng nó thực sự rất đáng giá khi nắm được. Chúng ta sẽ nghiên cứu về biểu thức chính quy trong các bài viết sau.

XML Processing

Lớp XmlDocument trong namespace System.Xml cung cấp các API để phân tích và đọc các tài liệu XML. Nó cũng cung cấp ngôn ngữ XPath dùng để trích xuất dữ liệu từ tài liệu XML.

HttpUtility

HttpUtility là một lớp rất quan trọng dùng để mã hóa và giải mã tham số URL khi xử lý các web request. Đặc biệt nó có một phương thức vô cùng hữu dụng – HtmlDecode dùng để thay các thẻ HTML bằng các kí tự Unicode tương ứng (phòng tránh các lỗi bảo mật như XSS, SQL Injection…)

String Builder

Một lớp hữu dụng khi xử lý việc kết hợp nhiều chuỗi (thường khi kết hợp lớn hơn 3 chuỗi), đặc biệt là khi kết hợp chuỗi trong vòng lặp lớn bởi vì kiến trúc bên trong String Builder dùng mảng kí tự và đã được Microsoft tối ưu hóa về hiệu năng.

.NET 2.0

Generics

Các thuật toán Generic được trừu tượng hóa và yêu cầu thành phần kiểu. Thành phần này có thể được mô tả bởi interface hoặc lớp trừu tượng (abstract class). VD: Generic IEnumerable<T> là một tập các object kiểu T. Generic rất hữu ích khi chúng ta cần viết những lớp chung như lớp base hoặc các phương thức dùng chung an toàn về kiểu.

Event Log

EventLog là hệ thống ghi nhật ký thống nhất trên Windows. Thay vì quản lý việc tạo ra và xóa các file log hoặc lọc và phân loại dữ liệu log thì chúng ta có thể sử dụng lớp EventLog với các API được cấp sẵn để thay thế.

Configuration Manager

Lớp ConfigurationManager chứa chuỗi kết nối và các hằng số bạn muốn thay đổi lúc chạy ứng dụng mà không phải biên dịch lại ứng dụng. VD: Trong ứng dụng Winform thì là file App.config còn ứng dụng ASP.NET là web.config.

Nullable Types

Trong .NET có 2 kiểu dữ liệu là kiểu giá trị (Value Type) và kiểu tham chiếu (Reference Type). Kiểu giá trị là các kiểu cơ sở của .NET: int, long, byte, bool, short, char, structure… Kiểu tham chiếu là các đối tượng. (Chúng ta sẽ tìm hiểu kỹ hơn về 2 kiểu dữ liệu này ở các bài viết sau)

Kiểu tham chiếu với giá trị null mang ý nghĩa là không chỉ đến đối tượng nào. Với kiểu giá trị có trường hợp khi lấy dữ liệu từ SQL Server một trường BIT có thể mang giá trị là true, false hoặc undefined vì vậy cần kiểu nullable để tương thích. VD khai báo kiểu giá trị nullable: int? x = null;

.NET 3.0

XAML (Silverlight/WPF/Windows Phone/Windows RT)

XAML cho phép chúng ta vẽ các giao diện ứng dụng giống như sử dụng HTML. Cách vẽ giao diện qua việc khai báo thẻ như HTML có khá nhiều ưu điểm mà nổi bật trong số đó chính là binding – một thành phần không thể thiếu của mô hình phát triển ứng dụng MVVM. Bên cạnh đó XAML được tăng tốc bởi GPU nên hiệu năng của ứng dụng khá tốt. XAML được áp dụng để thiết kế giao diện chính cho hầu hết các loại ứng dụng của Microsoft như: WPF/Silverlight/Windows Phone/Windows RT.

WCF services

Web service giúp cho việc gọi các phương thức từ server trở nên dễ dàng hơn cho client. Trong .NET 3.0 Web services được chuẩn hóa thành WCF services với nhiều tính năng cao cấp hơn so với web service thông thương trong .NET 2.0

Workflow

Workflow là một mô hình các hành động (activity). Các hoạt động này có thể là bất kỳ thứ gì từ tiến trình nghiệp vụ cho đến tiến trình build ứng dụng của Team Foundation Server. Ưu điểm của Workflow là các hành động được định nghĩa bởi XAML nên nó dễ dàng thay đổi bởi file cấu hình mà không cần phải biên dịch lại ứng dụng.

Feed processing

Lớp SyndicationFeed hỗ trợ định dạng syndication RSS 2.0 và Atom 1.0

.NET 3.5

Language Integrated Query (LINQ)

LINQ là một trong những ngôn ngữ cách mạng cho việc xử lý dữ liệu, nó giống như SQL cho lập trình hướng đối tượng. Tất cả những store procedure được viết trong SQL Server thì giờ chúng ta hoàn toàn có thể viết trên code .NET, hết sức tiện lợi trong việc viết cũng như debug. Tuy nhiên nhược điểm khi sử dụng LINQ là hiệu năng sẽ thấp hơn so với khi sử dụng store procedure.

Entity Framework

Khi sử dụng LINQ thì một thành phần không thể thiếu đó chính là Entity Framework. Một framework giúp chúng ta có thể mapping được ngay các bảng trong SQL server thành các đối tượng .NET để LINQ có thể sử dụng được.

XML processing

Với sự xuất hiện của LINQ và lớp Xdocument trong namespace System.Xml.Linq việc xử lý XML trở nên dễ dàng, tiện lợi với hiệu năng cao hơn.

Reactive Extensions (Rx)

Rx là một thư viện dùng tạo các chương trình asynchronous dựa trên sự kiện và sử dụng oservable collection + LINQ để truy vấn. Rx được tạo ra để làm việc với data stream.

.NET 4.0

Managed Extensibility Framework (MEF)

MEF cho phép sử dụng các assembly (.dll) như là các module. Khi bạn cần tạo ra các hệ thống module hóa MEF sẽ đảm bảo việc kết nối giữa các module này.

Parallel Extensions (PE)

PE bao gồm Parallel LINQ (PLINQ) và Task Parallel Library (TPL). Khi bạn có nhiều việc cần làm thì có thể chọn hướng tiếp cận dựa trên task. Chia nhỏ công việc thành các việc nhỏ hơn và chạy chúng khi cần. Có thể chạy tuần tự hoặc song song mà không cần quan tâm đến việc quản lý thread. Lớp Parallel sẽ đảm nhận việc đếm xem có bao nhiêu bộ vi xử lý để chọn số thread hiệu quả nhất.

Dynamic Language Runtime

Bạn có thể dùng kiểu dynamic khi cần tương tác với môi trường thiếu kiểu, ngôn ngữ động… VD: Nó sẽ rất hữu ích khi tương tác với môi trường COM vì nó không cung cấp IntelliSense

Lazy initialization

Khi chương trình chứa đối tượng chiếm nhiều thời gian để khởi tạo mà đối tượng này có thể không được dùng trong suốt chương trình thì chúng ta có thể dùng khởi tạo muộn Lazy<T>, đối tượng sẽ chỉ được khởi tạo khi truy cập nó lần đầu tiên

.NET 4.5

Asynchronous Pattern

Lập trình bất đồng bộ có thể thực hiện từ các phiên bản .NET trước nhưng phải đến .NET 4.5 với sự xuất hiện của async/await thì nó mới thực sự trở nên đơn giản với lập trình viên. Với .NET trước đây khi thread đợi server trả lời, nó không làm gì những vẫn tiêu tốn tài nguyên máy. Với async/await điều này không còn xảy ra vì nó thực sự không tạo ra thread mới khi thực hiện các lời gọi async.

.NET Framework

Bài viết này đã tóm lược lại các tính năng chính trong từng phiên bản .NET. Hy vọng với những thông tin này bạn sẽ có một cái nhìn tổng quan về .NET framework.

Trong các bài viết tới chúng ta sẽ cùng đi sâu hơn vào từng tính năng của .NET Framework.

Happy sharing. Stay tuned.

Comments

    • tungnt185 says

      Chào Anh,

      Rất vui vì bài viết hữu ích với em.
      Hãy chia sẻ cho bạn bè và subscribe blog để ủng hộ anh nhé.

      Regards.

  1. vu dinh dung says

    Em chào anh !!!
    Hi vọng khi có thời gian rảnh anh có thể viết một bài kỹ hơn về async/await được không ạ ?
    Em cảm ơn anh.

  2. Trần Trung Hiếu says

    Cảm ơn anh, bài viết hay quá.

    Hi vọng anh cập nhập bài viết với các phiên bản .net sau 😉

Leave a Reply to nguyenanhpx Cancel reply

Your email address will not be published. Required fields are marked *

Website này sử dụng Akismet để hạn chế spam. Tìm hiểu bình luận của bạn được duyệt như thế nào.