C# WCF服务和防火墙。。。有什么问题吗?

C# WCF服务和防火墙。。。有什么问题吗?,c#,wcf,delphi,firewall,delphi-2007,C#,Wcf,Delphi,Firewall,Delphi 2007,简单的问题。我正在为具有附加数据库连接的应用程序进行概念验证,因此我将创建一个WCF服务来包装数据库。多用户环境将在集中服务器上安装此服务,并在其本地系统上安装客户端应用程序。这些用户将自动处理防火墙问题,因此这是可以接受的 但是单用户环境将在单个系统上运行服务和客户端应用程序。服务主机目前还没有确定的形状,但很可能它将被托管在应用程序本身中或作为Windows服务 不幸的是,客户端应用程序是一个WIN32 Delphi应用程序,它需要一种简单的方法来访问服务。优选地,单用户版本应该使用与多用户

简单的问题。我正在为具有附加数据库连接的应用程序进行概念验证,因此我将创建一个WCF服务来包装数据库。多用户环境将在集中服务器上安装此服务,并在其本地系统上安装客户端应用程序。这些用户将自动处理防火墙问题,因此这是可以接受的

但是单用户环境将在单个系统上运行服务和客户端应用程序。服务主机目前还没有确定的形状,但很可能它将被托管在应用程序本身中或作为Windows服务

不幸的是,客户端应用程序是一个WIN32 Delphi应用程序,它需要一种简单的方法来访问服务。优选地,单用户版本应该使用与多用户版本相同的技术来访问服务器,这意味着它的行为类似于SOAP客户机,将WSDL导入并转换为Delphi代码

仍然不是问题,但我必须考虑在这个设置中可能遇到的问题,其中最重要的问题是:可能关闭连接端口的防火墙。


那么,有人知道在这个单用户环境中可能出现的任何防火墙问题吗?

您没有提到您正在使用哪个WCF通道-我假设是basicHttpBinding。通常,如果您的本地服务使用自托管绑定到127.0.0.1,并且on-box客户机以这种方式访问它,那么您应该可以。我知道没有防火墙会破坏你的环回适配器。但是,如果您将服务绑定到机器的IP,您可能会受到防火墙的影响


如果客户端两端都有WCF 3.5(抱歉,我对Delphi一无所知),那就试试看。

您没有提到您使用的是哪个版本的Delphi,但我曾经很难让Delphi 2005使用
BasichtpBinding
导入WCF服务。由于
WSDL
被分割在许多页面中,Delphi中的SOAP导入向导无法理解它。最后,我为Delphi客户端的WCF服务编写了一个ASMX包装器。

我们基本上可以使用任何WCF通道,但Delphi喜欢连接到某种HTTP绑定。它仍然是一个概念证明,所以其他替代方案仍然是开放的。添加netNamedPipeBinding作为仅本地内容的最佳选项-不确定“Win32”Delphi是否指非.NET,我的Delphi知识非常丰富。是的,Delphi是非NET的,这限制了我的选择。有了命名管道解决方案,我将有很多关于如何构建命名管道客户机的内容需要了解。我有使用命名管道的经验,只是不知道.NET将如何发送数据。因此,对于POC,首选更基本的HTTP解决方案……我使用了Delphi 2007标记。:-)服务本身将很简单,因为我们不会在这个项目中使用任何复杂的类。(只是基本数据类型,一些数据将作为XML字符串传递。)该服务是一个简单数据存储的包装器。Delphi2007在导入.NETWSDL方面也做得更好。这已经得到改进。