Click here to Skip to main content
15,894,410 members
Articles / Desktop Programming / Windows Forms

Integrating WCF Services

Rate me:
Please Sign up or sign in to vote.
4.84/5 (12 votes)
24 Apr 2008CPOL3 min read 44.9K   483   46  
This article describes how WCF services can be loaded on-the-fly (without prior knowledge of the services’ contracts), setting its parameters and sequencing their invocation.
using System;
using System.Collections.Generic;
using System.Text;
using System.ServiceModel.Description;
using Integrator.Framework.DynamicProxyModel;

namespace Integrator.Framework.ServiceManagerModel
{
    public class ServiceManager
    {
        private static ServiceManager manager = null;
        private ServiceProxyList serviceInfoList = null;

        private ServiceManager()
        {
            this.serviceInfoList = new ServiceProxyList();
        }

        public static ServiceManager Instance()
        {
            if (manager == null)
            {
                manager = new ServiceManager();
            }

            return manager;
        }

        public ServiceProxy AddService(string serviceWsdlUri, string contractName)
        {
            DynamicProxyFactory factory = new DynamicProxyFactory(serviceWsdlUri);

            ServiceProxy serviceProxy = new ServiceProxy(factory.CreateProxy(contractName), contractName);
            this.serviceInfoList.Add(serviceProxy);
            
            return serviceProxy;
        }

        public ServiceProxyList AddService(string serviceWsdlUri)
        {
            DynamicProxyFactory factory = new DynamicProxyFactory(serviceWsdlUri);
            ServiceProxyList proxies = new ServiceProxyList();

            foreach (ContractDescription description in factory.Contracts)
            {
                ServiceProxy serviceProxy = new ServiceProxy(factory.CreateProxy(description.Name), description.Name);
                this.serviceInfoList.Add(serviceProxy);
                proxies.Add(serviceProxy);
            }            

            return proxies;
        }
    }
}

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.

License

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


Written By
Software Developer (Senior)
Singapore Singapore
Yes, I design. Then, I code. Next, I refactor.

Comments and Discussions