1

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

背景:

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

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

此“信息”消息可能在保存期间出现,也可能在信息检索期间出现。同样,这里的信息不是重要的,而是在许多不同的情况下有一些信息性信息可以回馈的事实。

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

以下是一些可能性:

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

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

3) 使用调用上下文的一些方法,以免用某些东西“污染”所有消息签名;但是,在图片中使用 WCF 会使事情变得复杂。也就是说,回到消息的标题上?

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

4

1 回答 1

0

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

  1. InfoMessage : string向所有 DataContracts添加一个字段,该字段可以保存来自服务器的信息消息(或不保存)

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

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

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

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

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

于 2010-04-08T22:05:29.660 回答