#c# #.net #wcf
#c# #.net #wcf
Вопрос:
Я получил службу, которая предлагает именованный канал в качестве адреса точки подключения / конечной точки для сторонних приложений.
то, что я делал до сих пор, это:
Uri[] baseAddress = new Uri[]{
new Uri("net.pipe://localhost")};
string PipeName = "Calculator";
serviceHost = new ServiceHost(typeof(CalculatorImplementation), baseAddress);
// Add a mex endpoint
ServiceMetadataBehavior smb = new ServiceMetadataBehavior();
smb.HttpGetEnabled = true;
smb.HttpGetUrl = new Uri("http://localhost:8001/CalculatorServer");
serviceHost.Description.Behaviors.Add(smb);
serviceHost.AddServiceEndpoint(typeof(ICalculator), new NetNamedPipeBinding(), PipeName);
serviceHost.Open();
Я подключаюсь к своему клиенту, используя ChannelFactory, подобный этому:
ChannelFactory<ICalculator> pipeFactory = new ChannelFactory<ICalculator>(new NetNamedPipeBinding(), new EndpointAddress("net.pipe://localhost/Calculator"));
ICalculator pipeProxy = pipeFactory.CreateChannel();
Но на самом деле мне интересно, существует ли более «обычный» способ подключения к сервису.
Действительно ли мне нужно сообщать каждому стороннему приложению «строку подключения» / адрес конечной точки моего именованного канала («net.pipe://localhost / Calculator»)?
Я подумал, что может быть лучший способ добиться этого, но я пока не нашел способа сделать это.
Я уже создал эту «конечную точку mex», но я не уверен, как использовать эту конечную точку для заполнения именованного канала.
Мои вопросы таковы: я правильно заполняю интерфейс сервиса? и как мне правильно использовать конечную точку метаданных в клиентском приложении?
Комментарии:
1. «Может ли кто-нибудь помочь мне встать на ноги в этом вопросе?» Это слишком широко. Задайте более конкретный вопрос, а затем, если у вас возникнут дополнительные вопросы, задайте новые вопросы.
2. причины … спасибо за подсказку