Click here to Skip to main content
13,451,455 members (44,433 online)
Click here to Skip to main content


48 bookmarked
Posted 22 May 2010

Dynamically Generate a WCF Proxy

, 8 Jan 2011
Save time by using a dynamically generated WCF proxy
using System;
using System.Collections.Generic;
using System.Linq;
using System.ServiceModel;
using System.ServiceModel.Channels;
using System.Text;
using SharedInterface;

namespace DynamicWcfProxyClient
   class Program : IMessageCallback 
      static void Main(string[] args)
         new Program().Start();

      private void Start()
         EndpointAddress endpointAddress = new EndpointAddress(Configuration.CreateServerUriString());
         Binding binding = Configuration.CreateBinding();

         Console.WriteLine("Using a normal channelfactory.");
         SendMessageUsingChannelFactory(binding, endpointAddress);

         Console.WriteLine("Using a duplex channelfactory with callbacks.");
         SendMessageUsingDuplexChannelFactory(binding, endpointAddress);


      private void SendMessageUsingDuplexChannelFactory(Binding binding, EndpointAddress endpointAddress)
         DuplexChannelFactory<IMessageSenderWithCallBack> duplexChannelFactory = new DuplexChannelFactory<IMessageSenderWithCallBack>(this, binding, endpointAddress);
         IMessageSenderWithCallBack duplexMessageSender = duplexChannelFactory.CreateChannel(endpointAddress);
         for (int messageCounter = 0; messageCounter < 10; messageCounter++)
            Console.WriteLine("Sending message to server");
            duplexMessageSender.ShowMessage(string.Format("Message {0}", messageCounter));

      private void SendMessageUsingChannelFactory(Binding binding, EndpointAddress endpointAddress)
         ChannelFactory<IMessageSender> channelFactory = new ChannelFactory<IMessageSender>(binding, endpointAddress);
         IMessageSender messageSender = channelFactory.CreateChannel(endpointAddress);
         for (int messageCounter = 0; messageCounter < 10; messageCounter++)
            Console.WriteLine("Sending message to server");
            messageSender.ShowMessage(string.Format("Message {0}", messageCounter));

      public void OnMessageSend(string messageSend)
         Console.WriteLine("Retrieved Callback {0}", messageSend);

By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.


This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


About the Author

Patrick Kalkman
Netherlands Netherlands
Patrick Kalkman is a senior Software Architect with more than 20 years professional development experience. He works for SimpleTechture where he helps teams develop state of the art web applications.

Patrick enjoys writing his blog. It discusses agile software development. Patrick can be reached at

Published Windows 8 apps:

Published Windows Phone apps:


Best Mobile article of March 2012
Best Mobile article of June 2012

You may also be interested in...

Permalink | Advertise | Privacy | Terms of Use | Mobile
Web03-2016 | 2.8.180318.3 | Last Updated 8 Jan 2011
Article Copyright 2010 by Patrick Kalkman
Everything else Copyright © CodeProject, 1999-2018
Layout: fixed | fluid