Thursday, March 25, 2010

SOA-based WCF architecture

The WCF architecture is based on the design principles of service-oriented architecture (SOA).

SOA is a framework that is used to design service-based distributed systems. In an SOA-based system, platform-independent services communicate across networked computers or computer processes.

WCF implements.
  • Explicit boundaries WCF services function using defined interfaces to identify the communications that flow outside the boundaries of the service.
  • Independent services All WCF services are deployed and managed independently; they are independent of deployment, installation, and version issues. Also, each service interaction is independent of other interactions.
  • Schema and contract-based communication WCF services communicate with clients by providing only the schema of the message and not its implementation classes. This helps developers change the service implementation in the future without impacting the clients.
  • Policy-based compatibility Compatibility between WCF services and clients at run time is determined using published policies. Policies help separate the description of the service from its implementation details.

The SOA-based WCF architecture contains four layers – Contracts, Service Runtime, Messaging, and Hosting.  

Contracts: The Contracts layer describes the WCF message system.
This is described in terms of
  • A Service Contract describes the method signatures of a service. It's defined using programming languages, such as Visual Basic and Visual C# and is distributed as an interface  
  • A Data Contract enables .NET types to be expressed in XML. The data contract describes every parameter that makes up every message that a service can create or consume.  The message parameters are defined by XML Schema definition language (XSD) documents, enabling any system that understands XML to process the documents.
  • Message Contracts define the structure of SOAP messages exchanged between a service and a client, and they allow you to view or modify messages and allows finer-grained control over parts of the message
  • Policies and Bindings : Policies and Bindings stipulate the conditions required to communicate with a service.They define the configuration, such as security levels, required by clients to communicate with a service.

Service Runtime
It describes 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.
  • Error behaviour decides the sequence of events when an occurs in service. This prevents the display of too much of error information to outside entities.
  • Metadata behavior governs how and whether metadata is made available to the outside world
  • Message inspection is the facility to inspect parts of a message
  • 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.
  • Parameter filtering enables preset actions to occur based on filters acting on message headers

The Messaging layer contains channels that process messages and operate on messages and message headers.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.

There are two types of channels: transport channels and protocol channels.
Transport channels read and write messages from the network, and protocol channels implement message processing protocols.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. Examples of such protocols include WS-Security and WS-Reliability.
  • WS-Security is an implementation of the WS-Security specification enabling security at the message layer.
  • The WS-Reliable Messaging channel enables the guarantee of message delivery.
  • The encoders present a variety of encodings that can be used to suit the needs of the message.
  • The HTTP channel specifies that the HyperText Transport Protocol is used for message delivery.
  • The TCP channel similarly specifies the TCP protocol.
  • The Transaction Flow channel governs transacted message patterns.
  • The Named Pipe channel enables interprocess communication.
  • The MSMQ channel enables interoperation with MSMQ applications.

Fig- A typical WCF architectural flow

Hosting and Activation
The Hosting layer describes the ways in which a WCF service can be hosted. WCF services can be hosted using either Windows Activation Services, Internet Information Services, Windows Services, .EXE, or COM+.
  •  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). 
  • COM+ components can also be hosted as WCF services.

No comments: