Bulletproof Your Software Architecture With ArchUnitNET

แชร์
ฝัง
  • เผยแพร่เมื่อ 12 ธ.ค. 2024

ความคิดเห็น • 25

  • @MilanJovanovicTech
    @MilanJovanovicTech  7 หลายเดือนก่อน +1

    Want to master Clean Architecture? Go here: bit.ly/3PupkOJ
    Want to unlock Modular Monoliths? Go here: bit.ly/3SXlzSt

  • @simongeering
    @simongeering 8 หลายเดือนก่อน +2

    Worth noting that ArchUnitNET is Apache 2.0 licence, so some restrictions and conditions compared to the completely open MIT licence of NetArchTest

  • @dimitrietataru8140
    @dimitrietataru8140 4 หลายเดือนก่อน +1

    So far, I have found two major points in favor of ArchUnitNet library, compared to NetArchTest.
    1. If I have a domain model that implements ITraceableModel, which implements IModel, I can just write it as Classes().That().ImplementInterface(typeof(IModel)). For NetArchTest I whould write domainTypes.That().ImplementInterface(typeof(IModel)).Or().ImplementInterface(typeof(ITraceableModel)). You need to declare all the inheritance, otherwise your classes are not checked properly.
    2. When there is an architecture error, ArchUnitNet displays the exact errors, with a description message. It is easy to go to the file and fix it. On the other hand, NetArchTest asserts a true/false statement and does not display any useful information.

    • @MilanJovanovicTech
      @MilanJovanovicTech  4 หลายเดือนก่อน

      1. I'd consider the second approach (NetArchTes) better as it's more explicit. No?
      2. Fair, but we could solve it by checking for failing types instead of success flag

    • @dimitrietataru8140
      @dimitrietataru8140 4 หลายเดือนก่อน +1

      @@MilanJovanovicTech
      #1 when we introduce new types derived from previously checked types, it should "just" work. It's easy to forget to add them to the arch test definitions and all the tests pass.
      #2 It is a "Result" class. It would've been handly if the FailingTypes collection was not null. It's an extra if statement that could've been avoided.
      Overall, I've had a better experience with ArchUnitNet.

  • @S0p0r10
    @S0p0r10 8 หลายเดือนก่อน

    Really great library :)
    I would really like to add some checks for Blazor Components, specifically dependencies between different components.
    Unfortunately the dependencies are only at compile time and not in the compiled code.
    Do you know of any tool/library to do this?

    • @MilanJovanovicTech
      @MilanJovanovicTech  8 หลายเดือนก่อน

      "the dependencies are only at compile time and not in the compiled code" - could you explain this part? I'm a bit confused.

    • @S0p0r10
      @S0p0r10 8 หลายเดือนก่อน

      @@MilanJovanovicTech Lets say we have Child.razor and a Parent.razor and the Parent markup is
      This rule still passes
      ArchRuleDefinition
      .Types()
      .That()
      .AreAssignableTo(typeof(Parent))
      .Should()
      .NotDependOnAny(typeof(Child))
      .Check(architecture);
      Does that make more sense?

  • @CesarDemi81
    @CesarDemi81 4 หลายเดือนก่อน

    More in-depth comparison at project level shows that ArchUnitNet has received more fixes/improvements more recently while NetArchTest still has some issues completely unattended since 3 yrs ago that have been fixed in a fork but the original author refuses to attend.
    That doesn't give me much security about choosing it thinking in the long term.

    • @MilanJovanovicTech
      @MilanJovanovicTech  4 หลายเดือนก่อน +1

      The author of NetArchTest simply think it's feature complete, so there is no need to make updates.

    • @CesarDemi81
      @CesarDemi81 4 หลายเดือนก่อน

      @@MilanJovanovicTech yup, exactly. Weird take when he still has some issues open from so long ago.

  • @SchalkWPienaar
    @SchalkWPienaar 6 หลายเดือนก่อน

    Fantastic video, thanks. Interested in how you would apply this in a modular monolith with clean architecture projects for each module. Would you duplicate the arch tests in each module? Or create some kind of centralised arch tests that could be applied to all the modules?

    • @MilanJovanovicTech
      @MilanJovanovicTech  6 หลายเดือนก่อน +1

      I just copy the Arch. tests for each module, much easier to maintain if I to customize the rules a bit.

  • @petropzqi
    @petropzqi 8 หลายเดือนก่อน

    Thx for the warning

  • @rubensoliveira7369
    @rubensoliveira7369 8 หลายเดือนก่อน

    Whats your vscode theme name, please?

  • @carrena1217
    @carrena1217 8 หลายเดือนก่อน

    Great!! 😊

  • @hexchad765
    @hexchad765 2 หลายเดือนก่อน

    Say lie berry one more time

  • @petropzqi
    @petropzqi 8 หลายเดือนก่อน

    Please do not use the transcript when showing the IDE. If that has crossed your mind

    • @MilanJovanovicTech
      @MilanJovanovicTech  8 หลายเดือนก่อน +1

      What do you mean by that?

    • @hrobertson4
      @hrobertson4 8 หลายเดือนก่อน +3

      @petropzqi sounds like you've got captions enabled, you can turn them off in your TH-cam app