上下文的 WCF 自定义标头或消息正文

本文关键字:消息 正文 WCF 自定义 上下文 | 更新日期: 2023-09-27 17:47:21

我正在为客户提供WCF服务,以便将零件信息发送到我们的应用程序。我们有多个客户将拥有一个或多个位置,并且零件信息的范围限定为客户的每个位置。当客户致电我们的服务时,他们需要指定位置。

我们考虑的选项是:

1) 在自定义标头中放置位置 ID。所有部件信息将应用于列出的所有位置。

2) 向消息正文添加"上下文"节点。所有部件信息将应用于列出的所有位置。

3) 在消息正文中添加一个包含部件信息的位置节点。每个位置都有自己的零件列表。

我正在寻找最佳实践/标准帮助来确定应该如何处理这个问题。我们将不得不创建其他服务,这些服务也将具有客户/位置范围,并希望在一致的庄园中处理这个问题。

上下文的 WCF 自定义标头或消息正文

我会

说,如果只有一个或两个操作需要它,请使其成为数据协定的一部分 - 有点像使其成为方法调用的参数。如果每个操作都需要它,请将其放在标头中,因为它与用户名、角色、租户或其他身份验证信息一样多 - 有点像您放入请求上下文(例如 HttpContext)的内容。

你需要使用消息协定吗?我使用数据合约,除非我需要流回某些内容,所以一切都会在正文中结束。但是,即使对于消息协定,我也会将该信息放在正文中,我倾向于为身份验证信息保留标头。

我们计划发送一个响应,其中包含处理摘要信息以及有关无法处理的任何部分的详细信息。

消息协定具有部件集合,这些部件在数据协定中定义。消息协定中还有一个标志来控制部件集合的处理。这可能是也可能不是此标志的正确位置。