C# 用于确认状态的域事件

C# 用于确认状态的域事件,c#,wcf,domain-driven-design,domain-events,C#,Wcf,Domain Driven Design,Domain Events,我有一个关于域事件的问题。我正在使用DDD实现一个应用程序,是的,这个应用程序对于DDD来说已经足够复杂了 我的场景是一个登录Wcf服务,除了验证用户凭据和返回令牌之外,创建会话和审核登录还需要该服务。为此,我为会话和审计创建了两个独立的域上下文,因为它们不在登录的范围内,我打算引发域事件以在它们自己的域上下文中处理它们,这一切都很好,并在每个组件之间保持清晰的有界上下文 问题是,Wcf实现的一部分在SharedKernel中,这是所有Wcf服务处理令牌验证所需的,该令牌需要从客户端传递到Wcf

我有一个关于域事件的问题。我正在使用DDD实现一个应用程序,是的,这个应用程序对于DDD来说已经足够复杂了

我的场景是一个登录Wcf服务,除了验证用户凭据和返回令牌之外,创建会话和审核登录还需要该服务。为此,我为会话和审计创建了两个独立的域上下文,因为它们不在登录的范围内,我打算引发域事件以在它们自己的域上下文中处理它们,这一切都很好,并在每个组件之间保持清晰的有界上下文

问题是,Wcf实现的一部分在SharedKernel中,这是所有Wcf服务处理令牌验证所需的,该令牌需要从客户端传递到Wcf服务以确保安全。令牌的验证需要检查是否存在有效的会话(例如,数据库中有一条记录具有相同的令牌且尚未过期),我正在努力解决如何最好地实现这一点,并有一些想法

  • 我认为,由于会话处于其自身的有界上下文中,因此我应该引发一个同步域事件来返回结果,毕竟我只需要一个true/false来确认令牌存在有效会话
  • 或;我可以在共享内核中实现一个域上下文来处理这个问题,但是这意味着在共享内核中有域实体和EF上下文,并且可能在会话的有界上下文之外
  • 我真的在苦苦挣扎,哪种方法是最好的,有没有人遇到过类似的情况,您对用最佳实践实现这一点有什么建议?对于我需要实现的目标,域事件是正确的方法吗?

    我认为您可能使这项工作变得更加复杂和困难:)

    对于这些类型的事物,通常有一个标识和访问控制有界上下文。嗯,我肯定会把它们都放在那里。此BC与您的域模型关系不大,因此可以将其视为支持角色

    同步域事件的命名可能也不太正确。当然,您可能需要一个同步调用

    所有这些交互都将在应用程序服务层进行,您的域不必在移动过程中挖掘任何较低的基础结构类型。如果需要使用这些值,请将基于域的表示形式传递到域中

    我过去使用的是简单地登录用户,创建会话,并将会话作为单个任务进行审核。其他下游系统将调用中央I&a端点(在我的例子中是restapi),以检索指定令牌的会话VO。虽然您可能只需要确认
    true
    /
    false
    当前,但您可能会在结果中得到一些有趣的数据,例如模拟的
    Upn
    声明
    到期日期
    ,等。下游系统知道会话何时过期,因此很有可能缓存会话以供频繁请求。如果用户明确注销,则可以从I&ABC发布系统事件。这将允许下游系统订阅(比如)sessionedevent消息并删除缓存的会话

    另一方面:我开始以不同于基于消息传递的事件(la服务总线)的方式处理域事件,因为我发现域事件包含的信息少于可以生成系统事件的应用程序服务层中可用的信息。这可能就是为什么域事件与事件源非常匹配。

    我认为您可能会使这项工作变得更加复杂和困难:)

    对于这些类型的事物,通常有一个标识和访问控制有界上下文。嗯,我肯定会把它们都放在那里。此BC与您的域模型关系不大,因此可以将其视为支持角色

    同步域事件的命名可能也不太正确。当然,您可能需要一个同步调用

    所有这些交互都将在应用程序服务层进行,您的域不必在移动过程中挖掘任何较低的基础结构类型。如果需要使用这些值,请将基于域的表示形式传递到域中

    我过去使用的是简单地登录用户,创建会话,并将会话作为单个任务进行审核。其他下游系统将调用中央I&a端点(在我的例子中是restapi),以检索指定令牌的会话VO。虽然您可能只需要确认
    true
    /
    false
    当前,但您可能会在结果中得到一些有趣的数据,例如模拟的
    Upn
    声明
    到期日期
    ,等。下游系统知道会话何时过期,因此很有可能缓存会话以供频繁请求。如果用户明确注销,则可以从I&ABC发布系统事件。这将允许下游系统订阅(比如)sessionedevent消息并删除缓存的会话

    另一方面:我开始以不同于基于消息传递的事件(la服务总线)的方式处理域事件,因为我发现域事件包含的信息少于可以生成系统事件的应用程序服务层中可用的信息。这可能就是为什么域事件与事件源非常适合的原因