2009-12-10 85 views
1

簡單的問題。我正在爲具有額外數​​據庫連接的應用程序進行概念驗證,因此我將創建一個WCF服務來環繞數據庫。多用戶環境將在集中服務器上安裝此服務,並在其本地系統上安裝客戶端應用程序。這些用戶將自動必須處理防火牆問題,因此這是可以接受的。WCF服務和防火牆......任何問題?

但單用戶環境將使服務和客戶端應用程序在單個系統上運行。服務主機目前沒有確定的形狀,但很可能它將被託管在應用程序本身或Windows服務中。

不幸的是,客戶端應用程序是一個WIN32 Delphi應用程序,它需要一種簡單的方法來訪問服務。優選地,單用戶版本應該使用與多用戶版本相同的技術來訪問服務器,這意味着它的行爲像一個SOAP客戶端,其中WSDL被導入並轉換爲Delphi代碼。

仍然沒有問題,但我必須考慮在此設置中可能遇到的可能問題,其中最重要的問題是:可能的防火牆會關閉連接端口。

那麼,有沒有人知道在這個單用戶環境中可能發生的任何防火牆問題?

回答

2

你還沒有提到你正在使用哪個WCF頻道 - 我將假設basicHttpBinding。通常,如果您的本地服務使用自託管綁定到127.0.0.1,並且機箱客戶端以這種方式訪問​​它,那麼您應該沒問題。沒有我知道的防火牆會與你的環回適配器連接。如果你將服務綁定到機器的IP上,你可能會讓自己受到防火牆的樂趣。

如果你在客戶端的兩端都有WCF 3.5(對不起,我對Delphi沒有任何意見),請使用netNamedPipeBinding

+0

我們基本上可以使用任何WCF通道,但Delphi喜歡連接某種類型的HTTP綁定。它仍然是一個概念驗證,所以其他的選擇仍然是開放的。 – 2009-12-10 09:43:49

+0

添加netNamedPipeBinding作爲最好的選擇只適用於本地的東西 - 不知道如果通過「Win32」Delphi你的意思是非.NET,我的Delphi知識是zilch。 – nitzmahone 2009-12-10 09:49:05

+0

是的,德爾福是非NET,這限制了我的選擇。使用命名管道解決方案,我將會發現很多關於如何構建命名管道客戶端的信息。我有命名管道的經驗,只是不知道.NET將如何發送數據。因此,對於POC來說,更爲基本的HTTP解決方案是首選... – 2009-12-10 11:27:25

1

你沒有提到你使用的Delphi版本,但我曾經很難讓Delphi 2005導入一個WCF服務basicHttpBinding。由於WSDL被分割成多個頁面,Delphi中的SOAP導入嚮導無法理解它。我終於寫了一個關於Delphi客戶端的WCF服務的ASMX包裝器。

+0

我使用了Delphi 2007標記。 :-)服務本身很簡單,因爲我們不會爲這個項目使用任何複雜的類。 (只有基本的數據類型和一些數據將作爲XML字符串傳遞。)該服務是簡單數據存儲的包裝。 Delphi 2007在導入.NET WSDL方面也做得更好。這已得到改善。 – 2009-12-10 10:18:05