
Windows Presentation Foundation (WPF) is a next-generation
presentation system for building Windows client applications with
visually stunning user experiences. With WPF, you can create a wide
range of both standalone and browser-hosted applications.
The core of WPF is a resolution-independent and vector-based rendering
engine that is built to take advantage of modern graphics
hardware. WPF extends the core with a comprehensive set of
application-development features that include Extensible Application
Markup Language (XAML), controls, data binding, layout, 2-D and 3-D
graphics, animation, styles, templates, documents, media, text, and
typography. WPF is included in the Microsoft .NET Framework, so you can
build applications that incorporate other elements of the .NET
Framework class library.
WPF can be used to develop the following types of applications:
1. Standalone Applications (traditional style Windows applications
built as executable assemblies that are installed to and run from the
client computer).
2. XAML browser applications (XBAPs)
(applications composed of navigation pages that are built as executable
assemblies and hosted by Web browsers such as Microsoft Internet
Explorer or Mozilla Firefox).
3. Custom Control Libraries (non-executable assemblies containing reusable controls).
4. Class Libraries (non-executable assemblies that contain reusable classes).
WPF Architecture
For every new technology, it is very essential to have a clear idea
about its architecture. So before beginning your application, you must
grab a few concepts. If you would not like to know WPF in detail, please
skip this section. As mentioned earlier, WPF is actually a set of
assemblies that build up the entire framework. These assemblies can be
categorized as:
- Managed Layer
- UnManaged Layer
- Core API
Managed Layer: Managed layer of WPF is built using a
number of assemblies. These assemblies build up the WPF framework,
communicate with lower level unmanaged API to render its content. The
few assemblies that comprise the WPF framework are:
- PresentationFramework.dll: Creates the top level elements like layout panels, controls, windows, styles, etc.
- PresentationCore.dll: It holds base types such as
UIElement, Visual from which all shapes and controls are Derived in PresentationFramework.dll.
- WindowsBase.dll: They hold even more basic elements which are capable of being used outside the WPF environment like
Dispatcher object, Dependency Objects. I will discuss each of them later.
Unmanaged Layer (milcore.dll): The
unmanaged layer of WPF is called milcore or Media Integration Library
Core. It basically translates the WPF higher level objects like layout
panels, buttons, animation, etc. into textures that
Direct3D expects. It is the main rendering engine of WPF.
WindowsCodecs.dll: This is another low level API which is used for imaging support in WPF applications.
WindowsCodecs.dll comprises a number of codecs which encode / decode images into vector graphics that would be rendered into WPF screen.
Direct3D: It is the low level API in which the graphics of WPF is rendered.
User32: It is the primary core API which every program uses. It actually manages memory and process separation.
GDI & Device Drivers: GDI and Device Drivers are specific to the operating system which is also used from the application to access low level APIs.
For more information,
Click here