Vertical Slice Architecture: How Does it Compare to Clean Architecture | .NET Conf 2023

Поделиться
HTML-код
  • Опубликовано: 23 ноя 2024
  • НаукаНаука

Комментарии • 34

  • @vivekkaushik9508
    @vivekkaushik9508 Год назад +17

    Don't know which livestream service you guys were using but the screensharing was lagging quite a lot both in the beginning and in the end.

    • @mojofawad
      @mojofawad Год назад +5

      Yeah I think he was explaining each of the folders around 21:00 and the screen wasn’t showing what he was explaining 😭

  • @fieryscorpion
    @fieryscorpion Год назад +11

    Your screen is frozen after 19:30.

    • @LZE.
      @LZE. Год назад +15

      Yup, and at the worst possible time too

  • @Timelog88
    @Timelog88 11 месяцев назад +3

    Nice to see a simple example without the unnecessary bloat of MediatR. Two things I would personally do different though (but yeah, opiniated :P )
    1. I would keep the presentation layer out of the slices so you could substitute the UI without touching the slices.
    2. I personally don't use mocks but a concept called embedded stubs to keep the test logic for infrastructure code close to the implementation. That is less brittle then setting up mocks in test classes in general and removes the need for interface types all over the place leading to less maintenance.
    Another architecture style I generally use together with this is A-Frame Architecture (ref. James Shore). It's a way to keep logic and infra code decoupled by having the Application layer be a "Traffic Cop" between those layers instead of having vertical dependencies.

  • @dandoescode
    @dandoescode 8 месяцев назад +1

    Great video Luke! I enjoyed the succinct explanations of each software architecture. I've been a big fan of Clean Architecture for a long time, but it doesn't work for all projects (especially technical projects (such as AI). As you mentioned, I see VSA as a tool in the toolbelt. It's helpful to be aware of it so that you can apply it when appropriate.

  • @Forshen
    @Forshen Год назад +2

    VLA is good, but you should still keep strategy inside the Slices.I do it a bit different. I have 3 project. UI, Application And Domain. Each Project use Vertical Slices. The Domain layer use VSA for entity features (CRUD) and other very flat technical features. The application layer uses VSA for Aggregate slices (feature where multiple entities are uses). Its great for ViewModels en WebRequestModels. I use the Application layer to make a translation between the UI and the Domain layer. At the UI layer, i just call a Slice in the Application Layer that returns a ViewModel. The UI handles the ViewModel for the UI parts. This way, i can reference the Application Later to Any UI layer, the logic is the same, but the UI can be different.

  • @ml_serenity
    @ml_serenity 4 месяца назад

    To pros of the VSA I would also add the ease of splitting it into the actual microservices if such necessity will arise (or is actually planned down the line).

  • @CesarDemi81
    @CesarDemi81 8 месяцев назад +1

    I know it's for keeping the demo project simple, but it would have been great to generate the resulting project into something that shows a better separation between the API and the Application layers. I know the idea is to show how everything can be simplified, but it turns moot because then it makes it look like it's another form of monolith and gives a false idea of what really is VSA.
    Showing how the Application can be plugged into an API, a Worker Service (with messaging consumers, for example) or any other type of client app, would be a better exercise to display that it can be adapted to any real life project and would prevent some unrelated comments.
    Other than that, nice talk and video. We need more VSA talks about how it improves over CA.

  • @markcooke4866
    @markcooke4866 Год назад +18

    Software is messy because it's connected to a messy world. All of these (except spaghetti) look nice at first, until you realize that you can't just split things into nice even lines across the board. All I see here is a different folder structure. I've worked with VSA and it gets messy when the slices (esp. presentation) aren't uniform throughout your app.

    • @therealhona
      @therealhona 11 месяцев назад

      Hi. Good point - any architecture or tool looks awesome in a blog post or tutorial. With VSA, the point I elude to for large apps is using the dotnet new templating engine for uniformity. Then, cross communication through domain events (mediatr notification). Another thing shown but not really mentioned for lack of time - is REPR pattern inside each slice. There's many architecture decisions not mentioned in this introductory talk :). Hope this helped

    • @CesarDemi81
      @CesarDemi81 8 месяцев назад

      I've been working with VSA for the last 4 years at least and with several projects and I can say it's the other way around: it helped me simplify the apps I've been working and make them easier to understand by the different teams I've worked with. Code was much more succint and easy to understand, not messier. Presentation is the easiest if we're talking about an API since you only have to define your endpoints and call the requests/commands/queries so everything can be pretty clean and no need to bunch up a lot of code on controllers or endpoints.

  • @sunefred
    @sunefred Год назад +3

    Luke Parker, thanks for a nice overview of these four architectures. Would you mind sharing the blogs that you mentioned at your intro?

  • @kingjustink
    @kingjustink 4 месяца назад

    Correct me if I'm wrong, but being a monolith vs microservices is purely about how you deploy and host your application, isn't it? Not the architecture and scaffolding upon which those containers are built. The 'spaghetti' structure put forward in the beginning is more akin to n-tier architecture, no?

  • @samwagnerssw
    @samwagnerssw Год назад +3

    Quite the talk! Audio could've been better but learned so much!

  • @ViniciuxMariano
    @ViniciuxMariano Год назад +1

    N-tier requires physical separation between tiers, in the example case n-layer would be better suited.

  • @acodersjourney
    @acodersjourney Год назад +4

    I've learned so much from your videos. Keep it up!

  • @afouadr
    @afouadr Год назад +8

    Use DDD (Strategic + Tactical) to figure out Vertical Slices and then implement each slice using Clean Architecture, simple 🙂

    • @M0ns1gn0r
      @M0ns1gn0r Год назад +1

      Do you name bounded contexts "Vertical Slices"?

    • @Someniatko
      @Someniatko 10 месяцев назад +1

      @afouadr What you suggest is more like a modular monolith approach. VSA is usually about much more fine-grained slices than the bounded contexts you can come up with using DDD.
      I personally prefer what you suggest to VSA, it allows to keep the ever-growing layers of the Clean Architecture - imposed code at control.

    • @CesarDemi81
      @CesarDemi81 8 месяцев назад

      Problem with CA keeps being all the ceremony and forced indirection you are usually *required* to do by most implementations because you *need* to comply with the Dependency Rule, so you need to abstract every silly thing, even if there's no business or technical need to do it. All of that is what VSA spares you and that's why it's not just saying "let's make feature folders in CA".

  • @yuberley
    @yuberley 5 месяцев назад

    Where can I find the project you showed?

  • @RajeshRajendran-yi3yt
    @RajeshRajendran-yi3yt 6 месяцев назад

    in 18:52 what is the start command used there?

  • @dlsmcdevops5284
    @dlsmcdevops5284 Год назад +1

    how does this clean architecture from Onion architecture?

  • @ManInTheFridge
    @ManInTheFridge Год назад

    Reminds me of CQRS + Mediator Pattern, what's the difference?

    • @CesarDemi81
      @CesarDemi81 8 месяцев назад +1

      That combination is what brought VSA.
      Watch the Jimmy Bogard videos about it: the easy way of implementing VSA is by combining CQRS + Mediator and forget about the Dependency Rule from CA.

  • @AlanFalloon
    @AlanFalloon Месяц назад

    That host let him talk way too long before sorting the screenshare

  • @IIARROWS
    @IIARROWS Год назад +7

    Giving that "Clean" architecture is absolutely stained shit, I don't think it's hard to be better.

  • @infotips2475
    @infotips2475 Год назад

    nice

  • @AdeelRizvi
    @AdeelRizvi 11 месяцев назад

    I love how microsoft dont use their own tools, IDE RIder rather then vS :)

    • @dandoescode
      @dandoescode 8 месяцев назад +1

      Luke doesn't work for Microsoft 🙂

  • @AseemChiplonkar
    @AseemChiplonkar 11 месяцев назад +6

    What tf is this?
    "Architecture" is being misinterpreted to be "organisation". Moving code files into folders isn't architecture!!
    Also, just by renaming UnitOfWork, Actor, Domain Entity or Service to something else doesn't mean you've come up with new architecture!
    These patterns have been used in software for a long time, vertical slices is essentially what a microservice is!
    All you've done is have multiple microservices like organisation of code files in the same WebAPI project. But they still have release dependencies on eachother.
    If you used CQRS, you wouldn't have the so called "vertical slice" of "ReadTodo" in the same WebAPI project. So that you can deploy it seperately, scale separately etc.
    Learn the existing architectures & design patterns thoroughly first before coming up with bullshit like this & clean architecture!!

    • @chuckles2040
      @chuckles2040 11 месяцев назад +1

      its beyond awful, the idea result was a 20x code increase on a Todo application. if you looked at the same repo, you see just one big code reorganization and all the code split into 10 line cs source files. this is what happens when a jr dev over engineers an app and calls it gold.
      he is a jr to me, i have 30 years professional experience. this arch is worst than anything java has came out with.

    • @yohanespradono5224
      @yohanespradono5224 7 месяцев назад

      ​@@chuckles2040I'm learning to architect my app. Any suggestion on to where i should read about architecture?