2011-04-26 31 views
0

我想知道是否有任何方法強制客戶端調用雙工WCF服務的特定方法。我的情況是這樣的,我的服務實現將保持訂閱者的集合。這種方法的問題是,如果客戶端沒有調用Subscribe(),該怎麼辦?我在想,在我的客戶端界面中,我會有一個名爲Subscribe的方法,但是這並沒有讓我知道任何地方,因爲實際調用服務的代碼仍然可以被排除在實現之外。這可能嗎?強制客戶端調用服務上的方法?

謝謝!

+1

不要在沒有調用'Subscribe'方法的情況下讓客戶端做其他事情。如果你的服務很有用,那麼客戶需要調用'Subscribe'來使用它。 – 2011-04-26 19:49:18

回答

1

雙工WCF服務使用WCF會話,以便您可以標記您與訂閱方法:

[OperationContract(IsInitiating=true)] 
void Subscribe(); 

所有其他方法將有IsInitiating=false因爲那Subscribe方法將不得不調用來啓動一個新的第一種方法會話。您也可以使用IsTerminating=true關閉會話的特殊方法。

+0

如果我有我的服務的InstanceContextMode = Single,這種方法是否仍然有效? – Thelonias 2011-04-26 18:58:19

+0

@Ryan:這是一個很好的問題。我不確定,但我相信這與會議沒有實例相關,但您必須嘗試。即使使用'InstanceContextMode = Single',會話也存在。 – 2011-04-26 19:08:07

+0

我問的原因是在Sessions的[MSDN頁面](http://msdn.microsoft.com/zh-cn/library/ms733040.aspx)上,它指出當服務器接受客戶端會話時,「所有WCF客戶端對象之間的調用由相同的服務實例處理。「我不確定這是如何影響我的,因爲我只有一個例子開始。 – Thelonias 2011-04-26 19:13:26

相關問題