WCF is a collection of .NET distributed technologies that have existed for 
	long time, but never got grouped under one roof.
	
	It considered as collection of the following technologies.
 
	- Web Services(ASMX) 
- NET Enterprise Services 
	
- MSMQ (Microsoft Messaging Queue)
	
- .NET Remoting 
Code written in WCF can 
interact across components, applications and systems and 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- Location of the service 
- 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:- HTTP
- TCP
- Peer network
- IPC (Inter-Process Communication over 
		named pipes)
- 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..
 
	There are  9 types of Standard 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:
- Simplex, 
- Duplex 
- 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 4 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 3 types of services that can be written with WCF.
- 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). 
 
- 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. 
 
- 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.