Windows Runtime

**Windows Runtime** (**WinRT**) là kiến trúc ứng dụng không cần biết nền tảng được giới thiệu lần đầu tiên trong Windows 8 và Windows Server 2012 năm 2012. WinRT hỗ trợ phát triển trong C++/WinRT (C++ chuẩn), C++/CX (Component Extensions, một ngôn ngữ dựa trên C++), JavaScript-TypeScript, và các ngôn ngữ mã được quản lý C# và Visual Basic.NET (VB.NET). Các ứng dụng WinRT vốn hỗ trợ cả bộ xử lý x86 và ARM, và có thể chạy trong môi trường sandbox để cho phép bảo mật và ổn định cao hơn. Các thành phần WinRT được thiết kế với khả năng tương tác giữa nhiều ngôn ngữ và API, bao gồm các ngôn ngữ gốc, được quản lý và viết kịch bản.

Windows Phone 8.1 dùng một phiên bản Windows Runtime có tên *Windows Phone Runtime*. Nó cho phép phát triển các ứng dụng bằng C# và VB.NET, và các thành phần Windows Runtime trong C++/CX.

## Công nghệ
WinRT được triển khai theo ngôn ngữ lập trình C++ và được thiết kế theo mô hình hướng đối tượng. Tiền thân của nó,, Windows API (Win32 API) được viết chủ yếu bằng C.  Đó là một giao diện lập trình ứng dụng mã (API) không được quản lý dựa trên Mô hình đối tượng thành phần (COM) cho phép giao tiếp từ nhiều ngôn ngữ, cũng như COM. Tuy nhiên, các định nghĩa API được lưu trữ trong các file `.winmd`, được mã hóa theo định dạng ECMA 335 metadata, mà.NET Framework cũng sử dụng với một vài sửa đổi. Định dạng siêu dữ liệu phổ biến này cho phép ít hơn đáng kể chi phí hoạt động khi gọi WinRT từ các ứng dụng.NET, liên quan đến P/Invoke, và cú pháp đơn giản hơn nhiều.
Ngôn ngữ C++/CX (Component Extensions) mới, mượn một số cú pháp C++/CLI, cho phép viết và sử dụng các thành phần WinRT với ít mã hiển thị hơn cho lập trình viên, so với lập trình COM cổ điển trong C ++ và áp đặt ít hạn chế hơn so với C++/CLI về các loại trộn. Các phần mở rộng thành phần của C++/CX chỉ được khuyến nghị sử dụng tại ranh giới API, không dành cho các mục đích khác. C++ thông thường (với đặc tả dành riêng cho COM) cũng có thể được sử dụng để lập trình với các thành phần WinRT, với sự trợ giúp của Windows Runtime C++ Template Library (WRL), tương tự như mục đích mà Active Template Library cung cấp cho COM.

Các ứng dụng WinRT chạy trong hộp cát và cần sự chấp thuận rõ ràng của người dùng để truy cập các tính năng quan trọng của hệ điều hành và phần cứng cơ bản. Quyền truy cập file bị giới hạn ở một số vị trí được xác định trước, chẳng hạn như thư mục  Documents or Pictures.

Các ứng dụng WinRT cho Windows RT, Windows 8 trở lên được đóng gói ở định dạng file `.appx`; dựa trên Open Packaging Conventions, nó dùng một định dạng ZIP với các tệp XML được thêm vào. Các ứng dụng WinRT được phân phối chủ yếu thông qua một cửa hàng ứng dụng có tên Microsoft Store, nơi phần mềm WinRT (được gọi là ứng dụng Windows Store) có thể được người dùng tải xuống và mua. Các ứng dụng WinRT chỉ có thể được tải từ bên ngoài Windows Store trên các hệ thống Windows 8 hoặc RT là một phần của miền Windows hoặc được trang bị khóa kích hoạt đặc biệt thu được từ Microsoft.

Trong một sự khởi đầu lớn từ Win32 và tương tự như.NET Framework 4.5, hầu hết các API dự kiến sẽ mất nhiều thời gian để hoàn thành đều được triển khai dưới dạng không đồng bộ . Ứng dụng gửi lệnh gọi API, trả về ngay lập tức, giải phóng ứng dụng để thực hiện các tác vụ khác trong khi chờ kết quả. Mô hình không đồng bộ yêu cầu các cấu trúc ngôn ngữ lập trình mới (từ khóa `async` và toán tử `await` trong C # và Visual Basic, class `task` và method `.then` trong C++, được cung cấp bởi bộ phát triển phần mềm WinRT (SDK), từ khóa `promise` và function `then` JavaScript- HTML5), tương tự như `try`/`catch` dùng trong xử lý ngoại lệ.Các phần của API cần truy cập không đồng bộ bao gồm các tin nhắn và hộp thoại trên màn hình, truy cập file, kết nối Internet, ổ cắm, luồng, thiết bị và dịch vụ và lịch, danh bạ và cuộc hẹn.

## Dịch vụ

### Metadata

## Windows Phone Runtime
Bắt đầu từ Windows Phone 8 có thể phát triển các ứng dụng bằng phiên bản Windows Runtime có tên *Windows Phone Runtime* (WPRT). Mặc dù WP8 mang đến sự hỗ trợ hạn chế, nền tảng cuối cùng đã hội tụ với Windows 8.1 trong Windows Phone 8.1.

### Windows Phone 8
Windows Phone 8 đã hỗ trợ hạn chế để phát triển và tiêu thụ các thành phần Windows Runtime thông qua *Windows Phone Runtime*. Nhiều API Windows Runtime trong Windows 8 xử lý các chức năng hệ điều hành cốt lõi đã được port sang Windows Phone 8. Hỗ trợ phát triển trò chơi gốc bằng C++/CX và DirectX đã được thêm vào, theo yêu cầu từ ngành công nghiệp phát triển trò chơi.

Tuy nhiên, Windows Phone XAML Framework vẫn dựa trên cùng một framework Microsoft Silverlight, như trong Windows Phone 7, để tương thích ngược. Do đó, , việc phát triển bằng XAML là không thể trong C++/CX. Phát triển bằng HTML5 hoặc WinJS không được hỗ trợ trên Windows Phone 8.

### Windows Phone 8.1
Hỗ trợ Windows Runtime trên Windows Phone 8.1 hội tụ với Windows 8.1. Bản phát hành mang đến Windows Runtime API đầy đủ cho nền tảng, bao gồm các hỗ trợ cho Windows Runtime XAML Framework, và các ràng buộc ngôn ngữ cho C++/CX, và HTML5-JavaScript. Ngoài ra còn có một loại dự án gọi là *Universal apps* để cho phép các ứng dụng chia sẻ mã trên các phiên bản 8.1 của Windows Phone và Windows.

Windows Phone 8 Silverlight Framework đã được cập nhật. Nó có thể khai thác một số tính năng mới trong Windows Runtime.

Windows Phone Runtime sử dụng định dạng gói AppX từ Windows 8, sau khi sử dụng Silverlight XAP.

## Xem thêm
* Windows Runtime XAML Framework

## Chú thích

## Liên kết ngoài
*