WCF自定义标头或者上下文的消息正文?
时间:2020-03-06 14:47:14 来源:igfitidea点击:
我正在为客户提供WCF服务,以将零件信息发送到我们的应用程序。我们有多个拥有一个或者多个地点的客户,零件信息的范围仅限于该客户的每个地点。当客户致电我们的服务时,他们需要指定位置。
我们考虑的选项有:
1)在自定义标头中放置一个位置ID。所有零件信息将适用于列出的所有位置。
2)在消息正文中添加一个"上下文"节点。所有零件信息将适用于列出的所有位置。
3)在消息正文中添加一个位置节点,该位置节点将包含零件信息。每个位置都有自己的零件清单。
我正在寻找最佳实践/标准帮助,以确定应该如何处理。我们将不得不创建其他具有客户/位置范围的服务,并希望以一致的方式进行处理。
解决方案
我们需要使用消息合同吗?我使用数据合约,除非我需要将某些内容流回去,所以一切都结束了。但是,即使对于消息合同,我也会将该信息放在正文中,但我倾向于保留标头用于身份验证信息。
我们计划发送一个响应,其中包含处理摘要信息以及有关无法处理的任何零件的详细信息。
消息协定具有部分的集合,并且这些部分在数据协定中定义。消息合同中还有一个标志,用于控制零件收集的处理。这可能是该标志的正确位置,也可能不是正确的位置。
我想说的是,如果只有一个或者两个操作需要它,则使其成为数据协定的一部分,就像使其成为方法调用的参数一样。如果每个操作都需要它,请将其放在标头中,因为它与用户名,角色,租户或者其他身份验证信息一样多,就像我们放在请求上下文中(例如HttpContext)一样。