Tổng quan về kiến trúc WPF
WPF (Windows Presentation Foundation) là một nền tảng UI (User Interface – giao diện người dùng) do Microsoft phát triển, giúp xây dựng các ứng dụng Desktop trên Windows bằng cách tận dụng sức mạnh của DirectX thay vì GDI truyền thống. WPF là một phần của .NET Framework và hỗ trợ tạo giao diện đồ họa hiện đại, động và linh hoạt. Trong tự động hóa WPF là nền tảng tối ưu cho việc xây dựng Scada kết nối các dòng PLC.
Hình 1.1 – Kiến trúc WPF
1. Lớp Managed (Managed Layer)
Presentation Framework, Presentation Core và Window Base là ba thành phần chính của Lớp Managed. Đây là những phần quan trọng nhất trong WPF và đóng vai trò thiết yếu trong Windows Presentation Foundation (WPF). API công khai chỉ được cung cấp thông qua lớp này. Phần lớn mã của WPF được viết bằng mã Managed.
- PresentationFramework.dll:
- Chứa các tính năng cấp cao như cửa sổ ứng dụng, panel, style, control, layout, nội dung, giúp xây dựng giao diện ứng dụng.
- Cung cấp các tính năng trình bày cho người dùng, bao gồm data binding (ràng buộc dữ liệu), time-dependencies (phụ thuộc thời gian), animation (hiệu ứng động) và nhiều tính năng khác.
- PresentationCore.dll:
- Đây là API cấp thấp của WPF, cung cấp các tính năng như đồ họa 2D, 3D, hình học,…
- Presentation Core cung cấp một wrapper (trình bao bọc) được quản lý cho MIL (Media Integration Layer) và triển khai các dịch vụ cốt lõi của WPF như UIElement và Visual.
- Visual System trong WPF tạo ra cây Visual Tree, chứa các phần tử giao diện người dùng và hướng dẫn kết xuất đồ họa.
- WindowsBase.dll:
- Chứa các thành phần cơ bản có thể được tái sử dụng ngoài môi trường WPF, như Dispatcher objects (đối tượng điều phối) và Dependency objects (đối tượng phụ thuộc).
2. Lớp Unmanaged (Unmanaged Layer)
- milCore.dll:
- Đây là engine kết xuất đồ họa (composition engine), chịu trách nhiệm hiển thị ứng dụng WPF và được triển khai bằng mã gốc (native code).
- Media Integration Layer (MIL) nằm trong milCore.dll, có nhiệm vụ giao tiếp trực tiếp với DirectX để hỗ trợ các bề mặt đồ họa 2D và 3D.
- Phần này thuộc mã Unmanaged, vì nó đóng vai trò cầu nối giữa WPF (Managed Code) và API DirectX/User32 (Unmanaged Code).
- WindowsCodecs.dll:
- Đây là API cấp thấp hỗ trợ xử lý hình ảnh trong WPF, bao gồm xử lý ảnh, hiển thị ảnh, thu phóng ảnh,…
- Chứa nhiều bộ codec giúp mã hóa/giải mã ảnh, chuyển đổi hình ảnh thành đồ họa vector để hiển thị trên màn hình WPF.
3. Lớp nhân hệ điều hành (Core Operating System Layer – Kernel)
Lớp này chứa các thành phần lõi của hệ điều hành như:
- User32:
- Quản lý bộ nhớ và tách biệt tiến trình, là API cốt lõi của mọi ứng dụng Windows.
- Xác định vị trí các phần tử giao diện trên màn hình.
- GDI (Graphics Device Interface):
- Cung cấp các primitive đồ họa và cải tiến chất lượng kết xuất.
- DirectX:
- API cấp thấp giúp WPF kết xuất tất cả đồ họa.
- DirectX giao tiếp với trình điều khiển đồ họa (Graphic Drivers) để hiển thị nội dung.
- CLR (Common Language Runtime):
- WPF tận dụng toàn bộ sức mạnh của .NET Framework và chạy trên CLR.
- Device Drivers (Trình điều khiển thiết bị):
- Các trình điều khiển cụ thể của hệ điều hành giúp ứng dụng truy cập các API cấp thấp.
4. Kết luận
- Lớp Managed: Chứa các thư viện quan trọng của WPF, bao gồm PresentationFramework, PresentationCore, WindowsBase.
- Lớp Unmanaged: Chứa milCore.dll và WindowsCodecs.dll, chịu trách nhiệm kết xuất đồ họa và xử lý hình ảnh.
- Lớp nhân hệ điều hành (Kernel): Chứa DirectX, User32, GDI, CLR, Device Drivers, giúp WPF giao tiếp với hệ thống.