It is important that you understand the client objects and client channel objects because both of these utilize
the ChannelFactory object. The ChannelFactory object is responsible for creating and supporting all
the runtime client invocations.
As stated earlier, you can either create clients on demand using the ChannelFactory or by using the
Service Model Metadata Utility svcutil.exe. The svcutil utility automatically generates the handling of
the ChannelFactory, but as stated before, creating the channels on demand provides you more control
over the creation and handling of the channels. For example, you can repeatedly create a new channel
from an existing factory.
The following code illustrates using the ChannelFactory to create a channel to a service by specifying the
service contract name:
EndpointAddress ea = new EndpointAddress(“tcp.net://localhost:8000/WCFService”);
BasicHttpBinding bb = new BasicHttpBinding();
WCFClientApp.TCP.IServiceClass client =
ChannelFactory<IServiceClass>.CreateChannel(bb, ea);
client.PlaceOrder(Val1);
In this example, the address and binding were specified in code and passed as parameters to the
CreateChannel method.
The following section details the ChannelFactory class, which is used to create and manage channels
that are used by the clients to send messages and communicate with service endpoints.