WCF newbie ở đây ... Tôi đang cố gắng tự lưu trữ một dịch vụ WCF bằng cách sử dụng NetTcpBinding. Dựa trên MSDN "how-to" tutorial Tôi đã làm tất cả những ràng buộc trong mã, mà tôi sau đó thay đổi từ wsHttpBinding để NetTcpBinding, và bây giờ trông như thế này:Bạn có thể thực hiện NetTcpBinding trong mã không? Có nên không?
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();
}
Thing là, các hướng dẫn sau đó nói rằng bạn phải chạy svcutil.exe để tạo proxy cho khách hàng ... nhưng kể từ khi tôi chuyển sang NetTcpBinding, svcutil không hoạt động nữa - không thể phát hiện dịch vụ của tôi. Tôi googled vấn đề, và thấy rằng mỗi ví dụ duy nhất ra khỏi NetTcpBinding hiện các thiết lập trong file app.config, không phải trong mã, và tất cả họ thêm một điểm cuối gọi là "Mex", với loại ràng buộc của "mexTcpBinding". Dường như không có mã nào tương đương với mã này.
Vì vậy, tôi có phải thay đổi dự án của mình để sử dụng app.config và từ bỏ phương pháp dựa trên mã không? Bất cứ ai có thể giải thích cho tôi những gì Mex là, tại sao tôi cần nó, và tại sao nó (rõ ràng) không thể được gọi trong mã - hoặc nếu nó có thể, làm thế nào, hoặc tại sao nó nản lòng? Nói chung, khi nào thì tốt hơn khi sử dụng app.config và khi mã cho các dịch vụ WCF?
Tôi đã làm theo chính xác cùng hướng dẫn và các hợp đồng gọi lại mong muốn vì vậy sau khi tôi chuyển sang tcp, tôi đã có cùng một vấn đề chính xác. – bryanbcook