当工作项发生变化时,如何从TFS服务器收到通知?

时间:2010-02-27 14:51:56

标签: tfs

我正在编写一个简单的自定义工作项浏览器,我希望它能够跟踪我的TFS服务器上工作项发生的实时更改。

例如,如果有人更改了工作项的标题或状态,我将使用这些新信息更新我的工作项树。

我如何订阅此类活动?

2 个答案:

答案 0 :(得分:6)

您可以使用TFS事件机制订阅Web服务端点,以便在工作项更改时收到通知。但是,这是为服务器 - >服务器通信而设计的,并且此推送通知机制不适用于客户端应用程序。

相反,我建议您使用TFS .NET Api定期轮询服务器以获取更新。要在使用查询获得完整结果集后使轮询操作高效,您可以修改WIQL以查找更改日期大于上次轮询服务器的工作项。

在这种情况下,“拉”模型比“推”模型更好地工作的原因如下:

  1. 要向客户端计算机发送Web服务推送通知,TFS实例需要能够直接与客户端盒上的端口通信。这意味着您必须打开适当的端口并允许来自您防火墙的该方向的流量。
  2. 推送通知需要Team Foundation Server管理级别用户权限才能创建,这意味着只有管理用户才能使用您的应用程序
  3. 服务器将尝试向订阅者发送通知,直到订阅者删除事件订阅。这意味着您的应用程序崩溃或者没有正确清理它的订阅,然后服务器将尝试向没有监听它们的计算机发送消息。这将耗尽TFS服务器上的资源并在TFS服务器事件日志中生成错误。您的应用程序需要大量逻辑,以确保它记录了哪些订阅到位并适当地管理它们。
  4. 希望这是有道理的。

答案 1 :(得分:-1)

对于电子邮件提醒

TFS客户端包括对您工作项的任何更改进行更改的订阅(团队资源管理器中团队项目节点的上下文菜单中的“项目警报”)。

要根据其他标准(包括团队项目的所有标准)订阅工作项,TFS Power Toys包含一个警报编辑器(强力玩具在团队资源管理器中的每个团队项目下添加一个警报节点)。

对于Web服务调用

这些也是可能的(例如,让服务器监听):有关详细信息,请参阅Visual Studio SDK。