8

我知道那里有关于 WCF 回调和事件的教程,但我无法让它们实际工作,或者它们太复杂了。我是一个真正的初学者,所以我很想听听是否有人知道任何针对我目前特别想弄清楚的内容的可靠初学者教程。如果我使用了错误的术语,请原谅我(请纠正我),就像我说我是初学者一样。

问题:

在此处输入图像描述

它可能看起来比实际上更复杂。基本上我想要完成的是:

  1. 具有一些本地内存(假设是 5 个整数的数组)并运行 WCF 服务的主机。它将侦听来自客户端的查询,并在这些整数之一发生更改时(从外部源,例如通过命令提示符和 Set() 的用户输入)向客户端触发更新(事件?)。
  2. 可以进行直接查询以返回这五个整数之一或订阅主机数组的特定索引的客户端。

我可以做什么:

我可以建立连接,但我的服务仅限于独立功能。客户端可以进行“查询”,但仅限于远程函数调用(例如“add”,其中所有参数与函数一起传递并在内部完成处理)。

我想弄清楚的:

  1. 如何从服务合同函数访问主机内存中保存的一些变量?例如,如何从客户端 GetInt() 调用一个方法,该方法将简单地返回存储在主机应用程序内存中的内容?
  2. 如何从主机向客户端推送“消息”?例如,在主机中调用 TellClient(int x),它会调用客户端的某个函数?如果不在双方都运行服务,这可能吗?

TLDR:

主机:服务 <-> 客户端。有没有办法在客户端调用任何函数(没有轮询或查询)的情况下将数据(只是一个 int)推送到客户端?有没有办法在不使用静态成员的情况下将 WCF 服务访问变量存储在主机应用程序的实例中?这可以通过简单的方式完成吗?

感谢您的帮助和时间,我知道我写了一本书。 如果有人知道任何不错的教程,请指出我。 但是请 - 不要将我指向 Add(int x, int y) 示例,其中客户端只是在主机上调用 add 并返回结果- 我已经这样做了几次,但它并没有帮助我掌握WCF 的真正功能。在这一点上,我真的不想完成任何严肃的事情,我真的想保持简单,这样我就可以了解 WCF 可以做什么,而且我没有发现文档很有帮助。再次感谢大家。

4

2 回答 2

7

WCF一般用于请求回复的方式,客户端发出请求;和服务器回复。您要实现的是“推拉式”服务;或者在 Microsoft 术语中是双工服务。

在双工服务中,客户端只需连接到服务,服务就会将它们注册到某个内部列表中。每当发生事件(或其他事情)时,它都会向注册的客户发送消息。在您的问题的上下文中,WCF 的关键术语是“双工服务”(您可以在谷歌上找到很多结果)。您可以参考以下教程;msdncodeproject

对于你问题的第二部分,答案是肯定的。但这并不是那么简单。您需要编写一些“wcf 行为”,例如 anIInstanceProvider可以帮助您。对于所有请求,您可以自己创建服务实例,并将所需的参数注入到服务实例中。参考以下内容可能会有所帮助:stackoverflowmsdn

这个问题有点宽泛,因此我不能 100% 确定这是否是直接答案。但至少使用提供的关键字,您可能会找到正确的方向。

于 2012-06-04T14:40:07.653 回答
3

Have you tried this article yet? http://msdn.microsoft.com/en-us/magazine/cc163537.aspx#S6. I thought it was a decent explanation on callbacks. It discusses a publish/subscribe framework which is a solution to your "no polling or queries" requirement.

于 2012-06-04T14:37:57.367 回答