我得到了一个服务,它提供了一个命名管道作为第三方应用程序的连接点/端点地址。
到目前为止我所做的是:
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端点”,但我不确定如何使用此端点来填充命名管道。
我的问题是: 我正确地填充服务界面? 和 如何在客户端应用程序中使用元数据端点?