This post is part of a series of WCF posts. The following list will updated and published with each post:

  1. In Depth Windows Communication Foundation (Part 1) - Introduction & WCF Architecture
  2. In Depth Windows Communication Foundation (Part 2) - Address, Binding & Contract
  3. In Depth Windows Communication Foundation (Part 3) - Our first Service and Client
  4. ...

Introduction

At my current assignment, the last couple of months I've worked a lot with WCF.  During this time I had many challenges to cope with and it seems to me that the WCF learning curve can be rather steep.
There are a lot of books and blogs out there, describing different WCF subjects and I've used a lot of them.
As a start on this website, I have now planned a series of (more or less) 17 posts about WCF. It will begin with covering the basics but will advance pretty soon to more complex parts of using the WCF framework.
I'll try to get rather fast to the more interesting advanced scenario's, but I think it is important to also give the basic information for those who have not yet looked into WCF (at all).
I will use information and pictures found on other web sites and I will try to always give credits to the original owners... so please give me a hint when I've forgotten about you :)
In this first post I'd like to list the books, and URL's that I found useful and I'll describe the general architecture of WCF.
(I'll update these lists as frequently as possible)

I think the following books are of great assistance while exploring WCF:

Programming WCF Services - Juval Lowy

Programming WCF Services (Programming)

Inside Windows Communication Foundation

Inside Windows  Communication Foundation (Pro Developer)

Further, I recommend to read the following blogs :

WCF Architecture

Overview

In October 2003 the first official anouncement about "Indigo", the new communication platform now known as WCF, was done by Don Box on the Professional Developers Conference in Los Angeles. It was supposed to be one of the four pillars (the other pillars are: Avalon-now knowns as Windows Presentation Foundation WPF-,    WinFS-the revolutionary new file system and     WinFX-now known as the .NET framework 3.0) of the new "Longhorn" operation system.


In 2004 Don Box published an article on MSDN called "A Guide to developing and Running Connected Systems with Indigo" in which he explained the principles of WCF with the help of four SOA tenets:

  • Boundaries are explicit
  • Services are autonomous
  • Services share schema and contract, not class or type
  • Service compatability is based upon policy

These tenets are nicely described by the BPM Institute.

So WCF is build from the ground up with these SOA tenets and SOA vision in mind.. what does it look like?

Because a picture says more than a 0x3E8 words, the following picture gives a clear view of the WCF architecture.
The 'Contracts' and 'Service runtime' parts can be seen as the service model;
the 'Messaging' part can be seen as the channel model.

The WCF Architecture

Windows Communication Foundation Architecture

The individual parts are explained on the Microsoft site:

  • Contracts

"Contracts define various aspects of the message system. The data contract describes every parameter that makes up every message that a service can create or consume"

"The message contract defines specific message parts using SOAP protocols, and allows finer-grained control over parts of the message, when interoperability demands such precision. The service contract specifies the actual method signatures of the service, and is distributed as an interface in one of the supported programming languages, such as Visual Basic or Visual C#."

"Policies and bindings stipulate the conditions required to communicate with a service. For example, the binding must (at a minimum) specify the transport used (for example, HTTP or TCP), and an encoding. Policies include security requirements and other conditions that must be met to communicate with a service."

  • Service Runtime

"The service runtime layer contains the behaviors that occur only during the actual operation of the service, that is, the runtime behaviors of the service. Throttling controls how many messages are processed, which can be varied if the demand for the service grows to a preset limit. An error behavior specifies what occurs when an internal error occurs on the service, for example, by controlling what information is communicated to the client. (Too much information can give a malicious user an advantage in mounting an attack.) Metadata behavior governs how and whether metadata is made available to the outside world. Instance behavior specifies how many instances of the service can be run (for example, a singleton specifies only one instance to process all messages). Transaction behavior enables the rollback of transacted operations if a failure occurs. Dispatch behavior is the control of how a message is processed by the WCF infrastructure.

Extensibility enables customization of runtime processes. For example, message inspection is the facility to inspect parts of a message, and parameter filtering enables preset actions to occur based on filters acting on message headers."

  • Messaging

"The messaging layer is composed of channels. A channel is a component that processes a message in some way, for example, by authenticating a message. A set of channels is also known as a channel stack. Channels operate on messages and message headers. This is different from the service runtime layer, which is primarily concerned about processing the contents of message bodies. There are two types of channels: transport channels and protocol channels. Transport channels read and write messages from the network (or some other communication point with the outside world). Some transports use an encoder to convert messages (which are represented as XML Infosets) to and from the byte stream representation used by the network. Examples of transports are HTTP, named pipes, TCP, and MSMQ. Examples of encodings are XML and optimized binary.

Protocol channels implement message processing protocols, often by reading or writing additional headers to the message."

  • Activation and Hosting

"In its final form, a service is a program. Like other programs, a service must be run in an executable. This is known as a self-hosted service.

Services can also be hosted, or run in an executable managed by an external agent, such as IIS or Windows Activation Service (WAS). "

These quotes contains lots of concepts that will be explained in later posts.. for now, try to get the broad pictrure of WCF... details will follow soon..

Lots of developers who build services and clients in .NET will only interact with the service model. It's the WCF programming model when using standard WCF functionality and its an abstraction of the underlying Channel Model. But, if you need to support advanced scenario's like custom interoperability, a different transport protocol or your custom serializer you will need to dive deeper into the WCF architecture and more particular its extensibility points.

More in the next WCF post:

In Depth Windows Communication Foundation (Part 2) - Address, Binding & Contract


Posted in: .NET 3.0 , .NET 3.5 , WCF  Tags:

Currently rated 2.0 by 1 people

  • Currently 2/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Page List

    Calendar

    «  September 2010  »
    MoTuWeThFrSaSu
    303112345
    6789101112
    13141516171819
    20212223242526
    27282930123
    45678910
    View posts in large calendar

    Recent Comments

    Feedburner Statistics 9/7/2010
    25 Readers ~ 59 hits ~ 0 reach

    Disclaimer
    The opinions expressed herein are my own personal opinions and do not represent my employer's view in anyway.

    © Copyright 2010 Inwit.nl