简单的问题。我正在为具有额外数据库连接的应用程序进行概念验证,因此我将创建一个WCF服务来包装数据库。多用户环境将此服务安装在其本地系统上具有客户端应用程序的集中式服务器上。这些用户将自动处理防火墙问题,因此这是可以接受的。
但是单用户环境将使服务和客户端应用程序在单个系统上运行。服务主机现在没有明确的形状,但它可能会在应用程序本身或作为Windows服务托管。
不幸的是,客户端应用程序是一个WIN32 Delphi应用程序,需要一种简单的方法来访问该服务。优选地,单用户版本应该使用相同的技术来访问服务器作为多用户版本,这意味着它的行为类似于SOAP客户端,导入WSDL并转换为Delphi代码。
仍然不是问题,但我必须考虑在此设置中可能遇到的问题,最重要的问题是:关闭连接端口的可能的防火墙。
那么,有没有人知道在这个单用户环境中可能出现的任何防火墙问题?
答案 0 :(得分:2)
您还没有提到您正在使用哪个WCF频道 - 我将假设basicHttpBinding。通常,如果您的本地服务使用自托管绑定到127.0.0.1,并且内置客户端以这种方式访问它,您应该没问题。我所知道的防火墙不会使用你的环回适配器。如果您将服务绑定到计算机的IP,您可能会让自己受到防火墙的欢迎。
如果你的客户端两端都有WCF 3.5(对不起,我对Delphi一无所知),请跟netNamedPipeBinding一起使用。
答案 1 :(得分:1)
您没有提到您使用的是哪个版本的Delphi,但我曾经很难让Delphi 2005使用basicHttpBinding
导入WCF服务。由于WSDL
在许多页面之间分开,因此Delphi中的SOAP导入向导无法理解它。最后,我最终围绕Delphi客户端的WCF服务编写了一个ASMX包装器。