As long as I program, I always did it with MS-technologies. There was DOS, MFC , VB6, then .net with WinForms and now WPF.
In all these technologies, the GUI-thing was always more or less the same, because it based on Win32 (except DOS). With WPF now all has totally changed. MS introduced a lot of new possibilities, beginning with the declarative way to build UIs, lookless controls, animations et cetera. I like this new UI-technology a lot, also the fundamentals beneath it (DependencyProperty-System, RoutedEvents and so forth).
But what I don’t know, because I always used MS-technologies, is if this whole construct is an MS-specific invention or are these things only a good compilation of technologies and patterns that are state of the art and used in many other modern environments.
Is there some information about the comparison of modern UI technologies that shows links and common patterns?
If you study graphics technology, you'll realize that WPF isn't all that remarkable - it's an implementation of some very well-established concepts on modern hardware and modern Windows. To illustrate, an old book here on my shelf printed in 1991, "Computer Graphics, Principles and Practice" contains a lot of the ideas WPF is built on.
Probably the most fundamental difference of WPF to GDI (the predecessor Windows graphics system) is that WPF is a retained-mode graphics system, whereas GDI was non retained-mode. This means that in WPF, there is a visual tree, and data structure, which represents the visual scene to be viewed, gets clipped and rasterized on a regular basis, and that data-structure always remains in memory, managed by WPF itself.
Once this is understood, that the heart of WPF is a tree structure representing the scene, one finds that the rest is built on principles of handling the specifics of rasterizing the visual tree on top of a mature 3D display system (DirectX). The layering on of threading (DispatchObject
), data binding mechanism (DependencyObject
), and UI idioms of layout, input, focus, eventing (UIElement
), and styling (FrameworkElement
) are all natural progressions of ideas in Win32 or other UI constructions. To give an example of the latter: even though nothing like DependencyObject
ever existed in Win32, a popular 3D tool (Maya), which represents a 3D scene as a Directed Acyclic Graph has a similar subsystem, where nodes have properties, and when properties are updated, values are pushed via node connections across the graph, and all nodes which are interested in that property are notified of the new value. From this it can be seen that once you have a central data structure (tree or graph), layering on new capabilites is a straightfoward software engineering problem.
Having stated all this, WPF should be recognized for what it is: a mature fruit which embodies decades of research, trial and error in building a user interface and graphics technology, and a solid basis for building rich client applications well into the future.
This is not only a MS-specific construction, as you put it. There are other similar technologies based around the same principles (an XML-like mark-up to define UI) - JavaFX, Adobe Flex, Flash, and others. I cant find any specific information on the common patterns used in each, but there are plenty of comparisons between them.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With