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 = newEndpointAddress("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