Software Development: Windows Presentation Foundation (WPF)
Windows Presentation Foundation (WPF) is a software graphical system for presenting the user interface in Windows. WPF provides a model for building logic which separates the user interface from business logic, using XML objects.
WPF is used to create 2D/3D graphics, typography, vector graphics, runtime animations, etc. It provides developers with a unified programming model for building Web and desktop applications that combine media and documents.
WPF can be used to build desktop as well as Metro applications. WPF uses graphics libraries to provide high performance controls. WPF controls can be created to any scale without losing resolution. The designer has much more flexibility and features than the Windows Form controls.
The good news about WPF
- There is no longer a need for the cumbersome Microsoft Word.
- Over heterogeneous systems like a PC and the web, WPF will ensure that both the Windows Form and the Web Page look reasonably alike.
The bad news about WPF
- WPF is very immature.
- WPF has not been adopted by the computer industry.
- Performance is an issue.
- XML is not self-documenting. The XML editor is crude. There are few native controls. There is no native XML report viewer. There is no Multiple Document Interface (MDI) control.
- Most of the WPF add-ins needed are non-standard and not supported.
- The resulting code/structure using XML is a nightmare to follow and maintain.
- The need to have graphics in code, rather than using MS Word or a Rich Text-box or HTML, is debatable.
- As with Silverlight, it is doubtful whether WPF will be actively supported in the future by Microsoft.
- There are few programmers able to support or maintain WPF code.
The system uses "Language Integrated Queries" (LINQ) – a complex database data retrieval system. It is immature and has performance and support issues. LINQ may be promising, but should not be used yet in a live environment.
And then there are the XML structures which add to the complexity and enormously to the size of the convoluted project.
WPF uses Silverlight, but Silverlight has been abandoned by Microsoft and has been replaced by HTML5.
The logic is usually written using an Object Oriented Programming (OOP) form. OOP is verbose, obscure and complicates the logic. The aim of OOP should be:
- Encapsulation (i.e. hide complexity)
- Logic Simplicity
- Code Re-use
- Code Maintainability
These principles are difficult to achieve with OOP.
Summary of using WPF for a Project
The software is at the bleeding edge of technology. The future of the WPF software is not assured. Microsoft is more interested in creating software for their "Metro" products, rather than continuing with a dead-end path that has been replaced by HTML5.
I cannot advise the usage of the WPF software for any Company administration system. Even for a publishing Company dealing exclusively with documents and graphics, the use of WPF will cause major development and maintenance headaches.