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 и отказаться от подхода, основанного на коде? Может ли кто-нибудь объяснить мне, что такое Mex, зачем он мне нужен, и почему он (по-видимому) не может быть вызван в коде - или, если это возможно, как или почему он не рекомендуется? В общем, когда лучше использовать app.config и когда код для служб WCF?