WCF новичок здесь... Я пытаюсь самостоятельно разместить службу WCF с помощью NetTcpBinding. Основываясь на учебном пособии MSDN "Как сделать" , я выполнил всю привязку кода, после чего я изменил ее с WsHttpBinding на NetTcpBinding и теперь выглядит например:
var baseAddress = new Uri("net.tcp://localhost:8000/MyWebService");
var selfHost = new ServiceHost(typeof(ConcreteWebService), baseAddress);
try {
var binding = new NetTcpBinding();
binding.Security.Mode = SecurityMode.Message;
selfHost.AddServiceEndpoint(typeof(IWebService), binding, "TRWebService");
selfHost.Open();
Console.WriteLine("The service is ready at {0}", baseAddress.AbsoluteUri);
Console.WriteLine("Press <ENTER> to terminate service.");
Console.WriteLine();
Console.ReadLine();
selfHost.Close();
} catch (CommunicationException ce) {
Console.WriteLine("An exception occurred: {0}", ce.Message);
selfHost.Abort();
}
В то время в учебнике говорится, что вы должны запустить svcutil.exe для создания прокси для клиента... но поскольку я переключился на NetTcpBinding, svcutil больше не работает - не удается обнаружить мой сервис. Я искал эту проблему и обнаружил, что каждый отдельный пример NetTcpBinding делает настройку в файле app.config, а не в коде, и все они добавляют конечную точку, называемую "Mex", с обязательным типом "mexTcpBinding". Кажется, что нет никакого эквивалента этого кода.
Итак, мне нужно изменить проект, чтобы использовать app.config, и отказаться от подхода на основе кода? Может ли кто-нибудь объяснить мне, что такое Мекс, зачем мне это нужно, и почему его (по-видимому) нельзя вызвать в коде - или если он может, как или почему он обескуражен? В общем, когда лучше использовать app.config и когда код для служб WCF?