2010-04-08 53 views
1

这个问题是关于“信息性消息”,并让它们以一致的方式从“后端”流向“前端”。简单的问题是“你怎么做”?WCF涉及返回的信息性消息

背景:使用WCF调用后端服务

Web应用程序。

在后台服务中可能会发生“消息”。现在,这个“消息”的原因可能是多种原因,但是对于这个讨论,让我们假定查看了一段数据,并且确定调用者应该得到关于它的一些信息。

此“信息”消息可能会在保存期间发生,也可能在检索信息期间发生。同样,这里的信息并不重要,但是在一些不同的情况下有一些信息性的信息要回馈。

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

这里有一些可能性:

1)每个操作都在一个包含这些消息

2)每个方法返回这些消息......但是,归根结底是“裁判”的参数,这只是一种作品的“保存”方法,因为人们会认为“检索”方法应该返回实际数据而不是邮件

3)某些方法使用调用上下文以免“污染”所有消息签名;不过,在图片中使用WCF会让事情变得复杂。也就是说,回到邮件头上?

问: 回到我的问题,然后...怎么别人返回“消息”,比如什么如上所述回通过一个应用程序的层次,在WCF并返回给调用者?

回答

0

我想你基本上有这样两个正确方法:

  1. 一个InfoMessage : string字段添加到您的所有DataContracts,能容纳的信息消息(或没有)回从服务器

  2. 如果您不想将其添加到DataContracts中,请在消息返回给客户端之前创建一个在服务器上填充的标头,并且在客户端上,可以检查该标头并在存在的情况下检索该标头

为了自动将标题添加到WCF消息中,通常使用MessageInspectors的机制 - 可以通过操作契约上的属性配置或添加的小块代码,该标记将添加标题结束,然后检查该报头的传入消息(并在另一端提取它,如果存在)。

有一些相当不错的博客文章在那里的向您展示如何创建一个消息检查:

这些大多走从客户端到服务器,例如客户端会沿着一个标题发送一些包含该服务的“元信息” - 但它也可以很好地工作。

退房相关的两个接口来实现: