2011-04-26 62 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