- Great Painters
- Accounting
- Fundamentals of Law
- Marketing
- Shorthand
- Concept Cars
- Videogames
- The World of Sports

- Blogs
- Free Software
- Google
- My Computer

- PHP Language and Applications
- Wikipedia
- Windows Vista

- Education
- Masterpieces of English Literature
- American English

- English Dictionaries
- The English Language

- Medical Emergencies
- The Theory of Memory
- The Beatles
- Dances
- Microphones
- Musical Notation
- Music Instruments
- Batteries
- Nanotechnology
- Cosmetics
- Diets
- Vegetarianism and Veganism
- Christmas Traditions
- Animals

- Fruits And Vegetables


  1. Architecture of Windows NT
  2. AutoPlay
  3. Bill Gates
  4. BitLocker Drive Encryption
  5. Calibri
  6. Cambria
  7. Candara
  8. Chess Titans
  9. ClearType
  10. Consolas
  11. Constantia
  12. Control Panel
  13. Corbel
  14. Criticism of Windows Vista
  15. Dashboard
  16. Desktop Window Manager
  17. Development of Windows Vista
  18. Digital locker
  19. Digital rights management
  20. Extensible Application Markup Language
  21. Features new to Windows Vista
  22. Graphical user interface
  23. Group Shot
  24. ImageX
  25. INI file
  26. Internet Explorer
  27. Internet Information Services
  28. Kernel Transaction Manager
  29. List of Microsoft software codenames
  30. List of Microsoft Windows components
  31. List of WPF applications
  32. Luna
  33. Mahjong Titans
  34. Meiryo
  35. Microsoft Assistance Markup Language
  36. Microsoft Expression Blend
  37. Microsoft Expression Design
  38. Microsoft Gadgets
  39. Microsoft Software Assurance
  40. Microsoft Virtual PC
  41. Microsoft Visual Studio
  42. Microsoft Windows
  43. Microsoft Windows Services for UNIX
  44. MS-DOS
  45. MSN
  46. MUI
  47. Object manager
  48. Operating system
  49. Original Equipment Manufacturer
  50. Outlook Express
  51. Peer Name Resolution Protocol
  52. Protected Video Path
  53. Purble Place
  54. ReadyBoost
  55. Recovery Console
  56. Remote Desktop Protocol
  57. Security and safety features of Windows Vista
  58. Segoe UI
  59. User Account Control
  60. WIM image format
  61. Windows Aero
  62. Windows Anytime Upgrade
  63. Windows Calendar
  64. Windows CE
  65. Windows Communication Foundation
  66. Windows Disk Defragmenter
  67. Windows DreamScene
  68. Windows DVD Maker
  69. Windows Explorer
  70. Windows Fax and Scan
  71. Windows Forms
  72. Windows Fundamentals for Legacy PCs
  73. Windows Hardware Engineering Conference
  74. Windows Live
  75. Windows Live Gallery
  76. Windows Live Mail Desktop
  77. Windows Mail
  78. Windows Media Center
  79. Windows Media Player
  80. Windows Meeting Space
  81. Windows Mobile
  82. Windows Movie Maker
  83. Windows Photo Gallery
  84. Windows Presentation Foundation
  85. Windows Registry
  86. Windows Rights Management Services
  87. Windows Security Center
  88. Windows Server Longhorn
  89. Windows Server System
  90. Windows SharePoint Services
  91. Windows Shell
  92. Windows Sidebar
  93. Windows SideShow
  94. Windows System Assessment Tool
  95. Windows System Recovery
  96. Windows Update
  97. Windows Vienna
  98. Windows Vista
  99. Windows Vista editions and pricing
  100. Windows Vista Startup Process
  101. Windows Workflow Foundation
  102. Windows XP
  103. Windows XP Media Center Edition
  104. XML Paper Specification
  105. Yahoo Widget Engine

This article is from:

All text is available under the terms of the GNU Free Documentation License: 

Windows Communication Foundation

From Wikipedia, the free encyclopedia

This subsystem is a part of .NET Framework 3.0
This subsystem is a part of .NET Framework 3.0

Windows Communication Foundation, sometimes shortened to just WCF, previously codenamed Indigo, is a new communication subsystem to enable applications, in one machine or across multiple machines connected by a network, to communicate. WCF applications can be developed in any language which can target the .NET runtime.

It is one of the four major application programming interfaces introduced as part of .NET Framework 3.0, which is included with Windows Vista and Windows Server "Longhorn"; Windows XP and Windows Server 2003 are supported as well.


The WCF programming model unifies Web Services, .NET Remoting, Distributed Transactions, and Message Queues into a single Service-oriented programming model for distributed computing. It is intended to provide the rapid application development methodology to the development of web services, with a single API for inter-process communication in a local machine, LAN, or over the Internet. WCF runs in a sandbox and provides the enhanced security model all .NET applications provide.

WCF uses SOAP messages for communication between two processes, thereby making WCF-based applications interoperable with any other process that communicates via SOAP messages. When a WCF process communicates with a nonWCF process, XML-based encoding is used for the SOAP messages but when it communicates with another WCF process, the SOAP messages are encoded in an optimized binary format. Both the encodings conform to the data structure of the SOAP format, called Infoset.

|work=MSDN Blogs |publisher=Microsoft }}</ref>

Service oriented architecture

WCF is designed in accordance with Service oriented architecture principles to support Distributed computing where services are consumed by consumers. Clients can consume multiple services and services can be consumed by multiple clients. Services typically have a WSDL interface which any WCF client can use to consume the service, irrespective of which platform the service is hosted on. WCF implements many advanced WS* web services standards such as WS-Addressing, WS-ReliableMessaging and WS-Security. While Microsoft is a board member of WS-I it is not clear how many WS-I profiles they are committing to support fully.

WCF Service

A WCF Service is composed of three parts a Service class that implements the service to be provided, a host environment to host the service, and one or more endpoints to which clients will connect. All communications with the WCF service will happen via the endpoints. The endpoints specify a Contract that defines which methods of the Service class will be accessible via the endpoint; each endpoint may expose a different set of methods. The endpoints also define a binding that specifies how a client will communicate with the service and the address where the endpoint is hosted.

WCF provides Windows Activation Services which can be used to host the WCF service. Otherwise the WCF service can also be hosted in IIS or in any process by using the Service Host class, which is provided by WCF. Services can also be self-hosted.

Defining WCF services

A WCF service class implements some service as a set of methods. In addition, it implements at least one Service Contract which defines the operations that the service can perform. It may also optionally implement Data Contracts which define what sort of data is worked upon by the exposed operations.

Contracts are defined using .NET attributes. Any class that is to be exposed as a WCF service must be marked with ServiceContract attribute, and all methods that a client can invoke using SOAP messages must be marked with OperationContract attribute. The attributes automatically generate WSDL descriptions for the exposed methods, which can then be accessed by clients, or advertised to clients.

A service can also employ multiple Service Contracts. This can be done by defining multiple .NET interfaces, each defining a Service Contract. The service class can then implement all the interfaces.

All Service Contracts have an associated Data Contract which defines the data that the service works on. If the data required by the service and the returned result is of simple types, like integers, doubles etc, then the Data Contract is defined automatically by WCF. But, if the data is of a complex type like an object or a struct, then the Data contract must be explicitly defined. Data contracts specify how the data is serialized and de-serialized.

A Data contract is defined by using a DataContract attribute on a class or structure. The members of the data structure which will be used by the service need to be marked with a DataMember attribute. Only the members marked with DataMember attribute will be transferred between the service and its client via SOAP messages.

The behavior of the Service in general and the operations in particular can be controlled using the ServiceBehavior and the OperationBehavior attributes respectively. The ServiceBehavior attribute has different properties which control the properties of the service. The ConcurrencyMode property specifies whether the service will be concurrent, i.e., whether it will support simultaneous clients or not. Similarly, the InstanceMode property specifies whether a new instance of the service will be created for each call or whether all calls from same client will be serviced by a single instance.

Defining endpoints

A WCF client connects to a WCF service via an endpoint. Each Service contract is exposed via an endpoint. An endpoint also has an address, which is a URL specifying where the endpoint can be accessed, and a binding that specifies how the data will be transferred between the service and its client. The mnemonic "ABC" can be used to remember Address / Binding / Contract. Binding specifies what communication protocols are used to access the service, whether security mechanisms are to be used, and the like. WCF includes predefined bindings for most common communication protocols such as SOAP over HTTP, SOAP over TCP, and SOAP over Message Queues etc. When a client wants to access the service via an endpoint, it has to adhere to the binding specified by the endpoint.

Communication with the service

A client can communicate with a WCF service using any of the RPC-based mechanisms in which the service can be invoked as a method call. Any call to the service will be blocking - that is, it will halt the execution of the client until the service processes the request. The client has to connect to a service using a proxy object, which is connected to the specified endpoint of the service and abstracts the service as an object. All method calls to the proxy object will be routed to the service and the proxy will return the results returned by the service to the caller.

WCF handles creating the local proxy. It retrieves from the endpoint the WSDL definition of the endpoint and creates the proxy that will communicate the data for the service using the protocol specified by the binding of the endpoint. It also has to convert the data returned by the service into a form expected by the caller.

WCF also supports non-blocking calls as well as use of the services by passing messages containing the data to be used by the service. Communicating using messages does not require the use of proxy object. The returned data will also be returned using a message. The caller will be blocked until the call to the service returns. To make use of non-blocking messaging, Message Queues need to be used to handle the delivery and receipt of the messages. Message Queues will also allow an application to work even if the service is temporarily down, with the knowledge that the request will be serviced when the server comes up again.

See also

  • .NET Framework
  • Windows Vista

Additional Resources about WCF

  • Microsoft Windows Communication Foundation: Hands-On, Craig McMurtry, Marc Mercuri, and Nigel Watling, SAMS Publishing, May 26, 2006. ISBN 0-672-32877-1

External links

  • Windows Communication Foundation, Microsoft's WCF information and samples web site.
  • Windows Communication Foundation Guide, An online guide to Windows Communication Foundation.
  • WinFX Beta Page, Microsoft's WinFX site, updated every few months for new releases.
  • Windows Communication Foundation, MSDN Windows Communication Foundation portal.
  • David Chappell: "Introducing Indigo: An Early Look", February, 2005.
  • The .NET Show: Longhorn Indigo, February, 2005.
  • WCF section on
  • Windows Communication Foundation Learning Guide From
  • SecureWithin - Expose internal endpoints to the Internet securely and easily
Retrieved from ""