2012-10-31 146 views
0

有人知道是否可以使用一個WCF數據服務作爲另一個WCF數據服務的數據源?如果是這樣,怎麼樣?其數據源是另一個WCF數據服務的WCF數據服務

+0

不是可怕的描述。如果你想要簡短的回答,是的,你可以有儘可能多的服務和代理。你能舉一個你正在想什麼的例子,這樣我們可以舉一個例子來說明如何去做? – iMortalitySX

+0

在我公司的Intranet中有一個WCF數據服務,它可以訪問數據源,在這種情況下是SQL服務器。公共Web服務器可以訪問此WCF數據服務。我正在尋找從因特網訪問WCF數據服務實體子集的最簡單方法。我認爲在公共Web服務器上建立第二個WCF數據服務使用類似數據源的第一個WCF數據服務 – biergarten

+0

是否有理由不使用反向代理並使用類似於QueryInterceptor或MessageInspector的方法來執行額外的過濾?我可以詳細說明它是否會有所幫助。 –

回答

1

所以簡短的答案是肯定的。實際上,我已經在另一個服務器中使用了一個WCF服務(HttpBinding來到計算機上的服務,然後該服務有一個NamedPipesBinding服務與多個桌面應用程序進行通信,但它在中間進行了一些數據轉換)。這完全不是問題,您可以像在桌面客戶端中一樣設置代理/客戶端,並且處理新服務中的所有內容,就好像它只是傳遞信息一樣,您甚至可以創建一個共享庫DataContracts等等。

但是我不會在你的實現中提出跳躍方法。根據您可能開門的客戶數量,如果您擁有單件服務,或者在與新服務有很多連接的情況下,您可能會引入瓶頸問題,或者使您的現有服務超載。既然你有一個SQL服務器,爲什麼你的Web /應用服務器(公共)沒有連接到它的WCF服務,並提供你需要的數據?我只想到這一點,因爲當您開始嘗試在兩者之間傳遞身份驗證和授權憑據時,根據您的安全設置,您的情況可能會呈指數級複雜化。另一個需要考慮的問題是調試這個新服務的複雜性,以及舊客戶和客戶端的複雜性,就好像服務器和客戶端不是一件痛苦的事情一樣,因爲您正在將它打開到一個面向公衆的端口,需要設置不同的東西,並且在同一臺機器上調試所有內容與面向公衆的應用程序服務器不一樣。

對不起,如果這違背了你希望聽到的。我只是說它可能的,但沒有建議(至少對我來說)在你的具體情況。