internal static WcfChannelWrapper <T> CreateServiceClient <T>() where T : class { string typeName = typeof(T).FullName; ChannelFactory cf; if (!channelFactoryCache.TryGetValue(typeName, out cf)) { lock (cacheLocker) { if (!channelFactoryCache.TryGetValue(typeName, out cf)) { if (typeof(T) == typeof(IWcfConfigService)) { var configServiceAddress = ConfigurationManager.AppSettings[WCFCONFIGSERVICE_ADDRESS_KEY]; if (string.IsNullOrEmpty(configServiceAddress)) { throw new Exception("Please set [" + WCFCONFIGSERVICE_ADDRESS_KEY + "] appSettings in your config!"); } var binding = new NetTcpBinding(); binding.Security.Mode = SecurityMode.None; var address = string.Format("net.tcp://{0}", configServiceAddress); cf = new ChannelFactory <IWcfConfigService>(binding, address); } else if (typeof(T) == typeof(IWcfLogService)) { var logServiceAddress = ConfigurationManager.AppSettings[WCFLOGSERVICE_ADDRESS_KEY]; if (string.IsNullOrEmpty(logServiceAddress)) { throw new Exception("Please set [" + WCFLOGSERVICE_ADDRESS_KEY + "] appSettings in your config!"); } var elements = new List <BindingElement>(); elements.Add(new BinaryMessageEncodingBindingElement()); elements.Add(new TcpTransportBindingElement()); var binding = new CustomBinding(elements); var address = string.Format("net.tcp://{0}", logServiceAddress); cf = new ChannelFactory <IWcfLogService>(binding, address); } else { var endpoint = GetWcfClientEndpointConfiguration(typeof(T)); cf = CreateChannelFactory <T>(endpoint); WcfSettingManager.Init <T>(); ConfigUpdateManager.InitClient(); if (WcfSettingManager.CurrentClientSetting <T>().WcfLogSetting.StartInfoSetting.Enabled) { var log = WcfLogProvider.GetClientStartInfo(typeof(T).FullName, "WcfServiceClientFactory.CreateServiceClient", endpoint); WcfServiceLocator.GetLogService().LogWithoutException(log); } } channelFactoryCache[typeName] = cf; } } } return(new WcfChannelWrapper <T>((cf as ChannelFactory <T>).CreateChannel())); }
public static void StartService(Type serviceType) { try { host = WcfServiceHostFactory.CreateServiceHost(serviceType); host.Open(); ConfigUpdateManager.InitServer(); } catch (Exception ex) { LocalLogService.Log(ex.ToString()); throw; } }