Ngày nay .NET Framework đã trở thành một trong công nghệ được sử dụng rộng rãi trên toàn thế giới. Theo số liệu thống kê không chính thức thì số lượng lập trình viên sử dụng ngôn ngữ C# của .NET cũng rơi vào khoảng 6 triệu. Đây là một sự tăng trưởng cực kỳ nhanh nếu như chúng ta biết rằng .NET mới chỉ ra đời được hơn 10 năm. Điều đấy cũng cho thấy mức độ hấp dẫn của .NET đối với lập trình viên lớn như thế nào.
.NET framework cùng với hệ sinh thái Microsoft đã phát triển rất nhanh với tất cả các công nghệ có thể giúp lập trình viên xây dựng nên các ứng dụng mất ít thời gian nhất, nó có thể giúp xây dựng từ ứng dụng chạy trên desktop cho đến ứng dụng web và gần đây là cả ứng dụng mobile/tablet. Cách xây dựng ứng dụng bằng .NET tương đối dễ dàng và tiện lợi so với các công nghệ khác vì Microsoft đã làm rất tốt phần việc của mình khi giúp cho lập trình viên không còn phải can thiệt và hiểu quá sâu về hệ thống và cách thức hoạt động của .NET.
Tuy nhiên, để có thể nắm vững và sử dụng hiệu quả .NET, tránh những lỗi khó xử lý thì chúng ta cần phải hiểu được kiến trúc của .NET cũng như cách thức hoạt động của nó. Vì vậy trong thời gian tới chúng ta sẽ cùng thảo luận xoay quanh chủ đề này.
Bài viết đầu tiên này là giới thiệu cơ bản về .NET và các công nghệ tiền thân của nó để giúp chúng ta có một cái nhìn tổng quan hơn về các công nghệ Microsoft.
Công nghệ OLE
OLE (Object Linking and Embedding) là công nghệ ra đời đầu tiên của Microsoft trong những năm 90 để đơn giản hóa việc giao tiếp giữa các ứng dụng. Chúng hỗ trợ:
- Nhúng tài liệu từ một ứng dụng sang ứng dụng khác
- Cho phép một ứng dụng chỉnh sửa các đối tượng trong ứng dụng khác
OLE cho phép người dùng phát triển ứng dụng yêu cầu liên kết giữa các sản phẩm khác nhau VD: Word hay Excel.
Công nghệ COM
Trước khi COM xuất hiện cách phát triển phần mềm thông thường là xây dựng thành một khối duy nhất. Thế nhưng khi chương trình lớn và phức tạp dần lên thì cách làm này dẫn tới một số vấn đề về bảo trì và kiểm thử phần mềm. Để giải quyết vấn đề này Microsoft đã tiến tới mô hình dựa trên các thành phần để phát triển phần mềm. Cách này đơn giản là chia phần mềm thành các module (các thành phần độc lập) mà mỗi module sẽ cung cấp một dịch vụ cụ thể. Mỗi module này có thể kiểm thử và phát triển độc lập sau đó tích hợp vào phần mềm chính. Kỹ thuật này được gọi là mô hình đối tượng dựa trên thành phần COM (Component Object Model).
Mô hình này giúp cho việc phát triển phần mềm linh hoạt hơn:
- Giảm độ phức tạp của toàn bộ phần mềm
- Cho phép phát triển các module phân tán giữa nhiều nhóm, phòng ban…
- Tăng khả năng bảo trì phần mềm
Công nghệ .NET
Công nghệ .NET là mô hình dựa trên thành phần thế hệ thứ 3. Nó nâng cấp cách thức liên kết giữa các thành phần trong hệ thống so với công nghệ COM. Trong khi COM cung cấp một cơ chế nhị phân chuẩn để giao tiếp giữa các module thì .NET thay thế cơ chế này bởi một ngôn ngữ trung gian gọi là Microsoft Intermediate Language (MSIL) hay IL. Các trình biên dịch .NET khác nhau sẽ dịch code của các module thành mã IL nên sẽ tự động tương thích với các IL của module khác.
IL code có một thuộc tính là metadata: data về các dữ liệu và mô tả thuộc tính của nó: kiểu và vị trí. IL giúp cho việc tích hợp giữa các ngôn ngữ khác nhau trở nên dễ dàng. Ngoài IL, .NET còn bao gồm một loạt các công nghệ và công cụ khác giúp cho chúng ta phát triển và xây dựng các ứng dụng dễ dàng hơn. Chúng ta sẽ cùng xem qua bên dưới đây.
Cơ bản về .NET Framework
Đây là môi trường giúp cho việc xây dựng, phát triển và chạy các ứng dụng trên nền .NET, bao gồm tất cả các loại ứng dụng: Windows Form, Web, Siverlight, WPF, Windows Phone…
.NET Framework bao gồm 3 công nghệ khác nhau:
- Common Language Runtime(CLR)
- Các lớp cơ sở của framework (Framework Based Classes – FBC)
- Các giao diện chương trình (Web, Winform, Windows Phone …)
Common Language Runtime (CLR)
CLR được coi như trái tim và linh hồn của .NET Framework. CLR như tên ám chỉ cung cấp một môi trường thực thi nơi mà các ứng dụng viết bằng .NET (C#, VB.NET, C++…) có thể chạy được.
CRL cung cấp một số dịch vụ như sau:
- Nạp và thực thi chương trình
- Phân chia vùng nhớ của ứng dụng
- Xác minh tính an toàn của kiểu dữ liệu
- Dịch mã IL thành mà máy thực thi được
- Cung cấp metadata
- Quản lý bộ nhớ tự động (automatic garbage collection)
- Thực thi bảo mật
- Quản lý lỗi và ngoại lệ
- Hỗ trợ các công việc như debug hoặc profile ứng dụng
- Liên kết với các hệ thống khác
Common Type System (CTS)
.NET framework hỗ trợ nhiều ngôn ngữ và đều dùng một thành phần gọi là hệ thống kiểu chung CTS trong CLR. CTS hỗ trợ một loạt kiểu và toán tử có thể thấy trong hầu hết các ngôn ngữ lập trình nên gọi một ngôn ngữ từ một ngôn ngữ khác sẽ không yêu cầu chuyển kiểu. Dẫn đến chúng ta có thể xây dựng các ứng dụng .NET sử dụng cả ngôn ngữ VB.NET lẫn C#, C++…
Common Language Specification (CLS)
Đặc tả ngôn ngữ chung CLS là một tập con của CTS, nó định nghĩa một tập các quy tắc cho phép liên kết hoạt động trên nền tảng .NET. Các quy tắc này sẽ trợ giúp và chỉ dẫn cho các nhà thiết kế compiler của hãng thứ 3 hoặc những người muốn xây dựng thư viện dùng chung.
Microsoft Intermediate Language (MSIL)
MSIL hay còn gọi IL là một tập lệnh mà tất cả các chương trình .NET được biên dịch thành. Nó trông hơi giống ngôn ngữ assembly và nó chứa các lệnh để nạp, lưu trữ, khởi tạo, gọi các phương thức trong chương trình. Khi chúng ta biên dịch một chương trình C# hoặc bất kỳ chương trình nào được viết bởi ngôn ngữ tuân theo CLS thì mã của nó sẽ là IL.
Managed Code
CLR chịu trách nhiệm quản lý việc thực thi mã được biên dịch trên nền tảng .NET. Mã chạy được trên môi trường thực thi CLR được gọi là managed code. Trình biên dịch tương thích với nền tảng .NET sẽ tạo ra managed code. Managed code được tạo bởi C# chính là IL code.
Trong bài viết này chúng ta đã cùng tìm hiểu về các công nghệ trước khi .NET xuất hiện cũng như tìm hiểu tổng quan về .NET framework, mà trong đó thành phần quan trọng nhất được xem như trái tim và linh hồn của .NET chính là CLR. Trong các bài viết sau chúng ta sẽ cùng đi tìm hiểu sâu hơn về cách thức hoạt động của .NET framework.
Stay tuned.
Happy sharing!
Leave a Reply