Я разрабатываю приложение на C#. Я создал приложение ServiceHost, в котором будет размещена служба wcf. клиент вызовет ServiceHost.exe, передав некоторый аргумент. Я пробовал ниже.singleton WCF service in C#
static class ServiceHost
{
private static ITest channel = null;
static void Main(string[] args)
{
if (String.Compare(args[0], "dooperation", true) == 0)
{
NetNamedPipeBinding binding = new NetNamedPipeBinding(NetNamedPipeSecurityMode.Transport);
binding.ReceiveTimeout = TimeSpan.MaxValue;
EndpointAddress ep = new EndpointAddress(address);
channel = ChannelFactory<ITest>.CreateChannel(binding, ep);
channel.DoOpertion1();
channel.Close() // close service
// Make sure the application runs!
Application.Run();
GC.KeepAlive(m_singleInstance);
}
else if (String.Compare(args[0], "stop", true) == 0)
{
NetNamedPipeBinding binding = new NetNamedPipeBinding(NetNamedPipeSecurityMode.Transport);
binding.ReceiveTimeout = TimeSpan.MaxValue;
EndpointAddress ep = new EndpointAddress(address);
channel = ChannelFactory<ITest>.CreateChannel(binding, ep);
channel.DoOpertion2();
channel.Close() // close service
// Exit Appli
Application.Exit();
}
}
}
Поэтому здесь я создаю канал связи, вызывая метод и закрывая канал. , но создавая канал имен, а затем канал связи и канал обслуживания потребляют больше времени, поэтому я хочу оптимизировать вызов, чтобы он создавал единый экземпляр канала связи службы WCF всякий раз, когда клиент вызывает ServiceHost.exe.
Есть ли способ создать единый экземпляр канала? Есть ли побочный эффект, если мы продолжаем открывать канал имен/каналов связи.
Спасибо за ваш ответ. Не могли бы вы поделиться кодом для повторного использования канала. – user3106005