Here's the Best Architecture for Your Blazor Web Apps in .NET 8 🔥

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

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

  • @PatrickGod
    @PatrickGod  9 หลายเดือนก่อน +15

    Hey friends,
    Because it was mentioned in the comments, I want to talk about why I chose to show the presentation layer directly referencing the infrastructure layer for service registration in this tutorial. This is a practical approach I picked to keep things simple, especially for educational purposes. It's something you'll see in a lot of .NET projects because it makes setting up services straightforward, thanks to ASP.NET Core's dependency injection.
    I aim to make my tutorials helpful for developers at any level, and sometimes that means choosing simplicity over strict adherence to principles like Clean Architecture. However, I get the concerns about layer separation and plan to explore more about Clean Architecture in future videos.
    Thanks to everyone for the feedback. It really helps guide what I cover next and makes our discussions here richer. Appreciate all of you being part of this community and helping each other learn and grow.
    Take care & happy coding,
    Patrick

    • @ittaitumelo
      @ittaitumelo 9 หลายเดือนก่อน +5

      It would be nice to see a project example, I am new to this architecture. If you have time....

  • @josephlittle2812
    @josephlittle2812 9 หลายเดือนก่อน +64

    Patrick, could you extend this video and discuss the next steps like adding authentication + db + EF, which project those belong in, and how they can be used in the Application layer. Thanks mate.

    • @ivankovachev8835
      @ivankovachev8835 9 หลายเดือนก่อน +7

      EF Core is integrated really easily, you usually put it in the infrastructure project or a separate Data Layer. You register the Database and DbContext in the middleware inside Program.cs using the built-in dependency injection. Then in the application layer, make yourself a bootstrapper class that uses the IServiceCollection and IServiceProvider interfaces. The former to map the instances to an interface or on their own, and the former to use them in your main execution path.
      And for testing purposes you make a Repository, which is a bit redundant since it's EF-core, but that repository then makes unit and integration testing much easier due to the fact that you can write stubs and mocks much more easily with it.

  • @Excepti0nal777
    @Excepti0nal777 9 หลายเดือนก่อน +22

    I think it would be great to see more real world examples using blazor, clean architecture with CQRS etc. Everyone is doing the basic out of the box type videos on .net 8 blazor. It would be great if you would go more in depth and to see an actual enterprise level application with UI customization. It would also be great to see how to structure nested components when you are using interactive blazor with something like mudblazor theming etc. Thanks @PatrickGod!

  • @Marshall4466
    @Marshall4466 9 หลายเดือนก่อน +19

    Great video it would be good if you could create a longer video on this with Mediatr etc. and show how we can make it into a template so it’s easier to start new projects

    • @PatrickGod
      @PatrickGod  9 หลายเดือนก่อน +1

      Great suggestion! Thanks for your feedback!

    • @jbot8530
      @jbot8530 9 หลายเดือนก่อน

      @@PatrickGod Yes, I also agree. I'm also new to Blazor and I found this video interesting, and inspired me how to start working with Blazor applications.

  • @guillermomazzari8320
    @guillermomazzari8320 9 หลายเดือนก่อน +15

    It be nice to see an extended video using services and dapper please

    • @barry1048
      @barry1048 9 หลายเดือนก่อน +1

      YES! Exactly what was going to request.

  • @gastonmartinez6213
    @gastonmartinez6213 9 หลายเดือนก่อน +11

    Very informative video as usual Patrick, I'd love to see more videos about Clean Architecture in Blazor 8, I'm still having some issues with that, especially on auto render mode with .Client and .Server projects.
    Thanks for all your work and help to the Blazor community.

    • @PatrickGod
      @PatrickGod  9 หลายเดือนก่อน +2

      Noted! Thank you very much for your feedback!

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

    For most projects CQRS & mediator are just over cooking for no benefit. In fact I've yet to see any benefit, happy to be corrected, I mean it must work for some for it to still exist...

  • @TheSipfabio
    @TheSipfabio 9 หลายเดือนก่อน +1

    I'm watching 12 minutes and I have 7 left. I don't want them to run out!!! Please continue with this video!!!

  • @mehdisijelmassi4933
    @mehdisijelmassi4933 9 หลายเดือนก่อน +5

    Thx, a very good video ! Is it possible to do one with mediatr and a CRUD to see how all the layers work together. Thx

  • @PaulPreu
    @PaulPreu 9 หลายเดือนก่อน +2

    Hey Patrick, I hope I did not miss this, but could you please make a video about login and user management in Blazor SSR? I really enjoyed your video about the CRUD system in SSR, but I need a login for that. Thank you really much for all your amazing courses! Have a nice weekend!

  • @tinchant
    @tinchant 9 หลายเดือนก่อน +3

    @PatrickGod Congrats on another great video! It would be even better if you show us a sample from presentation layer through mediatr showing how you would do a query and a command through the domain and infrastructure. Really just a CRUD sample, i really get everything you showed us here but i believe a jr might need more clues

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

    I appreciate a lot your explanations of a technology which includes a view on the architecture whose is too often forgotten

  • @kek_1459
    @kek_1459 9 หลายเดือนก่อน +3

    Thank you for the video! Now I would like to see part 2 using CQRS and MediatR

  • @kieran.stafford
    @kieran.stafford 6 หลายเดือนก่อน +2

    Sorry to be late to the comments. How would your Architecture work with MS Identity? Its heavily tied to both AspNet and EF. So how can you create a DataContext inside the Infrastructure Layer that has all these AspNet dependencies?

  • @marcosavarese5576
    @marcosavarese5576 9 หลายเดือนก่อน +1

    Thanks for this very interesting video!! You explain even difficult topics in a simple way. A video on CQRS and Mediator would also be very helpful

  • @davestorm6718
    @davestorm6718 9 หลายเดือนก่อน +2

    I'm curious as to why Infrastructure wouldn't just be a layer on it's own? Why on the same level as the UI?
    To me, it would seem to make sense to keep services (in the infrastructure) below the UIs (the UI could then be for any UI system - web, desktop, mobile, etc)

  • @samehgenah8067
    @samehgenah8067 9 หลายเดือนก่อน +4

    Great work and very important topic may you have to extend the video. Thanks

    • @PatrickGod
      @PatrickGod  9 หลายเดือนก่อน +1

      Thank you, I will

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

    Hi Patrick thank you for the video! Please can u make an extended video about CQRS and MediatR.

  • @WondervilleSeries
    @WondervilleSeries 9 หลายเดือนก่อน +2

    I think devs get into a lot of navel gazing when it comes to architecture/design patterns, etc. I would like to see comparison videos discussing PRACTICAL scenarios between the patterns. When it is worth my time as a developer to implement one pattern over another? Where is the point of diminishing returns when introducing more complexity?

  • @MorneWolfaardt
    @MorneWolfaardt 7 หลายเดือนก่อน

    This is a great video, I recently upgraded my project from .net 6 to .net 8 and due to the massive amount of changes, I had to almost build most of it over.. Not to mention moving to MudBlazor or any other UI Framework. My question is :
    1. Would you suggest to have a the foundation in place like in the video, do a Git checkin and then work on top of it with branches?
    2. Would you suggest to make use of Git Submodules to split out the project each in their own life cycle so that you can make an update to lets say the domain project and it will be updated on the other modules that might be a legacy blazor application and the latest .Net Blazor version?

  • @maykonelias
    @maykonelias 9 หลายเดือนก่อน +3

    Nice, Great topic Architecture for Blazor, would be awesome if you continue with CQRS.

    • @PatrickGod
      @PatrickGod  9 หลายเดือนก่อน +1

      Thanks, will do!

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

    It would be good to see this in action to get a clearer picture of what goes where and how it all works with a real example. Thanks!

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

    Is there a follow up to this video to show how to bring data from a database into the blazor component

  • @andvik84
    @andvik84 9 หลายเดือนก่อน +1

    As always a informative video. One question that I don't think you mentioned - what goes in the domain layer?

    • @aderinolaadeloye8275
      @aderinolaadeloye8275 9 หลายเดือนก่อน +1

      I believe it’s all of your entities.

    • @PatrickGod
      @PatrickGod  9 หลายเดือนก่อน

      Exactly. In the domain layer, you put your entities (like customer, order, article, player, item) and the interfaces for services or repositories. This means you define how things work and the main rules here, keeping your app organized and easy to work with.

  • @wealthgenerationstrategies
    @wealthgenerationstrategies 7 หลายเดือนก่อน

    Hey Patrick, will you be covering this in detail in your course site? Cheers and thanks.

  • @christiantricarico
    @christiantricarico 9 หลายเดือนก่อน

    Great starting point. In a real-world scenario, I would create a folder for the Infrastructure layer and add in this folder several infrastructure projects like Persistence, FileProvider, ecc. Keep it going!

    • @pilotboba
      @pilotboba 9 หลายเดือนก่อน

      Idk, don't love folders other than src, test, doc, top level whatever.
      Also, solution folders aren't "real" folders, so I tend to use real folders, so people using vs code still have the same folder instruction as the solution explorer has.
      I also don't include the solution name as part of the project name, but in the proj file I add it to the DLL name that is created on build.
      So, I might have projects named:
      Domain
      Application
      Contracts
      Web or Api
      Infra.Persistence
      Infra.Integration.Twitter
      Infra.Integration.GitHub
      But you know to each his own.

    • @dondaniel7643
      @dondaniel7643 9 หลายเดือนก่อน +1

      What are the benefits of that? Why not structure your Infrastructure project?

    • @christiantricarico
      @christiantricarico 9 หลายเดือนก่อน

      @@dondaniel7643 in structured solutions I don't like to have a single infrastructure project for everything. For example, I usually separate data persistence and files management in different projects (both of them are into the infrastructure folder).

  • @MrPlasfil
    @MrPlasfil 3 หลายเดือนก่อน

    Hi Patrick, hello from Portugal.
    What color theme do you use in visual studio 2022?

  • @willgale7187
    @willgale7187 9 หลายเดือนก่อน +2

    I have been waiting for this vid!

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

    Thanks, that was very interesting. I since i would also have a corresponding webui project would you say that the api and ui can share the domain layer, or sould each of them have its own domain layer (also if this would mean duplicate code)?

  • @mohammadmz1058
    @mohammadmz1058 9 หลายเดือนก่อน +1

    Excellent video, however to short video.
    I would definitely like to see more of this, especially in regards to CQRS and Mediator pattern inside a Blazor app.
    I feel like my architecture skills are more or less stuck at n-tier pattern, and i would like to learn about clean archtecture (incl. vertical slice).
    By the way will you be dealing with this kind of subjects in your dotnet academy. Would you kindly provide a detailed list of the subjects that you will be touching in your dotnet academy.

    • @PatrickGod
      @PatrickGod  9 หลายเดือนก่อน +1

      Thank you so much for your feedback, Mohammad!
      Yes, the second masterclass dives into more advanced topics such as Clean Architecture, CQRS, and the Mediator pattern. It's currently in early access, but the basics of these topics are already available. I'd be thrilled to have you join us at the .NET Web Academy! 😊

    • @mohammadmz1058
      @mohammadmz1058 9 หลายเดือนก่อน

      @@PatrickGod Thanks for your answer, I would gladly join you dotnet academy.

    • @PatrickGod
      @PatrickGod  9 หลายเดือนก่อน

      ​@@mohammadmz1058Awesome! Looking forward to seeing you in the academy! If you have any more questions, drop me a message at mail@patrickgod.com.🎉

  • @snitchzel9533
    @snitchzel9533 9 หลายเดือนก่อน

    Would be nice to see UOW / Mediatr worked in the template. Good video, very clear and simple explained!

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

    Great video! I have been struggling with where to put the API I will need to expose. Based on what you said (and what is probably coming in the more in-depth video) but I assume it would be a folder in the WebUI.Server project? Which references a Repository in the Application project which in turn references a Service in the Infrastructure project?

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

      Any suggestions @PatrickGod

    • @mrt7948
      @mrt7948 7 หลายเดือนก่อน

      Right, api will be in server.ui

  • @shawnstaggs5254
    @shawnstaggs5254 9 หลายเดือนก่อน +3

    I would like to see more on CQRS and mediatR

    • @PatrickGod
      @PatrickGod  9 หลายเดือนก่อน

      Noted! Thanks for your feedback!

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

    Clean Architecture is a classic solution looking for a problem.
    It'll certainly soak up all those man hours of developers having meetings discussing it and working out what it does, rather than working :DDD

  • @liam2161
    @liam2161 14 วันที่ผ่านมา

    I've been struggling with EF in Blazor, I have a base page that creates the context from IDbContextFactory and stored as Db on a base property. I find at times its disposed before I can use it. I've restored to injecting the context on to each page or component instead create a using statement to create the context each time. Is this best practice? The EF documentation isn't clear to me. Also should I use IDbConextFactory on DI service constructors or a Context again unclear. Thanks.

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

    Do we need to use such a long names? I would like it make it shorter but maybe I am too primitive.

  • @alpachinois
    @alpachinois 5 หลายเดือนก่อน

    @PatrickGod
    Hi, I used to create an Web Api with a clean architecture as backend and React as frontend for example. However, with the new hybrid model (Server and Client), it is worth to separate the backend with the server project? It is also recommanded to create an API on server side and call it with a http client in client project.
    I have a to create a MVP for my startup and I'd like to go with Blazor as Frontend technology but don't practise frontend since 2 years (last time react, but I used Blazor in 2020). For a MVP context, it is better tu create a third project Web API as backend and call it in Blazor server project or I should simplify and create my clean architecture directly in Blazor server project?

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

    Thank you, I enjoyed it, it was very good, simple and informative

  • @junaidkhanvibes-jkv7214
    @junaidkhanvibes-jkv7214 8 หลายเดือนก่อน

    Nice Patric but I want these CQRS pattern, love your content ❤

  • @delfrysgameplays
    @delfrysgameplays 9 หลายเดือนก่อน +1

    This is insane, thank you for the content🔥🔥🔥🔥

    • @PatrickGod
      @PatrickGod  9 หลายเดือนก่อน

      My pleasure!😊

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

    I would love to see Mediatr pattern please show it to us thanks for all your efforts

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

    Hello, my Program.c from my blazor web app not recognize the dependecy injection class method (AddApplication), all is equal to the video the only difference is my Blazor project is a Auto render so i have a client project to. What could be the problem? Best Regards

  • @SpaceManiac987
    @SpaceManiac987 9 หลายเดือนก่อน

    Hi Patrick first of all you are awesome and please please extend that video with mediatR and CQRS I really need it and if it is possible please use .net 8 blazor auto mode. I am trying to create an application using and since I am quite a beginner in this I am having a really hard time.

  • @Pablobdg
    @Pablobdg 5 หลายเดือนก่อน

    Hi, I am beginner but I wrote my first Blazor Web App and I want to ask how can I upload it to internet? Which type of hosting should I buy and which program to transfer files. I really have no idea where to start

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

      I used myAsp hosting and was able to publish from VS directly.

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

    That was helpful - just about the right level.

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

    So we cant host WASM apps anymore on github pages?

  • @SibTiger33
    @SibTiger33 9 หลายเดือนก่อน

    U don't need to replicate the application name in the projects like that. You can just call the projects domain or application then set the app name and namespace in the properties. Looks much cleaner

  • @CRBarchager
    @CRBarchager 9 หลายเดือนก่อน

    Is there a special reason why the Solution name is dublicated to all the projects? - I find it cumbersome to have to have these long names. Like having a solution called "ThisIsMyVeryCumbersomeAndLongName" and then have to repeat that in every project like "ThisIsMyVeryCumbersomeAndLongName.Application" and "ThisIsMyVeryCumbersomeAndLongName.Infrastructure" etc etc...

  • @LobsterHarry
    @LobsterHarry 9 หลายเดือนก่อน +1

    Could you please give us a real world example how to benefit from this architecture ? I can not see any advantages using your Extension-Methods...

  • @johnhershberg5915
    @johnhershberg5915 9 หลายเดือนก่อน +1

    Great video! I love these

    • @PatrickGod
      @PatrickGod  9 หลายเดือนก่อน

      Thanks so much! Glad you like them!

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

    I'd like a part 2

  • @deimercastrillomartinez7473
    @deimercastrillomartinez7473 20 วันที่ผ่านมา

    Hey Patrick, it's wonderful video tutorial, I was wondering if you have some course where learn master-details, pattern repository, mudblazor or any other with blazor server 8. I try to subscribe me in academy but unfortunately is so expensive for me because our divisa is lower than respect to usd, however if you have some course on udemy with cupon and include the topics before mentioned, I'll appreciate so much. Tks DC

  • @febus3
    @febus3 9 หลายเดือนก่อน

    What a way to give developers blue balls =). I was so ready to keep building the project as im still a little confused how to provide services to my client WASM without the use of controllers on a separate server project.

  • @OPEN_OVER
    @OPEN_OVER 28 วันที่ผ่านมา +1

    you are the best

    • @PatrickGod
      @PatrickGod  27 วันที่ผ่านมา

      you are!

  • @UrinTrolden
    @UrinTrolden 9 หลายเดือนก่อน +1

    I'd love to see more in depth videos regarding Blazor architecture

    • @PatrickGod
      @PatrickGod  9 หลายเดือนก่อน +1

      Noted! Thanks for your feedback!

  • @AliHazrat-cm8hq
    @AliHazrat-cm8hq 3 หลายเดือนก่อน

    Please CQRS pattern also

  • @zahraht5224
    @zahraht5224 9 หลายเดือนก่อน

    It was great🤩😍, thank you, Please continue this video😢😭

  • @lordjim9971
    @lordjim9971 5 หลายเดือนก่อน

    Patrick, please continue. BUT without CQRS and Mediator👌

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

    Very useful

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

    Thanks so much.

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

    Could you please raise you voice sound in the next videos?

  • @MikeSerranoLopez
    @MikeSerranoLopez 9 หลายเดือนก่อน +1

    CQRS please...

    • @PatrickGod
      @PatrickGod  9 หลายเดือนก่อน

      Noted!

  • @margosdesarian
    @margosdesarian 9 หลายเดือนก่อน +1

    Mean comment, mean comment :)

  • @browaruspierogus2182
    @browaruspierogus2182 9 หลายเดือนก่อน

    who invented those layers? they are mega confusing. theres always business logic and data structure controlled by UI
    wasn't dependency injection created just to avoid that confusion of layers you present?

  • @mohamadsoltani1982
    @mohamadsoltani1982 9 หลายเดือนก่อน

    awesome

  • @joonat5720
    @joonat5720 9 หลายเดือนก่อน

    I have understood all your other videos, but this was way too advanced. Could you make a longer video, perhaps more beginner-friendly? Explaining the purpose of Application, Domain and Infrastructure projects etc...

  • @codermallu
    @codermallu 9 หลายเดือนก่อน

    @PatrickGod Bro please add a more detail video about this

  • @bondymagnomous3544
    @bondymagnomous3544 6 หลายเดือนก่อน +2

    20 minutes and you said nothing, how is that even possible?

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

    Ntier is simply better.

  • @kourosh234
    @kourosh234 7 หลายเดือนก่อน

    Don't waste time on architecture.
    Build a monolith first and thing on the simplest possible terms.
    By time if you see your app become too complex to handle, do something about it. What and how is difficult to say. There is no magic bullet!
    Easier said than done! :)

  • @sighua0s426
    @sighua0s426 9 หลายเดือนก่อน

    Thought for a second that I finally found a proper video for .net 8 on this topic, since I really liked your other tutorials. But the moment I saw the presentation layer having a direct dependency to infrastructure layer, immediately turned it off. Following clean architecture, dependencies should go only inwards, otherwise it makes the application tightly coupled, when they should be independant from one another. If you personally are making shortcuts, at least do not guide others to a bad direction. Just mention that this is not a 100% correct way.

    • @PatrickGod
      @PatrickGod  9 หลายเดือนก่อน +3

      Hey there, thanks for your feedback. The approach I showed in the tutorial, where the presentation layer references the infrastructure layer for service registration, is a practical choice for simplicity and educational purposes. It's a common method in .NET, especially with ASP.NET Core's dependency injection, to make service registration straightforward. This approach is often used in the industry for its simplicity and maintainability, considering the specific trade-offs.
      The goal of my tutorials is to simplify complex concepts for developers at all levels. I value your feedback and plan to explore the nuances of Clean Architecture more in future videos. Your insights contribute to a deeper, more nuanced discussion on architectural practices. Thanks for watching and pointing this out!

    • @sighua0s426
      @sighua0s426 9 หลายเดือนก่อน

      @@PatrickGod​​⁠ thank you for clarifying. I agree that this concept is simpler and easier to understand. I still think that mentioning in the video about making a shortcut would have been nice. Sorry for being too harsh though. I like your content and the way of explaining. (In my opinion, having a video on more decoupled version of clean architecture would be beneficial - there is absolutely no videos about it on youtube).