【问题标题】:Aggregate, DomainEvent with Prooph聚合,DomainEvent 与 Prooph
【发布时间】:2018-01-16 12:07:41
【问题描述】:

我正在开发一个应用程序,它会在验证后抓取 HTML 提要。这些网站仅支持电子邮件/密码身份验证,但某些集成可能需要额外信息。所以我的问题现在是在创建域事件和聚合时应该得到的具体问题吗?我与 Prooph 合作过,并创建了仅处理单个实体类型的简单聚合和域事件。但是现在我想知道聚合和域事件是否应该针对这些第三方网站抓取工具。每个提要抓取工具是否应该有一个事件,或者创建一个通用事件并更好地聚合?每个聚合的属性可能不同。

class WebsiteA extends AggregateRoot
{
    private $id;

    private $email;

    private $password;

    public static function initiate($id, $email, $password)
    {...}
}

class WebsiteB extends AggregateRoot
{
    private $id;

    private $email;

    private $password;

    private $accountIds = [];

    private $userSalt;

    public static function initiate($id, $email, $password, $accountIds, $userSalt)
    {...}
}

然后是类似的领域事件

class WebsiteAWasInitiated extends AggregateChanged
{
    public static function withUser($id, $email, $password){}
}

class WebsiteBWasInitiated extends AggregateChanged
{
    public static function withUser($id, $email, $password, $accountIds, $userSalt){}
}

或者创建单个聚合和域事件会更好吗?这两个网站都使用。请记住,支持的网站列表会不断增加。

class WebsiteScraper extends AggregateRoot
{
    private $id;

    private $credentials;

    public static function initiate($id, $credentials)
    {...}
}

class WebsiteScraperWasInitiated extends AggregateChanged
{
    public static function withUser($id, $credentials){}
}

【问题讨论】:

    标签: php events aggregate domain-events prooph


    【解决方案1】:

    这更像是一个与 DDD 相关的问题,答案是“视情况而定”。您的爬虫数量是否会增长得如此之多,以至于您无法为每个爬虫添加代码?然后尝试使用通用刮板聚合。如果您的刮板数量有限,您可以为每个刮板使用自定义刮板。

    【讨论】:

      猜你喜欢
      • 2018-10-15
      • 2018-06-29
      • 1970-01-01
      • 2012-08-25
      • 2014-05-27
      • 1970-01-01
      • 2014-11-22
      • 1970-01-01
      • 2014-05-11
      相关资源
      最近更新 更多