【问题标题】:Maintaining co-relation Id维护关联 ID
【发布时间】:2015-03-26 09:48:22
【问题描述】:

我正在进行系统设计。我在我的应用程序中实现了多个层,其中 Web 层调用业务层,业务层调用数据层。

我想为每个调用保留一个共同的关联 ID,以便我可以记录任何方法的输入,并且在出现任何错误时,可以使用相同的关联 ID 将异常记录到数据库中,最后如果出现任何错误,需要在用户屏幕上显示关联 ID。

我已经使用 WCF 服务实现了这一点,我将消息 ID 作为关联 ID,并在整个请求生命周期中使用它。但我不确定如何使用普通库来实现这一点。我不想将每个方法上的关联 ID 作为参数或参数传递给每个类的构造函数。

任何人都可以指出我的任何文章或实现方法。

谢谢

【问题讨论】:

  • 您可以使用单例类对象实例来保存特定调用的关联 ID,并在从数据库检索数据结束时(调用结束)处理对象。

标签: c# .net asp.net-mvc design-patterns


【解决方案1】:

您应该提供有关图层结构的更多信息。

也就是说,如果您的所有业务服务都是无状态的,则可以假设您为每个请求实例化一个新的 XXXService 类(例如 CustomerService)。

然后您可以将关联 ID 传递给您实例化的每个服务类,例如使用依赖注入框架。因此,在 CustomerService 类中,您可以访问为您的请求生成的相关 ID。

【讨论】:

    【解决方案2】:

    我希望我的所有域服务的方法都需要一个 executionContext 参数(如果需要,可以是 Dictionary<string, object> 或域类)。随着未来需求的变化,这允许更多的可扩展性。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-08-13
      • 2011-10-26
      • 2015-06-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-06-10
      • 1970-01-01
      相关资源
      最近更新 更多