In this blog, we will learn WPF Architecture. WPF is used for developing desktop application and was introduced by Microsoft in .NET Framework 3.5 as a replacement of Windows forms.
It has mainly 2 parts – WPF module and OS core Module. WPF module is sub divided in 2 parts – Managed Module ( Core WPF elements) and un-managed module which acts as a bridge between WPF managed module and OS Core element.
PresentationFramework.dll: This section contains high-level features like application windows, panels, styles controls, layouts, content and so on that helps us to build our application.
PresentationCore.dll: This is a low-level API exposed by WPF providing features for 2D, 3D, geometry and so on.
WindowsBase.dll: It holds the more basic elements that are capable to be reused outside the WPF environment like Dispatcher objects and Dependency objects.
Un Managed Layer
This section is unmanaged code because it acts as a bridge between WPF managed and the DirectX / User32 unmanaged API.
milCore.dll: It is called the Media Integration Layer (MIL) and resides in milCore.dll. The purpose of the milCore is to interface directly with DirectX and provide basic support for 2D and 3D surface.
WindowsCodecs.dll: WindowsCodecs support in WPF applications like image processing, image displaying and scaling and so on.
Core operating System Layer (Kernel)
This layer has OS core components like User32, GDI, Device Drivers, Graphic cards and so on. These components are used by the application to access low-level APIs.
DirectX: DirectX is the low-level API through which WPF renders all graphics. DirectX talks with drivers and renders the content.
User32: User32 actually manages memory and process separation. It is the primary core API that every application uses. User32 decides which element will be placed where on the screen.
GDI: GDI stands for Graphic Device Interface. GDI provides an expanded set of graphics primitives and a number of improvements in rendering quality.
CLR: WPF leverages the full .NET Framework and executes on the Common Language Runtime (CLR).
Device Drivers: Device Drivers are used by the applications to access low-level APIs.
To Summarize it, you can watch this video.
In the next post, we will learn about WPF Class Heirarchy.