wcf ChannelFactory类

ChannelFacTory对象主要用在中间层,目的是提高系统的性能,并且不需要每次都为每个客户端实例化一个新的代理对象。

ChannelFactory<T>类:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.ServiceModel;

using Wrox.CarRentalService.Contracts;



namespace Wrox.CarRentalService.ConsoleClient

{

    class Program

    {

        static void Main(string[] args)

        {

            ChannelFactory<ICarRentalService> factory = null;

            try

            {

                BasicHttpBinding binding = new BasicHttpBinding();

                EndpointAddress address = new

                EndpointAddress("http://localhost:9876/WroxCarRentalService");

                factory = new ChannelFactory<ICarRentalService>(binding, address);

                ICarRentalService channel = factory.CreateChannel();

                PriceCalculationResponse resp =

                channel.CalculatePrice

                (DateTime.Now, DateTime.Now.AddDays(5),

                "Graz", "Wien");

                Console.WriteLine("Price to Wien {0}", resp.Price);

                factory.Close();

            }

            catch (CommunicationException)

            {

                if (factory != null)

                {

                    factory.Abort();

                }

            }

            catch (TimeoutException)

            {

                if (factory != null)

                {

                    factory.Abort();

                }

            }

            catch (Exception ex)

            {

                if (factory != null)

                {

                    factory.Abort();

                }

                Console.WriteLine(ex.ToString());

            }

            Console.WriteLine("Proxy closed");

        }

    }

}

 

2013-03-30

你可能感兴趣的:(channel)