Windows 8 Secrets: WinRT, the Windows Runtime


Tuần trước tôi đã có một buổi nói chuyện trước một nhóm người dùng tại khu vực Boston, đây là lần thứ tư kể từ khi bản Windows 8 Developer Preview được phát hành. Không phải tình cờ mà đây là lần thứ tư liên tiếp tôi nói riêng về Windows 8: Mọi người đang bị cuốn hút – và sợ hãi bởi – hệ điều hành tiếp theo của Microsoft theo cách mà họ chưa từng thấy kể từ bản Longhorn (thế hệ Windows Vista và Windows Server 2008), hoặc thậm chí là kể từ Windows 95. Nó là một số thứ thậm chí tôi phải giữ kín trong đầu vì tôi vẫn còn một vài nghi ngờ, mà hầu hết là do Microsoft giữ kín các kế hoạch của họ.
Điều đó cho thấy rằng, các nhóm tôi nói chuyện với phần lớn là những người có kiến thức rất tốt về kỹ thuật và định hướng vào kinh doanh, do vậy họ cũng có mối quan tâm nhất định về Windows 8, cũng như một vài quan tâm khác. Dù vậy, nhiều câu hỏi của họ nói chung thú vị ngay cả đối với những người không có kỹ thuật. Do đó tôi thấy tôi có thể chỉ ra một số câu hỏi đó trong một loạt bài viết về Windows 8, chúng sẽ được làm nền tảng cho quyển sách Windows 8 Secrets mà tôi đang chuẩn bị.
Điều đầu tiên phải nói đến là Windows Runtime, hay WinRT, vì nó tạo thành cốt lõi của hệ điều hành mới, và có lẽ là khái niệm gây khó hiểu nhất trong Windows 8.
Ghi chú: Đây là hướng dẫn cho người dùng, không phải cho nhà phát triển hoặc các chuyên gia về kiến trúc bên trong Windows. Mục đích của bài này chỉ chính xác ở mức khái niệm, và có thể có một số thiếu sót về kỹ thuật hoặc shortcut trong bài viết. Tôi sẽ không tập trung nhiều vào điều đó, nhưng sẽ rất vui mừng nếu bạn tìm thấy và chỉ cho tôi biết những sai sót.Cũng chú ý là đây là một trong những lĩnh vực mà Microsoft rất tập trung phát triển. Chúng tôi chỉ trích sự im lặng của họ, nhưng riêng đối với WinRT, công ty đã khá minh bạch, mặc dù chủ để tương đối khó hiểu và dễ nhầm lẫn.
OK, hãy cùng xem chi tiết.Là một hệ điều hành hiện đại, Windows có, tất nhiên, luôn có một hệ thống thực thi (runtime engine), một môi trường để các ứng dụng native chạy trên đó. Một trong những ứng dụng đó có vai trò rất đặc biệt, vì nó cung cấp giao diện để người dùng tương tác với hệ thống thực thi và môi trường đó; ứng dụng đó được gọi là shell. Trong Windows 3.x, Program Manager đóng vai trò là Windows Shell. Nhưng nó được đổi thành Windows Explorer kể từ Windows 95 cho tới phiên bản Windows gần đây nhất, Windows 7. (bài viết này được viết trước khi Windows 8 chính thức ra mắt).Trong Windows 8, trình Explorer shell được thay thế bởi Start Screen. Nhưng nó không chỉ là thay đổi giao diện, và Start Screen không phải “một cái gì đó trên một cái gì đó”. Thay vào đó, Start Screen, với vai trò là Windows Shell mới, chính là bộ mặt của một runtime engine mới trong trường hợp này ta gọi là Windows Runtime, hay ngắn gọn là WinRT.
Và Explorer desktop (môi trường desktop cũ), thú vị, về bản chất cũng là một ứng dụng, hoặc ít nhất là một môi trường riêng biệt, sẽ chạy cùng với shell mới. Về mặt khái niệm (không phải kỹ thuật) cũng tương tự MS-DOS và Explorer trên Windows 9x: cả hai cùng tồn tại, cả hai chạy cạnh nhau để hoàn thành các mục đích và mong muốn khác nhau. Và cả hai có một số quan hệ phức tạp với nhau kiểu như, lấy ví dụ, Explorer và Windows 9x runtime thực sự dựa trên DOS ở một vài điểm nào đó. Những điều này chẳng bao giờ được chỉ ra rõ ràng trong các sơ đồ của Microsoft.
Về kiến trúc, WinRT nằm bên trong Windows ở một cấp rất sâu. Cảm ơn tính thành phần hóa xuất hiện trong Windows Vista giữa những năm 2000, Windows giờ đã là một hệ thống module hóa với tính độc lập rất cao giữa các thành phần, hoặc các phần có thể khớp nối và trộn lẫn, giống như một trò chơi ghép hình cho ra nhiều giải pháp, để có thể dựng lên các phiên bản Windows 8 khác nhau, bao gồm các phiên bản cho phone, desktop, server…
Ở dưới cùng của kiến trúc này là Windows Core, là cái đã từng được gọi là MinWin. Nó bao gồm nhân Windows, user mode, dịch vụ và các thành phần cấp độ thấp khác. WinRT, thú vị là không nằm hoàn toàn bên trên Windows Core, thay vào đó, rất nhiều phần của WinRT nằm trong Windows Core. Điều này, tất nhiên giải thích chủ trương của Microsoft rằng Windows runtime mới không phải là “một cái gì đó trên một cái gì đó”. Nó là Windows runtime, một cách thuần túy và đơn giản.

Như với bản thân Windows, Windows Runtime bản thân nó cũng được tạo nên từ các lớp khác nhau cung cấp các cấp độ chức năng cho shell và các ứng dụng dạng Metro (Modern UI). Ở bên dưới, về khái niệm, là các thành phần cấp thấp như quản lý bộ nhớ, mã hóa, và toàn cầu hóa; chúng là các thành phần của Windows Runtime Core. Phía trên chúng là các lớp liên quan đến thiết bị (bao gồm cả các cảm biến), đa phương tiện, giao tiếp và dữ liệu (contact, lưu trữ cục bộ và trên mây, web, thông báo và nhiều thành phần khác…). Ở trên chúng là lớp giao diện, với một số  một hình phát triển được hỗ trợ bởi WinRT như: HTML5/CSS, XAML, DirectX.

(Các nhà phát triển dùng các API trên mỗi lớp, được chứa trong Windows 8 SDK để tạo nên các ứng dụng dạng Metro. Các API đó, hiện tại không may là không có hoặc rất ít tài liệu, do vậy không rõ số lượng ứng dụng chất lượng cao chúng ta mong muốn mà không cần nhiều sự hỗ trợ từ Microsoft. Điều này, tất nhiên, sẽ được nâng cao dần.)

Microsoft giải thích về điều này còn đơn giản hơn trong sự kiện BUILD cuối tháng 9 vừa qua (2011), khi nó diễn ra. Giám đốc phát triển Windows RT Martin Lovell đã nói trong buổi giới thiệu “Lap Around the Windows Runtime” của ông ấy là “WinRT is the Windows platform.” (WinRT là nền tảng Windows).

Đồng ý với chủ trương WinRT thực sự là một bộ thực thi Windows mới của Microsoft, chúng ta sẽ thấy một câu hỏi: Tại sao? Tại sao Microsoft thay thế một số thứ vốn đã làm việc rất tốt và hiệu quả với một cải mới, khác biệt, và hiện tại, nó còn chưa được kiểm chứng, thậm chí còn chưa được biết nhiều bởi các nhà phát triển?
Tôi nghĩ cách giải thích đơn giản nhất là Microsoft đã bị cụng đầu vào một bức tường gạch bởi các công nghệ đang có. Để hiểu điều này, tôi sẽ cần quay lại một vòng xem cách phần mềm Windows được phát triển trong suốt 15 năm qua.
Win32, là tập API cơ bản nhất cho nền tảng dựa trên Explorer, nó không chỉ già cỗi – nó đã được tạo ra cho Windows NT từ những năm đầu thập kỷ 90 – nó cũng đã bị vượt mặt bởi một số tập API mới hơn, bắt đầu với C++ MFC Microsoft Foundation Classes), và gần đây nhất là bởi các môi trường dựa trên manage code, .NET bao gồm .NET Framework, Windows Presentation Foundation và Silverlight.
Với tất cả ưu điểm của .NET, có một vấn đề quan trọng là nó không tạo ra mã native (mã máy của CPU). Đó là, môi trường .NET, một cách tự nhiên, chính là sự trừu tượng hóa môi trường tự nhiên (native) vốn không chỉ đẹp hơn, mà còn bị tách biệt với phần nhân của Windows. Do vậy chúng phải chịu các thiệt hại về hiệu năng. Cũng có một thực tế là chúng(.NET) cũng chỉ đưa ra một phần trong những gì mà hệ thống có thể làm được, nên các lập trình viên thường phải chuyển sang C hay thậm chí là hợp ngữ (asembly language) nếu muốn có hiệu năng tốt hơn, hay để truy cập đến các chức năng không được cung cấp bởi môi trường .NET họ chọn.
Nhưng liệu điều gì sẽ xảy ra nếu viết ứng dụng theo kiểu .NET lại trở thành cách phát triển tự nhiên trên Windows? Liệu điều này có phải tốt nhất cho cả hai không?
Các nhà phát triển cứng tay có thể nổi giận với quan điểm WinRT là native, nhưng là một sự đảm bảo công bằng. Dùng các API dựa trên WinRT mới có trong Windows 8, các nhà phát triển có thể dùng các ngôn ngữ managed code hiện đại mà họ thích, như C# hay Visual Basic, cùng với XAML, và các hàm API theo kiểu managed code thân thiện, sáng sủa và hiện đại. WinRT cũng bình đẳng hơn .NET vì nó cũng cung cấp nhiều sự lựa chọn hơn: Giờ bạn cũng có thể sử dụng các công nghệ web HTML 5, CSS, và JavaScript – đơn giản và dễ tiếp cận, hoặc những người có nhu cầu hiệu suất cao có thể sử dụng DirectX. Trong mỗi trường hợp, tuy nhiên, các nhà phát triển đều được hưởng lợi từ hơn một thập kỷ cải tiến các giao diện lập trình. Win32, giờ không chỉ trở nên cũ, mà là lỗi thời.
Thêm một chút về sự tiến hóa này, một số trong chúng cho thấy mọi việc có thể bị mất đồng bộ, nhưng cũng đừng quá lo lắng. Microsoft đang hiện đại hóa mọi thứ ở đây: runtime engine và shell cho người dùng, các công cụ phát triển, ngôn ngữ, API, framework, môi trường và nhiều thứ nữa. Mọi thứ đang được cải tổ lại để tốt hơn, đơn giản hơn và hiện đại hơn.
Dù sao thì cũng là trên lý thuyết.Từ góc độ của người sử dụng, những thay đổi này sẽ có những tác động quan trọng, không chỉ trong cách bạn tương tác với Windows hàng ngày mà còn trong các lĩnh vực khác như Windows và các ứng dụng chạy trong nó được cập nhật theo thời gian. Đây không phải chỉ là lớp vỏ ngoài, nó là một sự đổi mới lại hoàn toàn, dù tất nhiên, việc bổ sung “di sản” Windows desktop cung cấp khả năng tương thích ngược quan trọng mà khách hàng mong đợi và Microsoft luôn cung cấp. Microsoft gọi đây là một cách tiếp cận “không thỏa hiệp”. Một lần nữa: tốt nhất cho cả hai bên.Cũng như bất kỳ sự tiến hóa nào, sẽ có những khó khăn được tạo ra. Đây là những gì cũng đã xảy ra khi chúng ta chuyển từ DOS/Windows 3.x đến Windows 95 rồi đến NT. Trong quá trình chuyển đổi đó, DOS từ một hệ điều hành cốt lõi trở thành một runtime engine tích hợp và rồi, cuối cùng, là một thông dịch dòng lệnh đơn giản chạy trên một hệ điều hành “thực sự”.

Trong Windows 8, WinRT và Start screen sẽ chạy song song với Win32 và Explorer desktop. Cả hai môi trường sẽ có sẵn cho người dùng, và mỗi cái đều có điểm mạnh và điểm yếu của nó đối với từng trường hợp khác nhau. Win32, bây giờ, bao gồm các chức năng mà chỉ đơn giản là không có trong WinRT, mặc dù hy vọng là sẽ thay đổi dần. Nhưng WinRT, tất nhiên, là nơi mà hành động là: Mặc dù một số cập nhật nhỏ trong API Win32 đã thực sự được giới thiệu trong Windows 8, Win32 phần lớn trở nên deprecated và chuyển sang chế độ bảo trì. Tất cả những thay đổi lớn và cải tiến, sẽ có, chỉ xảy ra trong WinRT.

Theo thời gian, tôi mong muốn Explorer để được tiếp tục chuyển thành deprecated và thậm chí bị loại bỏ. Microsoft chắc chắn sẽ làm điều này từ từ vì lo ngại khả năng tương thích. Nhưng WinRT và trải nghiệm người dùng phong cách Metro sẽ là tương lai, và WinRT là runtime engine sẽ tạo nên một thế hệ mới các phiên bản Windows. Điều này thật thú vị và cũng thật đáng sợ đáng sợ.

Dịch từ: http://www.winsupersite.com/article/windows8/windows-8-secrets-winrt-windows-runtime-142196

Người dịch: Đào Hải Nam

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s