.NET Core - Thực thi mã
Trong chương này, chúng ta sẽ hiểu quá trình thực thi của .NET Core và so sánh nó với .NET Framework. Quá trình thực thi được quản lý bao gồm các bước sau.
- Chọn một trình biên dịch
- Biên dịch mã của bạn sang MSIL
- Biên dịch MSIL sang mã gốc
- Đang chạy mã
Chọn một trình biên dịch
Nó là một môi trường thực thi đa ngôn ngữ, thời gian chạy hỗ trợ nhiều kiểu dữ liệu và tính năng ngôn ngữ.
Để có được những lợi ích do thời gian chạy ngôn ngữ chung cung cấp, bạn phải sử dụng một hoặc nhiều trình biên dịch ngôn ngữ nhắm mục tiêu thời gian chạy.
Biên dịch mã của bạn sang MSIL
Biên dịch sẽ dịch mã nguồn của bạn sang Ngôn ngữ Trung cấp của Microsoft (MSIL) và tạo siêu dữ liệu cần thiết.
Siêu dữ liệu mô tả các loại trong mã của bạn, bao gồm định nghĩa của từng loại, chữ ký của các thành viên của mỗi loại, các thành viên mà mã của bạn tham chiếu và dữ liệu khác mà thời gian chạy sử dụng tại thời điểm thực thi.
Thời gian chạy định vị và trích xuất siêu dữ liệu từ tệp cũng như từ các thư viện lớp khung (FCL) nếu cần trong quá trình thực thi.
Biên dịch MSIL thành mã gốc
Tại thời điểm thực thi, trình biên dịch đúng lúc (JIT) sẽ dịch MSIL thành mã gốc.
Trong quá trình biên dịch này, mã phải vượt qua quá trình xác minh kiểm tra MSIL và siêu dữ liệu để tìm hiểu xem mã có thể được xác định là loại an toàn hay không.
Chạy mã
Thời gian chạy ngôn ngữ chung cung cấp cơ sở hạ tầng cho phép thực hiện diễn ra và các dịch vụ có thể được sử dụng trong quá trình thực thi.
Trong quá trình thực thi, mã được quản lý nhận được các dịch vụ như thu gom rác, bảo mật, khả năng tương tác với mã không được quản lý, hỗ trợ gỡ lỗi đa ngôn ngữ cũng như hỗ trợ triển khai và lập phiên bản nâng cao.
Quy trình thực thi mã lõi .NET
Bây giờ hãy liên hệ cách mã thực thi với .NET Core so với .NET Framework. Trong .NET Core có nhiều thay thế các thành phần này là một phần của .NET Framework.
Trong .NET Core bây giờ chúng ta có một loạt trình biên dịch mới, giống như chúng ta có Roslyn cho C # và VB.
Bạn cũng có thể sử dụng trình biên dịch F # 4.1 mới nếu bạn muốn sử dụng F # với .NET Core.
Trên thực tế, các công cụ này khác nhau và chúng ta có thể sử dụng Roslyn với .NET Framework nếu chúng ta đang sử dụng C # 6 trở lên, vì trình biên dịch C # chỉ có thể hỗ trợ tối đa C # 5.
Trong .NET Core, chúng tôi không có thư viện lớp khung (FCL), do đó, một bộ thư viện khác được sử dụng và bây giờ chúng tôi có CoreFx.
CoreFx là sự hoàn thiện lại các thư viện lớp cho .NET Core.
Chúng tôi cũng có thời gian chạy mới với .NET Core được gọi là CoreCLR và sử dụng Trình biên dịch JIT.
Bây giờ câu hỏi đặt ra là tại sao chúng ta lại thực hiện lại tất cả các thành phần này mà chúng ta đã có trong .NET framework.
Vì vậy, câu trả lời cũng giống như lý do tại sao Microsoft triển khai .NET Core.