Skip to main content

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.


Popular posts from this blog

PDCA & SCRUM (or Agile); Why is it important?

The PDCA (Plan DO Check Act) cycle was made popular by Dr. W. Edwards Deming. This is a scientific cyclic process which can be used to improve the process (or product). This is cyclic in nature and usually time boxed. Plan  This is the first stage of the process. During this step the team discusses the objectives, the process and the clear conditions of exit (conditions of acceptance). This stage sets the measurable and achievable goals for the team. DO Team works together to achieve the objective set in the planning phase. Team works with the set of agreed process. Check Once the implantation is done team regroups and verifies the output and compares it to the agreed conditions of acceptance decided during the planning phase. The deviation, if any, is noted down. ACT If any deviation in planned tasks is observed during the Check stage, a root cause analysis is conducted. Team brainstorms and identifies the changes required to prevent such deviations in future. Team also

Product Backlog: Should you write everything in user story format?

I like user stories a lot. They help everyone talk the same language and results in a better product. User story alone does not constitute product requirement. User story is supposed to be a place holder for discussion which should happen between the team, Product Owner and the customer. This discussion result in a common understanding which along with the user story content is the product requirement. This format captures the essence of requirement without confusing the readers User Story is only one of the many different ways in which requirements can be represented. This is not mandatory in any Agile “process”. But many have made this mandatory. I have seen many spending countless hours trying to write the requirements in user story format when they could have easily written that in simple one-line sentence in few minutes.   I have seen team members refusing to even discuss the requirement until product owner rewrote the requirement in user story format. Once I

Why is potentially shippable product quality important

Agile teams work in iterations. During this period, they are supposed to work on product increments which can be “delivered” at the end of iteration. But how you know that the correct product was delivered? Many teams have different kinds of acceptance criteria and Definition of Done (DoD). But in many cases, this “done” is not the real “done” there might be some testing pending, some integration or review pending or anything else which prevents the actual use of the product increment. Many of these teams will need additional iterations to finish hardening their products. Many teams will implement different types of “gates” or approval steps to move to next stage. The free flow of product will be interrupted. They might end up doing mini waterfall within their agile process. Many don’t even realize this. This results in poor quality and requires additional effort to “harden” the product. Potentially Shippable Product increment The acceptance criteria and DoD should be modified