涉及WCF返回的信息性消息

时间:2010-04-08 20:30:47

标签: c# wcf messages

这个问题是关于“信息性消息”并让它们以一致的方式从“后端”流向“前端”。快速问题是“你怎么做”?

背景:

使用WCF回调终端服务的Web应用程序。

在后端服务中可能会出现“消息”。现在,这个“消息”的原因可能有很多原因,但是对于这个讨论,让我们假设查看了一段数据,并确定应该给调用者一些关于它的信息。

此“信息”消息可能在保存期间发生,也可能在检索信息期间发生。同样,这个消息并不重要,但事实上有一些信息性消息可以在许多不同的场景下回馈。

从团队的角度来看,我们都希望一直以标准的方式返回这些“消息”。现在,过去这种“标准方式”已经由不同的人以不同的方式完成。

以下是一些可能性:

1)每个操作在包含这些消息的末尾都有一个“ref”参数

2)每个方法都会返回这些消息......但是,这只适用于“保存”方法,因为人们会认为“检索”方法应该返回实际数据而不是消息

3)使用调用上下文的一些方法,以便不用某些东西“污染”所有消息签名;然而,在图片中使用WCF会使事情复杂化。也就是说,回到邮件会出现在标题上吗?

问题: 回到我的问题然后......其他人如何通过应用程序的层,通过WCF返回给调用者返回“消息”,例如上面描述的内容?

1 个答案:

答案 0 :(得分:0)

我认为你基本上有两种正确的方法:

  1. 在您的所有DataContracts中添加InfoMessage : string字段,该字段可以从服务器保存(或不包含)信息性消息

  2. 如果您不想将其放入DataContracts,那么在消息返回客户端之前创建一个填充在服务器上的标头,在客户端上,您可以检查该标头并检索它如果存在

  3. 为了自动向WCF消息添加标头,通常使用MessageInspectors的机制 - 可以通过操作合同上的属性配置或添加的小块代码,这将在一端添加标头,并在另一端检查该标题的传入消息(并将其提取,如果存在)。

    有很多相当不错的博客文章向您展示如何创建消息检查器:

    那些主要是从客户端到服务器,例如客户端发送带有一些服务的“元信息”的标题 - 但它也可以正常工作。

    查看要实施的两个相关接口: