2012-11-18 98 views
1

我是WCF的新手,有一個問題,我似乎無法找到答案。WCF和返回的對象名稱

我有兩個項目。一個是簡單的登錄應用程序,另一個是連接到數據庫的託管IIS WCF服務(.svc)。兩個項目都是.NET 4.

WCF服務有兩種方法:「Administrator_Login」和「User_Login」。

每當調用每個方法時,它們都會對該方法執行一些代碼:Administrator.Login.Execute和User.Login.Execute(我將代碼組織到名稱空間中,Administrator.Login和User.Login是類名稱和Execute是方法的名稱)。

這兩個操作都會返回User.Login類或Administrator.Login類中存在的獨特「LoginOut」對象。

我的問題是這樣的:雖然每個操作都組織在WCF服務上的命名空間中,但當我從客戶端應用程序向服務添加服務引用並查看返回的對象類型的名稱時,我在「LoginOut以及「LoginOut1」

是否有引用該命名空間由WCF服務返回的客戶端應用程序返回的對象的方式

我目前有做到這一點?

Dim loginOut As Service.LoginOut = Service.Administrator_Login().Execute() 
Dim loginOut As Service.LoginOut1 = Service.User_Login().Execute() 

Bu T I希望能夠做到:

Dim loginOut As Service.Administrator.Login.LoginOut = Service.Administrator_Login().Execute() 
Dim loginOut As Service.User.Login.LoginOut = Service.User_Login().Execute() 

任何幫助將不勝感激。

回答

0

如果您將「LoginOut」的定義分離到類庫中,然後從您的客戶端項目中引用該類庫並更新服務引用,那麼您應該得到您正在查找的行爲。如果沒有執行configureServiceReference,請單擊高級並確保選中「在所有引用的程序集中重用類型」。

請注意,這不是一種「純粹」的SOA方式。這會將您的客戶端和Web服務綁定在一起,從而可能導致您的麻煩。不過,我自己在不同的小規模情況下完成了這個任務,並沒有遇到任何問題。

根據所需的行爲,此解決方案可能有點沉重。它涉及將庫DLL的副本分發給每個客戶端。這可以是一個非常強大的功能,因爲您可以有效地分配數據的行爲,但對於手頭的問題可能是過度的。

+0

謝謝你的迴應。但是,在選擇所有參考組件中的重用類型後,問題仍然存在。什麼是完成這個的正確方法?也許我的做法是錯誤的。 –

+0

您是否有從客戶端到定義類的庫的參考? – PatFromCanada

+0

此外,我將定義轉移到客戶端和WCF服務使用的類庫中,我仍然遇到此問題。 –