2011-03-02 127 views
0

我有wcf服務。還有一些我們的客戶使用delphi7來消費我們的服務。 Delphi7不能說明wcf(即使是basicHttpBinding),所以我必須創建我的wcf web服務的asm​​x模擬。現在我正在尋找更好的方法在相同的代碼庫上構建wcf和asmx服務。什麼是建立,維護與部份相同的代碼(同樣的方法,邏輯)asmx和wcf之間的共享代碼

感謝安德魯

+5

帶有BasicHttpBinding的WCF等同於asmx。你遇到什麼問題?您是否使用正確的網址來訪問wsdl? – 2011-03-02 10:40:54

+0

我知道。這是Delphi7問題。 Wsdl的不同 – 2011-03-02 12:00:10

+0

Delphi7應該對使用'basicHttpBinding'的WCF服務沒有問題。很難想象什麼樣的WSDL差異會打破Delphi或任何其他程序。您應該詢問關於您的特定服務的具體問題,並且您可能會發現哪些問題。 – 2011-03-08 01:49:55

回答

3

使用動態鏈接庫(* .dll)來存放共享代碼,引用和利用這兩個項目。

這種方式,你有合適的平臺,這就叫通過共享代碼庫,其中,在一個地方編輯,並進一步部署時,適用所有呼叫者公開的方法兩項服務。

1

嗨,你可以建立一個集成所有的邏輯,然後從WCF一個BusinessManager或者乾脆ASMX你們兩個服務的最好方式創建一個實例並調用傳遞從調用者接收的實際參數的正確方法。

我使用BusinessManager這個詞來定義類與您自己的業務邏輯有關,但它只是一個類,無論是靜態還是非靜態,我通常都不希望這樣的類是靜態的。

1

如果您的現有WCF服務已經託管在ASP.NET Web應用程序/站點中,您可以輕鬆地將普通的舊ASMX webservice添加到您的現有WCF服務。

右鍵單擊您的項目 - >添加 - >新建項目 選擇Web - >滾動到底部 - > Web服務。

然後讓你的web服務調用你的WCF方法。

+0

我認爲這會很慢。我不需要連鎖服務。 – 2011-03-02 12:00:31

+0

這不是我的意思,只是實例化xxService類,並立即調用方法不通過「呼叫服務」磨難去。 – 2011-03-02 12:03:15

0

Delphi 7支持調用COM(ActiveX)對象,不是嗎?

爲什麼不建立一個標記有ComVisible特性.NET客戶端爲WCF服務,並消耗在Delphi通過COM接口。

這樣你就不必同時維護一個ASMX和一個WCF服務。