views:

163

answers:

4

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, lockless 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?

+5  A: 

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.

DrDeth
XUL is another XML markup for UI design.
Todd Owen
+2  A: 

In my opinion, WPF has been inspired by some other technologies - like e.g. the StackPanel from Swing/Java. Also the concept of having an XML describing the UI and a separate code file have been there before - see Adobe Flex where you have XML and ActionScript.

But, however, Microsoft has done a great job when designing WPF. They were definitely inspired by some other concepts but have definitely added great features, like the DependencyProperties, which are a new concept, as far as I know (correct me if I'm wrong)

Furthermore, WPF seems to be a very future-proof technology, because it's not only pushed by MS on Windows Desktop OS but also on Silverlight and therefore also for Web-Solutions and for the upcoming Windows Phone 7.

j00hi
+1  A: 

To me, WPF is the best technology out of all the other MS technologies. I have been using it for a while, and I should say I am glad we have something better than WinForms. WPF is extraordinary for Microsoft but is not for other companies like Adobe in some aspects, animation for example. Animations are far more powerful in Flash. In order to have smooth animations that work simultaneously, you probably need to code on lower levels of .NET and need a good graphics card.

+7  A: 

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.

codekaizen
+1 This is exactly the type of answer I was hoping for at the mopment I have posted my question. Can sadly only upvote one time. (This statement does absolutely not mean that I dont appreciate the other answers! Thanks to all a lot. It helps me to classify the the technology I work all day with (and I really like))
HCL
Happy to give an answer like this... WPF is a very nice technology, and it is satisfying to understand the history behind it.
codekaizen