Some WCF Vocabulary
I am taking a class of WCF and WF this week from Matt Milner of PluralSight. This has been a great first day and as I am trying to learn and grok WCF, I thought it would be handy to keep a vocabulary list. Here it is for your reference as well.
Matt is a very professional and effective speaker, BTW. have learned a few trainer items from watching this guy in action. Well done.
Particular protocol specific settings that can be made on a particular binding. For example, if we are using an HTTP binding, we may specify behaviors for that HTTP binding such as whether or not the service called should return an XML message for an invoked method. Also, behaviors control service features directly, like threading and instancing.
Client creates a channel, which can be thought of as a pipe to the service. A channel allows
This is typically an interface (read, class interface) reflected by the runtime to define the wire messages such that the object structures can be serialized, transported across the wire, and reconstituted on the other side.
In my mind, endpoints are like the water nozzles on the outside of my house. Clients communicate with service endpoints to exchange messages with the service. End points have several notable parts.
The location of a particular service endpoint. If the endpoint exists via HTTP, this may be a URL, if it is a TCP/IP-bound endpoint, the address will look more like an IP address.
This is the model for communication between the client and server. For example, is this SOAP, MSMQ, a binary TCP/IP protocol, etc. Bindings are used to declare encoding of messages on the wire, transport mechanism, and details of how to use the protocol involved with the particular binding. This lets users of a given endpoint understand how to communicate with the endpoint.
Usually a .Net interface, this is set of rules that dictate the format of messages on the wire.
Data items describing particular attributes of a given service endpoint. These metadata items are available at runtime, thorough MEX, so that endpoints may be self describing to potential clients.
MEX (Meta Data Exchange)
This is an endpoint one can configure for a given Service Host that allows the host to be required for data about the services it is hosting. For example, using MEX, I can ask a given host for all bindings for a particular service I am interested in, and then choose to communicate with the binding of my choice. MEX is a WS-* addition to the WSDL specification of SOAP.
// retrieve the service endpoints using MEXServiceEndpointCollection endpoints = MetadataResolver.Resolve(typeof(IAuctionService),new EndpointAddress("http://localhost:8080/auction/mex"));
A class within the client application that wraps the service in a set of strongly typed constructs such that the consuming client is abstracted from the wire level message exchange.
This is the interface boundary of the service being hosted and consumed. The service contract defines what operations may be called on the service, and what data types are needed for each operation. Think of this as WSDL++. Service contract definition is derived from the class being exposed as a service.
A WCF class meant to manage the hosting of a particular WCF service. This can be done by me in an application of my own, or it can be done by another managed system that is aware of ServiceHost. An example is IIS. IIS is a managed Service Host because it knows about WCF and implements ServiceHost itself. The ServiceHost manages the lifecycle of the service it is hosting.
ServiceHost.Abort() provides an emergency shutdown.