Skip to main content

WCF..Why Communication Foundation?



WCF (Basics..for building effective Services)

WCF:  Windows Communication Foundation
It includes a collection of of .NET distributed technologies that have existed for long , but never got grouped under one name.
WCF can be considered as collection of the following technologies.
  1. Web Services(ASMX)
  2. NET Enterprise Services
  3. MSMQ
  4. .NET Remoting

Code written in WCF can interact across components, applications and systems.
WCF is in accordance with SOA (Service Oriented Architecture).

Following Sections provide the details of these ABCs.

Addresses

In WCF, every service has a unique address. The address provides two important elements
A)    Location of the service
B)     Transport protocol or transport schema used to communicate with the service.

 The location indicates the name of the target machine, site, or network; a communication port, pipe, or queue; and an optional specific path or URI.
WCF supports the following transport schemas:
A)    HTTP
B)     TCP
C)    Peer network
D)    IPC (Inter-Process Communication over named pipes)
E)     MSMQ\

Addresses have the following format:
[base address]/[URI]
(Note: URI is optional and can be omitted, however when it is present it gets merged with the base address to provide the final address, where the service can be located).

 base address format:
[transport]:// [machine or domain][:optional port]

Following section is meant only to make you familiar with the various formats that are used with specific type of transport protocol.
It can be skipped if desired.


Using different available address formats.

TCP Addresses

TCP addresses use net.tcp for the transport and generally uses a port:
net.tcp ://{ machine or domain}/ServiceName
e.g. Net.tcp//localhost/PService
(Note: If a port number is not specified, Port 808 is used as default)

HTTP Addresses

HTTP addresses use http for transport, and https can be used if secure transport is required.
e.g.http://localhost:8001
When the port number is not mentioned, it defaults to 80.

IPC Addresses

IPC addresses use net.pipe for transport.
Note: If a service uses this (i.e. named pipes, it can accept call only from the same machine).
e.g. net.pipe://localhost/PrPipe

 MSMQ Addresses

MSMQ addresses use net.msmq for transport
 When private queues are used, queue type needs to be mentioned and is  omitted for public queues:
net.msmq://localhost/private/PService (using private queue)
net.msmq://localhost/PService             (using Public Queue)

Peer Network Address

Peer network addresses use net.p2p for transport peer network name, path and port needs to be specified..

Bindings

The Standard Bindings Following 9 types of Bindings are defined for WCF:

Basic Binding


      BasicHttpBinding class provides this type of binding.
It  exposes a WCF service as a legacy ASMX web service
This binding is extremely useful when the intent is to design a WCF service that should provide backward compatibility with WebServices.


TCP binding
      NetTcpBinding class provides this type of binding.
It uses TCP for cross-machine communication on the intranet.
 It supports a variety of features, including reliability, transactions, and security, and is optimized for WCF-to-WCF communication.
Restriction: It requires both the client and the service to use WCF.

Peer network binding
NetPeerTcpBinding class provides this type of binding and  uses peer networking as a transport. The peer network-enabled client and services all subscribe to the same grid and broadcast messages to it..

IPC binding
NetNamedPipeBinding class provides this type of binding and uses named pipes as a transport for same-machine communication. It is the most secure binding as it cannot accept calls from outside the machine and it supports a number of features similar to the TCP binding.

Web Service (WS) binding
WSHttpBinding class provides this type of binding, and  uses HTTP or HTTPS for transport..

Federated WS binding
WSFederationHttpBinding class provides this type of binding, this is a specialization of the WS binding, offering support for federated security..

Duplex WS binding
 WSDualHttpBinding class provides this type of binding .It is similar to the WS binding except it also supports bidirectional communication from the service to the client .

MSMQ binding

NetMsmqBinding class provides this type of binding and uses MSMQ for transport and is suitable for  disconnected queued calls..

MSMQ integration binding
MsmqIntegrationBinding class provides this type of binding and converts WCF messages to and from MSMQ messages.
This is most suitable for usage when Service legacy MSMQ clients interoperability is critical.

Message Transfer Patterns
WCF use the following three messaging patterns:
  1. Simplex,
  2. Duplex
  3. Request-Reply.

Simplex communication is commonly referred to as one-way communication. This approach is used when asynchronous write-only services are required. It simply means if only one directional (client to Service) communication is required, use this pattern.

     Duplex communication provides true asynchronous two-way communications.
    (using callback  operations).

     In simplex and duplex communication, the consumer is not locked into waiting for a reply.

   Request-Reply: General enough not to provide any details


Defining Bindings is one the most critical stages in WCF Service development.
Correct type of binding can save a lot of time and effort need to build an effective service.
As an effort to make you comfortable in Service development below is the checklist that needs to be referred before finalizing bindings for your service.

Interoperability Level:
Make sure  if communication will only be in  a .NET to .NET scenario, or legacy ASMX service, or if it is to be used by a consumer that adheres to the WS* specifications.

Encoding:
           Select correct type of encoding, from among
           Text
           Message Transmission Optimization Mechanism (MTOM)
           Binary.

     Transport Protocols
           Select from  transport options TCP, HTTP, Named Pipe, and MSMQ.

    Messaging patterns :simplex, duplex, and request-reply.
    Security Considerations: Windows security, WS-Security, Transport level security.
    Transactions and reliable sessions

Contracts:

 The contract is a platform-neutral and standard way of describing what the service does.
WCF defines four types of contracts.

Service contracts
Describe which operations the client can perform on the service.
Data contracts
Define which data types are passed to and from the service.
Fault contracts
Define which errors are raised by the service, and how the service handles and propagates errors to its clients.
Message contracts
Allow the service to interact directly with messages. Message contracts can be typed or untyped


Service Type Support
The following are the three types of services that can be written with WCF.
  1. Typed Services: These services use exact parameterization(passing the required parameters in the correct order, format and type) when calling a service method and respond with a well-defined type(as expected by the caller).

  1. Un-Typed Services: XML is the core of this type as it is used to transport the input parameters and the response output is also in XML. These services are the most flexible, but provide very little value back to the consumer.

  1. Typed Message Services: A custom type is defined that will contain the required input parameters and one more type that will wrap up the output parameters.
          This approach is generally known as Request Object / Response Object, since these are the types of
          objects that are result of these types of services.


This  tutorial is just meant as a base for  understanding the nitty-gritties of WCF.
Next tutorial will cover the detailed implementation of the theoretical sections discussed here.

Till then, Happy Coding..

Comments

  1. Hi its very helpful to the WCF beginers. Thanks alot..

    ReplyDelete

Post a Comment

Popular posts from this blog

Asp.Net 4.0: An Overview-Part-III

This is the last post in the series which will explore the following new features of ASP.Net 4.0  Performance Monitoring for Individual Applications in a Single Worker Process Web.config File Refactoring Permanently Redirecting a Page Expanding the Range of Allowable URLs Performance Monitoring for Individual Applications in a Single Worker Process It is a common practice to host multiple ASP.NET applications in a single worker process, In order to increase the number of Web sites that can be hosted on a single server. This practice results in difficulties for server administrators to identify an individual application that is experiencing problems. ASP.NET 4 introduces new resource-monitoring functionality introduced by the CLR. To enable this functionality, following XML configuration snippet is added to the aspnet.config configuration file.(This file is located in the directory where the .NET Framework is installed ) <?xml version="1.0" encoding="UTF-8"

WCF-REST Services-Part-II

HOW REST is implemented in WCF Part-I of the series explored the REST conceptually and this post will explore how REST is implemented in WCF. For REST implementation in WCF, 2 new attributes namely WebGetAttribute and WebInvokeAttribute are introduced in WCF along with a URI template mechanism that enables you to declare the URI and verb to which each method is going to respond. The infrastructure comes in the form of a binding ( WebHttpBinding ) and a behavior ( WebHttpBehavior ) that provide the correct networking stack for using REST. Also, there is some hosting infrastructure help from a custom Service¬Host ( WebServiceHost ) and a ServiceHostFactory ( WebServiceHostFactory ). How WCF Routes messages WCF routes network messages to methods on instances of the classes defined as implementations of the service. Default behavior ( Dispatching ) for WCF is to do this routing based on the concept of action. For this dispatching to work, an action needs to be present in ev

SOLID principles -Code Samples and Free Ebook

I planned to write code samples for SOLID principle implementations, however I am a firm believer of " NOT RE-INVENTING THE WHEEL ", when all you need is use the wheels and make a new CAR. Going by the ideology, I have found an excellent  SOLID principles FREE -Ebook ( covering all aspects of SOLID design principles, with Code sample). This book is an excellent visual aid to remember these principles, as it uses Motivational posters for explaining SOLID design principles. One additional advantage to the above mentioned book is the Code-Refactoring ebook . Both of these books can be downloaded from this EBOOK download Link Both of these books can be downloaded form here. Hope this book proves useful... Till next we connect.... Happy Learning..