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

posted @ 2013-03-30 17:20  woshiliyuan  阅读(721)  评论(0编辑  收藏  举报