Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 跨服务器的WCF服务_C#_Wcf - Fatal编程技术网

C# 跨服务器的WCF服务

C# 跨服务器的WCF服务,c#,wcf,C#,Wcf,好的,伙计们。这更像是一个“这能做到吗?”的问题,而不是“你是如何做到的?” 我有一个WCF项目,提供多种服务,一切都很好。其中两个将封装在Windows服务安装程序中,安装程序将在两个不同的服务器上运行。如果一个服务在两台不同的机器上,是否可以从另一个服务调用一个服务中的方法?或者我必须使用我以前见过的回调场景吗 我很感激任何建议或想法。谢谢。这取决于您正在使用的绑定以及两台计算机上和之间的任何防火墙/网络路由规则 如果您使用的是namedPipeBinding,答案是否定的,因为命名管道绑定

好的,伙计们。这更像是一个“这能做到吗?”的问题,而不是“你是如何做到的?”

我有一个WCF项目,提供多种服务,一切都很好。其中两个将封装在Windows服务安装程序中,安装程序将在两个不同的服务器上运行。如果一个服务在两台不同的机器上,是否可以从另一个服务调用一个服务中的方法?或者我必须使用我以前见过的回调场景吗


我很感激任何建议或想法。谢谢。

这取决于您正在使用的绑定以及两台计算机上和之间的任何防火墙/网络路由规则

如果您使用的是namedPipeBinding,答案是否定的,因为命名管道绑定到一台机器。但是,如果您正在使用任何其他绑定,如webHttp、basicHttp等,您应该可以。WCF的美妙之处在于,您应该能够在必要时使用不同的绑定来启动另一个服务端点——因此,即使您使用的是命名管道,也应该非常直接地使用不同的绑定来交换它


一个WCF服务当然可以是另一个WCF服务的客户端。

这取决于您正在使用的绑定以及两台机器上和两台机器之间的任何防火墙/网络路由规则

如果您使用的是namedPipeBinding,答案是否定的,因为命名管道绑定到一台机器。但是,如果您正在使用任何其他绑定,如webHttp、basicHttp等,您应该可以。WCF的美妙之处在于,您应该能够在必要时使用不同的绑定来启动另一个服务端点——因此,即使您使用的是命名管道,也应该非常直接地使用不同的绑定来交换它


一个WCF服务当然可以是另一个WCF服务的客户端。

这就是WCF的全部要点……这就是WCF的全部要点……太棒了。非常感谢。我就是这么想的。旧代码使用的是DuplexChannelFactory,我突然想到,我可以直接调用服务,而无需创建通道。我相信我们的绑定是basicHttp,但我必须仔细检查才能确定。在调用方服务中,我做了如下操作:OtherService foo=new OtherService()。。。foo.CallMethod();因此,根据您所说的,如果绑定足够简单,我应该能够跨服务器进行绑定。好极了使此代码升级更容易!:-这应该是完全一样的。您不应该有任何问题,只要机器可以相互看到,并且防火墙允许在您使用的任何端口上进行入站/出站连接。非常好。。。非常感谢,先生!非常感谢!好啊这就是问题所在。我在一台服务器上有一个WCF服务,试图连接到多台服务器上的另一个WCF服务。我们试图做的是让多个盒子同时处理。一个WCF服务如何与多个盒子通信?换句话说,调用服务如何区分不同的服务器?到目前为止,我已经将调用的服务包装在Windows服务包装器中,使用DuplexChannelFactory和ChannelFactory没有任何效果。Telnet也不会看到我们在下游框上的开放端口。有什么建议吗?太好了。非常感谢。我就是这么想的。旧代码使用的是DuplexChannelFactory,我突然想到,我可以直接调用服务,而无需创建通道。我相信我们的绑定是basicHttp,但我必须仔细检查才能确定。在调用方服务中,我做了如下操作:OtherService foo=new OtherService()。。。foo.CallMethod();因此,根据您所说的,如果绑定足够简单,我应该能够跨服务器进行绑定。好极了使此代码升级更容易!:-这应该是完全一样的。您不应该有任何问题,只要机器可以相互看到,并且防火墙允许在您使用的任何端口上进行入站/出站连接。非常好。。。非常感谢,先生!非常感谢!好啊这就是问题所在。我在一台服务器上有一个WCF服务,试图连接到多台服务器上的另一个WCF服务。我们试图做的是让多个盒子同时处理。一个WCF服务如何与多个盒子通信?换句话说,调用服务如何区分不同的服务器?到目前为止,我已经将调用的服务包装在Windows服务包装器中,使用DuplexChannelFactory和ChannelFactory没有任何效果。Telnet也不会看到我们在下游框上的开放端口。有什么建议吗?