我有一个使用 NetTcpBinding 并在 Windows 服务中运行的 WCF 服务。远程客户端连接到此服务。到目前为止,我已经定义了使用“localhost”的端点。
如果主机有多个网络适配器,它会在所有适配器上接收消息吗?
将机器的主机名分配给端点而不是“localhost”会更好吗?
有什么优点/缺点?
我有一个使用 NetTcpBinding 并在 Windows 服务中运行的 WCF 服务。远程客户端连接到此服务。到目前为止,我已经定义了使用“localhost”的端点。
如果主机有多个网络适配器,它会在所有适配器上接收消息吗?
将机器的主机名分配给端点而不是“localhost”会更好吗?
有什么优点/缺点?
您可以使用 System.Environment.MachineName
例如:
new EndpointAddress(new UriBuilder {Scheme = Uri.UriSchemeNetTcp, Port = port, Host = System.Environment.MachineName}.Uri);
如果我希望客户端能够连接到任何外部接口以及从本地主机,我通常将 URI 设置为:
net.tcp://0.0.0.0
这也减轻了部署到多台机器的负担,因为您不需要去更改每台机器上的主机名,但是在您的环境中允许这样做可能会带来安全隐患。