The Windows Presentation Foundation is Microsofts next generation UI framework to create applications with a rich user experience. It is part of the .NET framework 3.0 and higher.WCF (Window Communication Foundation) is a solution for developers to work in distributing environment. WCF create communication between applications. Before WCF, the technologies to make communication between applications were ASMX, .NET remoting, and COM+. WCF provides a common platform for all .NET communication, different technology combined to form WCF.
WCF is a framework that is used for developing, configuring, exposing, and hosting services. All service providers were agree on SOAP concept for making communication between application before WCF. The idea of WCF is a combination of SOAP and web service.
There are two categories of classes in WCF
- Service model classes handle configuration and validation.
- Channel layer classes handle things such as communication and data transformation.
WCF services expose functionality through one or more endpoints. Clients communicate with the service's endpoint. In configuring an end points there are three components require.
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 is a collection of number of assemblies. These assemblies create the WPF framework, communicates with lower level unmanaged API to render its content. The few assemblies that comprise the WPF framework are
- PresentationFramework.dll : It is used to Creates the top level elements like layout panels, controls, windows, styles etc.
- PresentationCore.dll- it is used to holds base types such as UIElement, Visual from which all shapes and controls are Derived in PresentationFramework.dll.
- WindowsBase.dll- It is used to hold even more basic elements which are capable to be used outside the WPF environment like Dispatcher object, DependencyObjects. 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 used to translate the WPF higher level objects like layout panels, buttons, animation etc into textures that Direct3D expects. It is the main rendering engine of WPF.
This is low level API which is used for imaging support in WPF applications.
WindowsCodecs.dll comprises of a number of codecs which encodes / decodes images into vector graphics that would be rendered into WPF screen.
- Dynamic Service and End Point discovery
- Intermediate Routing Pattern ( Generic Routing Services)
- Discovery announcement
- Simplified Configuration
- Protocol bridging and Fault tolerance
- Standard End Points.
- svc-less activation of REST services or making REST URI nice.
- Its made of a lot of different components, so you can create new components for security, transport, authentication
- In WCF, there is no need to make much change in code for implementing the security model and changing the binding. Small changes in the configuration will make your requirements.
- Its faster than ASMX
- Supports Scaling/Load Balancing
- WCF has integrated logging mechanism, changing the configuration file settings will provide this functionality. In other technology developer has to write the code.
- Its Interoperability, for java, and more.
- WCF is interoperable with other services when compared to .Net Remoting,where the client and service have to be .Net
- WCF services provide better reliability and security in compared to ASMX web services.
A drawback would be that, WCF is Microsoft's implementation of SOA and hence its APIs are solely controlled by MS which makes interoperability a bit difficult.
Also, to deploy WCF apps, you will need more underlying hardware resources on the platform on which the WCF applications will be running, since there is an additional layer of abstraction to deal with.