我知道有关于WCF回调和事件的教程,但是我无法让它们实际工作,或者它们太复杂了。我是一个真正的初学者,所以我很想听听是否有人知道任何可靠的初学者教程,这些教程的目标是我现在想要具体解决的问题。如果我使用错误的术语(请纠正我),请原谅我,就像我说我是初学者一样。
问题:
它可能看起来比实际更复杂。基本上我想要完成的是:
我能做什么:
我可以设置连接,但我的服务仅限于独立功能。客户端可以进行“查询”,但仅限于远程函数调用(例如“add”,其中所有参数都随函数传递,处理在内部完成)。
我想弄清楚:
TLDR:
主持人:服务< - >客户。有没有办法将数据(只是一个int)推送到客户端而无需客户端调用任何函数(没有轮询或查询)?有没有办法让WCF服务访问变量存储在主机应用程序的实例中而不使用静态成员?这可以通过简单的方式完成吗?
感谢您的帮助和时间,我知道我写了一本书。如果有人知道任何好的教程,请指教我。 但是请 - 请不要指向Add(int x,int y)示例,其中客户端只在主机上调用add并返回结果 - 我已经完成了几次它并没有帮助我掌握WCF的真正功能。我真的不想在这一点上做任何严肃的事情,我真的想保持简单,所以我可以学习WCF可以做什么,而且我没有发现文档非常有帮助。再次感谢大家。
答案 0 :(得分:6)
通常,WCF用于请求回复方式,客户端发出请求;和服务器回复。您想要实现的是“推拉”服务;或者以Microsoft术语表示双工服务。
在双工服务客户端中,只需连接到服务,服务就会将它们注册到某个内部列表中。每当出现一个事件(或其他事件)时,它就会向注册的客户端发送一条消息。在您的问题的上下文中WCF的关键术语是“双工服务”(您可以谷歌找到很多结果)。您可以参考以下教程; msdn或 codeproject
对于问题的第二部分,答案是肯定的。但事实并非那么简单。你需要写一些“wcf行为”,例如IInstanceProvider
可以帮助你。对于所有请求,您可以自己创建服务实例,并将所需参数注入服务实例。
参考以下内容可能有所帮助:stackoverflow或msdn。
这个问题有点宽泛,因此我不能100%确定这是否是一个直接的答案。但至少使用提供的关键字,您可能会找到正确的方向。
答案 1 :(得分:3)
你试过这篇文章了吗? http://msdn.microsoft.com/en-us/magazine/cc163537.aspx#S6。 我认为这对回调来说是一个不错的解释。它讨论了一个发布/订阅框架,它是您“无轮询或查询”要求的解决方案。