Common Language Runtime
Trung tâm của .NET framework là môi trường thời gian chạy, gọi là Common Language
Runtime (CLR) hoặc .NET runtime. Mã của các điều khiển trong CLR thường là mã có
quản.
Tuy nhiêu, trước khi được thực thi bởi CLR, mã được phát triển trong C# (hoặc các ngôn
ngữ khác) cần phải được biên dịch.Quá trình biên dịch trong .NET xảy ra theo hai bước:
1. Dịch mã nguồn thành Microsoft Intermediate Language (MS-IL)
2. Dịch IL thành mã nền cụ thể bởi CLR
Mới nhìn có vẻ hơi dài dòng. Như
ng thật sự, một tiến trình dịch hai mức là rất cần thiết,
bởi vì trạng thái của Microsoft Intermediate Language (mã có quản) là chìa khóa cung
cấp nhiều lợi ích trong .NET.
Các lợi ích của mã có quản
Microsoft Intermediate Language (thường được viết tắt là"Intermediate Language", hay
"IL") tương tự như ý tưởng về mã Java byte, nó là một ngôn ngữ cấp thấp với những cú
pháp đơn giản (dựa trên cơ sở mã số hơn là text), chính điều này sẽ làm cho quá trình
dịch sang mã máy nhanh hơn. Hi
ểu kĩ các cú pháp này sẽ mang lại những lợi ích đáng kể.
Độc lập nền
Trước tiên, nó có nghĩa là các file chứa mã lệnh có thể chạy trên bất kì nền nào, vào thời
gian chạy trình biên dịch cuối sẽ hoạt động và mã có thể chạy trên một nền cụ thể. Nói
cách khác việc dịch mã nguồn sang Intermediate Language cho phép độc lập nền trong
.NET, nó giống như cách dịch mã nguồn sang Java byte code cung cấp sự độc lập nền
trong Java.
Bạ
n cũng nên biết rằng sự độc lập nền của .NET chỉ là trên lí thuyết bởi vì tại thời điểm
này, .NET chỉ có sẵn trong Windows. Tuy nhiên việc chuyển .NET sang những nền khác
đang được khảo sát tỉ mỉ (xem ví dụ Mono project, một sự cố gắng tạo một thực thi mã
nguồn mở trong .NET, tại địa chỉ />).
Sự cải tiến trong thực thi
quá trình thực thi. Tuy nhiên, IL cũng làm cho tương hoạt giữa các ngôn ngữ trở nên dễ
dàng hơn. Bạn có thể biên dịch IL từ một ngôn, và mã này sau đó có thể tương hoạt với
IL được biên dịch bởi một ngôn ngữ khác.
Bây giờ
chắc bạn đang tự hỏi rằng những ngôn ngữ nào có thể tương tác với C# trong
.NET, hãy xem qua các ngôn ngữ biết .NET phổ biến sau.
VB.NET
Visual Basic đã được tân trang lại để có thể tương thích với công nghệ .NET. Từ việc
phát triển Visual Basic trong những năm gần đây cho thấy rằng trong các phiên bản
trước, Visual Basic 6, nó không tương thích với lập trình .NET. Ví dụ, nó đặt nặng vấn đề
tích hợp COM, và nó chỉ đưa ra các sự kiệ
n để phát triển, hầu hết mã nền không có sẵn
trong mã nguồn. Không những thế, nó không thực sự hỗ trợ tính thừa kế và các kiểu dữ
liệu chuẩn của Visual Basic không tương thích với .NET.
Visual Basic đang được hoàn thiện trong Visual Basic .NET, cũng đừng ngạc nhiên khi
sự thay đổi này xảy ra trên một diện rộng. Về phương diện thực hành bạn có thể xem
VB.NET như là một ngôn ngữ mới. Mã VB 6 không không thể được biên dịch trong như
mã VB.NET. Sự chuyển đổi từ lập trình VB 6 sang VB.NET yêu cầu một sự thay đổi lớn
về mã. Tuy nhiên hầu hết các sự thay đổi này có thể được thực hiện một cách tự động b
ởi
Visual Studio .NET (sự cải tiến của VS cho việc sử dụng .NET). Nếu bạn cố gắng đọc
một đề án VB 6 trong Visual Studio .NET, nó sẽ cải tiến đề án của bạn, có nghĩa là nó sẽ
viết lại mã nguồn VB 6 thành mã nguồn VB.NET. Điều đó có nghĩa là việc này sẽ gặp
rắc rối khi bạn cắt ngang, bạn sẽ phải kiểm tra lại mã VB.NET mới để chắc rằng đề án
của bạn vẫn chạy đúng.
Một hiệu ứng phụ là không còn khả năng biên dịch .NET sang mã thực thi. VB.NET chỉ
biên dịch sang IL, giống như C#. Nếu như bạn muốn tiếp tục mã hóa trong VB 6, bạn có
thể làm như vậy, nhưng khi mã thực thi quá dài nó sẽ lờ đi .NET Framework, và bạn cần
phải giữ lại Visual Studio 6 đã cài đồng thời phải hoàn toàn tin vào môi trường phát triển
trong Visual Studio.
ần phải viết mã nguồn
trong các ngôn ngữ khác (như C# hay VB.NET).
J++ and J#
J++ vẫn được hỗ trợ cho chỉ vì mục đích tương thích trước đây. Microsoft không còn
phát triển bất kì nền tảng nào hỗ trợ việc biện dịch sang máy Java ảo. Thay vì đó,
Microsoft phát triển hai công nghệ tách biệt Java/J++ phát triển bên dưới ngọn cờ JUMP
(Java User Migration Path) và "JUMP trong .NET".
Công nghệ đầu tiên là Visual J#. Về bản chất nó được thêm vào Visual Studio.NET để
cho phép bạn viết và biên dịch mã J++. S
ự khác biệt đó là thay vì biên dịch sang một
Java Virtual Machine, J# sẽ biên dịch sang IL, vì vậy nó sẽ hoạt động như là một ngôn
ngữ của .NET. Ngừơi dùng J# sẽ có thể được hưởng các thuận lợi của các đặc tính của
VS.NET. Microsoft tin răng người dùng J++ sẽ nhanh chóng nhận ra điều đó nếu họ thích
làm việc trong với .NET.
Sự lựa chọn thứ hai là công cụ tự động hỗ trợ việc chuyển mã J++ sang mã C#. Sự gi
ống
nhau giữa J++ và C# làm cho việc chuyển đổi này trở nên dễ dàng hơn.
Không giống như J# cũng không như các công cụ chuyển đổi ngôn ngữ có sẵn như là một
phần của .NET hay trong Visual Studio. NET, thay vì thế nó được cung cấp riêng. Để
biết thêm thông tin liên hệ />
Scripting languages
Scripting languages đâu đó vẫn còn tồn tại, dù rằng về mặt tổng quát, tầm quan trọng của
chúng đã giảm sút cùng với sự ra đời của .NET. JScript, được cải tiến lên JScript.NET.
ASP.NET (một cải tiến từ ASP dành cho .NET, giải thích sau) các trang có thể được viết
bằng JScript.NET, và bây giờ nó có thể chạy trên JScript.NET như là một ngôn ngữ biên
dịch hơn là một ngôn ngữ thông dịch và nó có thể tạo ra các mã kiểu mã JScript.NET
mạnh hơn. V
ới ASP.NET không có lí do gì để dùng scripting languages trên cac trang
web server-side. VBA vẫn được sử dụng như là một ngôn ngữ cho Microsoft Office và
Visual Studio macros.