{"id":54007,"date":"2025-06-03T11:41:59","date_gmt":"2025-06-03T11:41:59","guid":{"rendered":"https:\/\/academy.xebia.com\/us\/?post_type=course&#038;p=54007"},"modified":"2026-10-06T06:53:55","modified_gmt":"2026-10-06T06:53:55","slug":"clean-architecture-with-asp-net-core-8-be","status":"publish","type":"course","link":"https:\/\/academy.xebia.com\/us\/training\/clean-architecture-with-asp-net-core-8-be\/","title":{"rendered":"Clean Architecture with ASP.NET Core 8 (BE)"},"content":{"rendered":"\n<div \n\tclass=\"wrapper wrapper--simple\" \n\tdata-id=\"2a26ec47\" \n\tdata-bg-on-inner=\"false\" \n\t>\n\t\t\n\t\t\t<div class=\"wrapper__inner\">\n\t\t\t\n<div class=\"block-group-hero js-group-hero\" data-id=\"85a4a8c2\">\n\t\t<div class=\"block-group-hero__background\">\n\t\t<div class=\"hero-theme block-group-hero__hero-theme\" data-id=\"fe9a064e\">\n\t\n\t<div class=\"hero-theme__background\">\n\t\t\t\t\t<div class=\"hero-theme__background--software-white\">\n\t\t\t\t<svg xmlns='http:\/\/www.w3.org\/2000\/svg' width='54' height='55' viewBox='0 0 54 55' fill='none'><path d='M2.458 33.333c-3.277-3.387-3.277-8.878 0-12.265l17.717-18.31C25.46-2.706 34.5 1.164 34.5 8.89v36.62c0 7.727-9.039 11.596-14.325 6.133L2.458 33.333Z' fill='url(#3c1e2c78-7a40-45b0-9018-1aaac5fdccd5)'\/><path d='M52.077 22.43c2.564 2.635 2.564 6.906 0 9.54L38.21 46.21C34.074 50.461 27 47.451 27 41.441V12.96c0-6.01 7.074-9.019 11.211-4.77l13.866 14.24Z' fill='url(#b0ac0058-6d6d-4f3e-946f-dba1d605141e)'\/><path fill-rule='evenodd' clip-rule='evenodd' d='M34.112 6.22c.25.825.388 1.718.388 2.67v36.62a9.14 9.14 0 0 1-.388 2.67C30.564 48.461 27 45.707 27 41.441V12.96c0-4.266 3.564-7.02 7.112-6.74Z' fill='url(#c2b1ad86-e474-4a1b-90d6-8a38250681b7)'\/><defs><linearGradient id='3c1e2c78-7a40-45b0-9018-1aaac5fdccd5' x1='17.25' y1='0.200195' x2='17.25' y2='54.2002' gradientUnits='userSpaceOnUse'><stop stop-color='#F3F3F3' stop-opacity='0.5'\/><stop offset='1' stop-color='#84117C'\/><\/linearGradient><linearGradient id='b0ac0058-6d6d-4f3e-946f-dba1d605141e' x1='40.5' y1='48.2002' x2='40.5' y2='6.2002' gradientUnits='userSpaceOnUse'><stop stop-color='#F3F3F3' stop-opacity='0.5'\/><stop offset='1' stop-color='#84117C'\/><\/linearGradient><linearGradient id='c2b1ad86-e474-4a1b-90d6-8a38250681b7' x1='30.75' y1='6.2002' x2='30.75' y2='48.2002' gradientUnits='userSpaceOnUse'><stop stop-color='#84117C'\/><stop offset='0.9999' stop-color='#A80C9E'\/><stop offset='1' stop-color='#84117C' stop-opacity='0'\/><\/linearGradient><\/defs><\/svg>\t\t\t<\/div>\n\t\t\n\t<\/div>\n<\/div>\t<\/div>\n\t<div class=\"block-group-hero__content\">\n\t\t\n\n<div \n\tclass=\"wrapper wrapper--simple\" \n\tdata-id=\"f9d8d0f0\" \n\tdata-bg-on-inner=\"false\" \n\t>\n\t\t\n\t\t\t<div class=\"wrapper__inner\">\n\t\t\t\n<div class=\"block-course-hero\">\n\t<div class=\"block-course-hero__row\">\n\t\t<div class=\"block-course-hero block-course-hero__title\">\n\t\t\t<div class=\"block-course-hero__title-container\">\n\t\t\t\t<h1\tclass=\"heading\"\n\tdata-id=\"530fefa8\"\n>\n\tClean Architecture with ASP.NET Core 8<\/h1>\t\t\t<\/div>\n\t\t<\/div>\n\t<\/div>\n\t<div class=\"block-course-hero__row\">\n\t\t<div class=\"block-course-hero\">\n\t\t\t<div class=\"block-course-hero__content\">\n\t\t\t\t<p class=\"block-course-hero__date-location\">\n\t\t\t\t\t<span data-training-meta-p-date>\n\t\t\t\t\t<\/span>   <span data-training-meta-p-address>\t\t\t\t\t<\/span>\n\t\t\t\t<\/p>\n\t\t\t\t<div class=\"course-tags block-course-hero__course-tags\" data-id=\"cf8b73d8\">\n\t<div class=\"tags course-tags__tags js-tags\">\n\t\t<button\tclass=\"btn tags__show-more js-tags-show-more\"\n\tdata-id=\"fd093d0b\">\n\t<i class=\"icon btn__show-more\" data-id=\"7dfd9513\"  aria-hidden=\"true\">\n\t<svg xmlns='http:\/\/www.w3.org\/2000\/svg' fill='none' viewBox='0 0 25 24'><path stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M7 12h10M12 7v10'\/><\/svg><\/i>\n\t\n\t<\/button>\t<div class=\"tags__tippy-template js-tags-tippy-template\">\n\t\t<div class=\"tags__head\">\n\t\t\t<span><\/span>\n\t\t\t<button\tclass=\"btn tags__close js-tags-close\"\n\tdata-id=\"1d529899\">\n\t<i class=\"icon btn__close\" data-id=\"51dfae74\"  aria-hidden=\"true\">\n\t<svg width='20' height='20' viewBox='0 0 20 20' fill='none' xmlns='http:\/\/www.w3.org\/2000\/svg'><path d='M15 5L5.00103 14.999' stroke='#6A1D57' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'\/><path d='M15 14.998L5.00103 4.99907' stroke='#6A1D57' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'\/><\/svg><\/i>\n\t\n\t<\/button>\t\t<\/div>\n\t<\/div>\n<\/div><\/div><p class=\"paragraph block-course-hero__description\" data-id=\"a078f206\">\n\tBuilding testable and maintainable code is a hard requirement these days. It\u2019s vital that your software supports changes over a prolonged period of time. That is something that can be achieved only if you set up an architecture that supports this. In this workshop, you\u2019ll learn about Clean Architecture applied to ASP.NET Core 8. Clean architecture has over the years proven to be a way to create a solid foundation for enterprise-ready applications.<\/p>\t\t\t\t<div class=\"block-course-hero__trainers-list\" aria-hidden=\"true\">\n\t\t\t\t\t<a href=\"https:\/\/example.com\" class=\"author-meta block-course-hero__author-meta author-meta__make-flex author-meta__link author-meta__make-flex\" rel=\"nofollow noopener\" target=\"_blank\">\n\t\t<picture class=\"image author-meta__image\" data-id=\"f956fc85\">\n\n\t\n\t\n\t<img\n\t\tsrc=\"https:\/\/example.com\"\n\t\talt=\"\"\n\t\tclass=\"image__img author-meta__image-img\"\n\t\/>\n<\/picture><h2\tclass=\"heading author-meta__heading\"\n\tdata-id=\"80570a94\"\n>\n\tTrainer Title<\/h2>\t<\/a>\t\t\t\t<\/div>\n\t\t\t\t<div\n\t\t\t\t\tclass=\"block-course-hero__review-widget block-course-hero__review-widget-spacing\"\n\t\t\t\t\taria-hidden=\"true\">\n\t\t\t\t\t<div class=\"springest-review-widget springest-review-widget-width:300 springest-review-widget-bg:FFFFFF\">\n\t<a href=\"\">\n\t\t\t<\/a>\n<\/div>\t\t\t\t<\/div>\n\t\t\t\t\t\t\t<\/div>\n\t\t\t<div class=\"block-course-hero__booking-container\">\n\t\t\t\t<div class=\"booking js-booking block-course-hero__booking booking__single-column\" id=\"booking-93314248\" data-id=\"93314248\">\n\t\t<div class=\"booking__info\">\n\t\t<h2\tclass=\"heading booking__heading\"\n\tdata-id=\"bd211768\"\n>\n\t<strong>Any questions?\u00a0\u00a0<\/strong><\/h2><p class=\"paragraph booking__paragraph\" data-id=\"4e145f43\">\n\tBrijesh will gladly help you further with any personal or in-company needs you might have.<\/p><div class=\"author-meta booking__author-meta\">\n\t\t<picture class=\"image author-meta__image\" data-id=\"7d64d0c8\">\n\n\t\n\t\n\t<img\n\t\tsrc=\"\/wp-content\/uploads\/sites\/21\/2025\/05\/Brijesh-Kohli-Profile-Picture-2-e1757405354999.jpeg\"\n\t\talt=\"\"\n\t\tclass=\"image__img author-meta__image-img\"\n\t\/>\n<\/picture>\t\t<h2\tclass=\"heading author-meta__heading\"\n\tdata-id=\"8d738744\"\n>\n\t<strong>Brijesh Kohli<\/strong><br>Training Advisor<\/h2>\t\t<p class=\"paragraph author-meta__paragraph\" data-id=\"4f44aa13\">\n\t<a href=\"tel:09999644790\" data-type=\"tel\" data-id=\"tel:09999644790\">+1 (404) 988-3790<\/a><br><a href=\"mailto:Surat.wahal@xebia.com\" data-type=\"mailto\" data-id=\"mailto:Surat.wahal@xebia.com\"><a href=\"mailto:Brijesh.kohli@xebia.com\">Brijesh.kohli@xebia.com<\/a><\/a><br><a href=\"https:\/\/www.linkedin.com\/in\/surat-wahal-12996513\" target=\"_blank\" rel=\"noreferrer noopener nofollow\"><a href=\"https:\/\/www.linkedin.com\/in\/brijesh-kohli\/\" rel=\"nofollow noopener\" target=\"_blank\">https:\/\/www.linkedin.com\/in\/brijesh-kohli\/<\/a><\/a><\/p>\t<\/div><a class=\"btn booking__contact\" title=\"Get in touch\" data-id=\"754bb8d8\" href=\"https:\/\/academy.xebia.com\/us\/about-us\/contact-us\/\">\n\t\n\t\t\t<span>Get in touch<\/span>\n\t\n\t<\/a>\t<\/div>\n<\/div>\t\t\t<\/div>\n\t\t<\/div>\n\t<\/div>\n<\/div>\n\t\t<\/div>\n\t<\/div>\n\n\t<\/div>\n<\/div>\t\t<\/div>\n\t<\/div>\n\n\n\n<div \n\tclass=\"wrapper\" \n\tdata-id=\"a3520fa2\" \n\tdata-bg-on-inner=\"false\" \n\t>\n\t\t\n\t\t\t<div class=\"wrapper__inner\">\n\t\t\t\n<div class=\"block-course-stats\" \n\tdata-id=\"bb1c9a74\" \n\taria-hidden=\"1\"\n\t>\n\t\n\t<\/div>\n\t\t<\/div>\n\t<\/div>\n\n\n\n<div \n\tclass=\"wrapper\" \n\tdata-id=\"70e39176\" \n\tdata-bg-on-inner=\"false\" \n\t>\n\t\t\n\t\t\t<div class=\"wrapper__inner\">\n\t\t\t\n<div class=\"block-columns\" data-id=\"d3bf89f4\">\n\t\n\n<div class=\"block-column\" data-id=\"54ede81a\">\n\t\n\n<div \n\tclass=\"wrapper wrapper--simple\" \n\tdata-id=\"3df264bf\" \n\tdata-bg-on-inner=\"false\" \n\t>\n\t\t\n\t\t\t<div class=\"wrapper__inner\">\n\t\t\t\n<div class=\"block-heading\" data-id=\"0b89e9ce\">\n\t<h2\tclass=\"heading block-heading__heading\"\n\tdata-id=\"02a963be\"\n>\n\tWhat will you learn?<\/h2><\/div>\n\t\t<\/div>\n\t<\/div>\n\n\n\n<div \n\tclass=\"wrapper wrapper--simple\" \n\tdata-id=\"357a874d\" \n\tdata-bg-on-inner=\"false\" \n\t>\n\t\t\n\t\t\t<div class=\"wrapper__inner\">\n\t\t\t\n<div class=\"block-paragraph\" data-id=\"5b72ea84\">\n\t<p class=\"paragraph block-paragraph__paragraph\" data-id=\"99f2fdc2\">\n\tYou&#8217;ll learn about the tools, frameworks and best practices to create an architecture that&#8217;s tested and is powering many applications. You\u2019ll then use the API from a Blazor front-end.<\/p><\/div>\n\t\t<\/div>\n\t<\/div>\n\n\n\n<div \n\tclass=\"wrapper wrapper--simple\" \n\tdata-id=\"6fc204f3\" \n\tdata-bg-on-inner=\"false\" \n\t>\n\t\t\n\t\t\t<div class=\"wrapper__inner\">\n\t\t\t\n<div class=\"block-paragraph\" data-id=\"57a981ab\">\n\t<p class=\"paragraph block-paragraph__paragraph\" data-id=\"d1915ab8\">\n\tAfter attending this course, you&#8217;ll walk away with ideas to create your next applications but now, based on best practices!<\/p><\/div>\n\t\t<\/div>\n\t<\/div>\n\n<\/div>\n\n\n\n<div class=\"block-column\" data-id=\"274b4311\">\n\t\n\n<div \n\tclass=\"wrapper wrapper--simple\" \n\tdata-id=\"87f4b3e7\" \n\tdata-bg-on-inner=\"false\" \n\t>\n\t\t\n\t\t\t<div class=\"wrapper__inner\">\n\t\t\t\n<div class=\"block-group\" data-id=\"09c05abd\">\n\t\n\n<div \n\tclass=\"wrapper wrapper--simple\" \n\tdata-id=\"e7d50027\" \n\tdata-bg-on-inner=\"false\" \n\t>\n\t\t\n\t\t\t<div class=\"wrapper__inner\">\n\t\t\t\n<div class=\"block-heading\" data-id=\"7d752c4b\">\n\t<h2\tclass=\"heading block-heading__heading\"\n\tdata-id=\"57ba0c43\"\n>\n\tKey takeaways<\/h2><\/div>\n\t\t<\/div>\n\t<\/div>\n\n\n\n<div \n\tclass=\"wrapper wrapper--simple\" \n\tdata-id=\"63cff4f2\" \n\tdata-bg-on-inner=\"false\" \n\t>\n\t\t\n\t\t\t<div class=\"wrapper__inner\">\n\t\t\t\n<div class=\"block-lists\" data-id=\"a751853f\">\n\t<ol\tclass=\"lists block-lists__lists\"\n\tdata-id=\"51e00692\"\n>\n\t<li><span class=\"lists__marker\" aria-hidden=\"true\">01<\/span>Understand the concepts of Clean Architecture in a practical way.<\/li><li><span class=\"lists__marker\" aria-hidden=\"true\">02<\/span>Build a real-world application throughout the courseLeverage AWS Managed Services to enable greater flexibility and resiliency in an infrastructure.<\/li><li><span class=\"lists__marker\" aria-hidden=\"true\">03<\/span>Learn about best practices and patterns you should apply in your own developmentUse the Well-Architected Framework to improve architectures with AWS solutions.<\/li><\/ol><\/div>\n\t\t<\/div>\n\t<\/div>\n\n<\/div>\t\t<\/div>\n\t<\/div>\n\n<\/div>\n\n<\/div>\n\t\t<\/div>\n\t<\/div>\n\n\n\n<div \n\tclass=\"wrapper\" \n\tdata-id=\"bfc00510\" \n\tdata-bg-on-inner=\"false\" \n\t>\n\t\t\n\t\t\t<div class=\"wrapper__inner\">\n\t\t\t\n<div class=\"block-columns\" data-id=\"e2d36ccf\">\n\t\n\n<div class=\"block-column\" data-id=\"7f920466\">\n\t\n\n<div \n\tclass=\"wrapper wrapper--simple\" \n\tdata-id=\"825b986e\" \n\tdata-bg-on-inner=\"false\" \n\t>\n\t\t\n\t\t\t<div class=\"wrapper__inner\">\n\t\t\t\n<div class=\"block-heading\" data-id=\"c03bae6e\">\n\t<h2\tclass=\"heading block-heading__heading\"\n\tdata-id=\"d1a1d569\"\n>\n\tProgram<\/h2><\/div>\n\t\t<\/div>\n\t<\/div>\n\n\n\n<div \n\tclass=\"wrapper wrapper--simple\" \n\tdata-id=\"cea399bc\" \n\tdata-bg-on-inner=\"false\" \n\t>\n\t\t\n\t\t\t<div class=\"wrapper__inner\">\n\t\t\t\n<div class=\"block-paragraph\" data-id=\"65fb4db6\">\n\t<p class=\"paragraph block-paragraph__paragraph\" data-id=\"29fefdaf\">\n\tThis course will give you practical insights in the concept of Clean Architecture, a way to build robust, testable and maintainable applications. We will use ASP.NET Core and Blazor to apply the knowledge during this course.<\/p><\/div>\n\t\t<\/div>\n\t<\/div>\n\n<\/div>\n\n\n\n<div class=\"block-column\" data-id=\"7343c561\">\n\t\n\n<div \n\tclass=\"wrapper wrapper--simple\" \n\tdata-id=\"a6f1958a\" \n\tdata-bg-on-inner=\"false\" \n\t>\n\t\t\n\t\t\t<div class=\"wrapper__inner\">\n\t\t\t\n<div\n\tclass=\"block-accordion js-block-accordion\"\n\tdata-close-adjacent=\"false\"\n>\n\t\t\n\n<div class=\"block-accordion-item js-block-accordion-item\" \n\taria-expanded=\"true\"\n>\n\t<button class=\"block-accordion-item__trigger js-block-accordion-item-trigger\" \n\t\taria-label=\"Day 1\" \n\t\taria-controls=\"18903e5c\" \n\t\taria-expanded=\"true\" \n\t\tid=\"e8c4b1f4\"\n\t>\n\t\t<h2\tclass=\"heading block-accordion-item__title\"\n\tdata-id=\"0f6de8d2\"\n>\n\tDay 1<\/h2>\t\t\n\t\t<span class=\"block-accordion-item__wrap-icon\" aria-hidden=\"true\">\n\t\t\t<i class=\"icon block-accordion-item__icon\" data-id=\"d038a952\"  aria-hidden=\"true\">\n\t<svg width='24' height='24' viewBox='0 0 24 24' fill='none' xmlns='http:\/\/www.w3.org\/2000\/svg'><path d='M13 5.5a1 1 0 1 0-2 0h2Zm-1.707 13.707a1 1 0 0 0 1.414 0l6.364-6.364a1 1 0 0 0-1.414-1.414L12 17.086l-5.657-5.657a1 1 0 0 0-1.414 1.414l6.364 6.364ZM11 5.5v13h2v-13h-2Z' fill='currentColor'\/><\/svg><\/i>\t\t<\/span>\n\t<\/button>\n\n\t<div role=\"region\" class=\"block-accordion-item__panel js-block-accordion-item-panel\" \n\t\taria-hidden=\"false\" \n\t\taria-labelledby=\"e8c4b1f4\" \n\t\tid=\"18903e5c\"\n\t>\n\t\t<div class=\"block-accordion-item__content\">\n\t\t\t\n\n<div \n\tclass=\"wrapper wrapper--simple\" \n\tdata-id=\"41416fc6\" \n\tdata-bg-on-inner=\"false\" \n\t>\n\t\t\n\t\t\t<div class=\"wrapper__inner\">\n\t\t\t\n<div class=\"block-paragraph\" data-id=\"0e85a960\">\n\t<p class=\"paragraph block-paragraph__paragraph\" data-id=\"a6991720\">\n\t<strong>An overview of ASP.NET Core and ASP.NET Core APIs<\/strong><br>In this first chapter, we will make sure we\u2019re all on the same page about ASP.NET Core and creating APIs with the technology. Although having previous experience with ASP.NET Core will come in handy, you will learn all that\u2019s required about some of the foundational concepts such as dependency injection, middleware and more.<\/p><\/div>\n\t\t<\/div>\n\t<\/div>\n\n\n\n<div \n\tclass=\"wrapper wrapper--simple\" \n\tdata-id=\"cf2ad279\" \n\tdata-bg-on-inner=\"false\" \n\t>\n\t\t\n\t\t\t<div class=\"wrapper__inner\">\n\t\t\t\n<div class=\"block-paragraph\" data-id=\"ea33a733\">\n\t<p class=\"paragraph block-paragraph__paragraph\" data-id=\"ee88c5a1\">\n\t<strong>Introducing core architectural principles and clean architecture<\/strong><br>Clean architecture is in essence not much more than applying well-known architectural principles in a correct way. Most developers will know these but we will start with an overview of these. Next, we will inspect the concept of clean architecture and the different parts that make up the structure of it.<\/p><\/div>\n\t\t<\/div>\n\t<\/div>\n\n\n\n<div \n\tclass=\"wrapper wrapper--simple\" \n\tdata-id=\"8c8a1cec\" \n\tdata-bg-on-inner=\"false\" \n\t>\n\t\t\n\t\t\t<div class=\"wrapper__inner\">\n\t\t\t\n<div class=\"block-paragraph\" data-id=\"4f67f54f\">\n\t<p class=\"paragraph block-paragraph__paragraph\" data-id=\"2d083428\">\n\t<strong>Creating the application core<\/strong><br>We will start the creation of our application from the very core. In this chapter, we will understand how to structure code around contracts, apply clean structuring, add CQRS, implement business rules and much more. We will see how common packages such as Mediator and AutoMapper can be used correctly here.<\/p><\/div>\n\t\t<\/div>\n\t<\/div>\n\n\n\n<div \n\tclass=\"wrapper wrapper--simple\" \n\tdata-id=\"bcb5a455\" \n\tdata-bg-on-inner=\"false\" \n\t>\n\t\t\n\t\t\t<div class=\"wrapper__inner\">\n\t\t\t\n<div class=\"block-paragraph\" data-id=\"14459bb8\">\n\t<p class=\"paragraph block-paragraph__paragraph\" data-id=\"fbe9dee6\">\n\t<strong>Adding the infrastructure layer<\/strong><br>So far, our code is nicely structured but it doesn\u2019t \u201cdo\u201d a lot yet. That\u2019ll quickly change in this chapter when we start adding infrastructure concerns. This will bring in functionalities such as data access based on EF Core and working with external services.<\/p><\/div>\n\t\t<\/div>\n\t<\/div>\n\n\t\t<\/div>\n\t<\/div>\n<\/div>\n\n\n\n<div class=\"block-accordion-item js-block-accordion-item\" \n\taria-expanded=\"false\"\n>\n\t<button class=\"block-accordion-item__trigger js-block-accordion-item-trigger\" \n\t\taria-label=\"Day 2\" \n\t\taria-controls=\"dadad1a0\" \n\t\taria-expanded=\"false\" \n\t\tid=\"50c2909c\"\n\t>\n\t\t<h2\tclass=\"heading block-accordion-item__title\"\n\tdata-id=\"8d85206a\"\n>\n\tDay 2<\/h2>\t\t\n\t\t<span class=\"block-accordion-item__wrap-icon\" aria-hidden=\"true\">\n\t\t\t<i class=\"icon block-accordion-item__icon\" data-id=\"5e3481d8\"  aria-hidden=\"true\">\n\t<svg width='24' height='24' viewBox='0 0 24 24' fill='none' xmlns='http:\/\/www.w3.org\/2000\/svg'><path d='M13 5.5a1 1 0 1 0-2 0h2Zm-1.707 13.707a1 1 0 0 0 1.414 0l6.364-6.364a1 1 0 0 0-1.414-1.414L12 17.086l-5.657-5.657a1 1 0 0 0-1.414 1.414l6.364 6.364ZM11 5.5v13h2v-13h-2Z' fill='currentColor'\/><\/svg><\/i>\t\t<\/span>\n\t<\/button>\n\n\t<div role=\"region\" class=\"block-accordion-item__panel js-block-accordion-item-panel\" \n\t\taria-hidden=\"true\" \n\t\taria-labelledby=\"50c2909c\" \n\t\tid=\"dadad1a0\"\n\t>\n\t\t<div class=\"block-accordion-item__content\">\n\t\t\t\n\n<div \n\tclass=\"wrapper wrapper--simple\" \n\tdata-id=\"dece68ab\" \n\tdata-bg-on-inner=\"false\" \n\t>\n\t\t\n\t\t\t<div class=\"wrapper__inner\">\n\t\t\t\n<div class=\"block-paragraph\" data-id=\"5e16b069\">\n\t<p class=\"paragraph block-paragraph__paragraph\" data-id=\"74b39385\">\n\t<strong>Adding an API<\/strong><br>We\u2019ve written a lot of code already but now we\u2019ll want to see the fruits of our hard labor. We\u2019ll start with the creation of the API that\u2019ll use the core and infrastructure code that we have created. On this API, we\u2019ll also enable the use of Swagger so that it can more easily be consumed from clients.<\/p><\/div>\n\t\t<\/div>\n\t<\/div>\n\n\n\n<div \n\tclass=\"wrapper wrapper--simple\" \n\tdata-id=\"0f7e6940\" \n\tdata-bg-on-inner=\"false\" \n\t>\n\t\t\n\t\t\t<div class=\"wrapper__inner\">\n\t\t\t\n<div class=\"block-paragraph\" data-id=\"7a0e3a62\">\n\t<p class=\"paragraph block-paragraph__paragraph\" data-id=\"9de1a5c3\">\n\t<strong>Writing tests<\/strong><br>We started of with the idea that the code we\u2019re going to create is more testable, so now the proof is in the pudding. We\u2019ll create tests for the different parts of the application that we have written so far.<\/p><\/div>\n\t\t<\/div>\n\t<\/div>\n\n\n\n<div \n\tclass=\"wrapper wrapper--simple\" \n\tdata-id=\"7706a68e\" \n\tdata-bg-on-inner=\"false\" \n\t>\n\t\t\n\t\t\t<div class=\"wrapper__inner\">\n\t\t\t\n<div class=\"block-paragraph\" data-id=\"226e2ea8\">\n\t<p class=\"paragraph block-paragraph__paragraph\" data-id=\"7596783f\">\n\t<strong>Understanding ASP.NET Core Blazor<\/strong><br>Blazor introduces a radical new way for .NET developers to build client-side applications and since .NET 8, also server-side rendered applications. We will in this chapter understand the core concepts of Blazor, which we\u2019ll use to consume the API.<\/p><\/div>\n\t\t<\/div>\n\t<\/div>\n\n\n\n<div \n\tclass=\"wrapper wrapper--simple\" \n\tdata-id=\"b27219de\" \n\tdata-bg-on-inner=\"false\" \n\t>\n\t\t\n\t\t\t<div class=\"wrapper__inner\">\n\t\t\t\n<div class=\"block-paragraph\" data-id=\"93cc73c6\">\n\t<p class=\"paragraph block-paragraph__paragraph\" data-id=\"05cc3dbd\">\n\t<strong>Adding the Blazor UI<\/strong><br>Although it\u2019s not the focus of this course to create a UI, it\u2019s definitely useful to see how we can interact with our newly created API. In this chapter, we will learn how we can generate code for the client and we\u2019ll build the Blazor app together that uses the API.<\/p><\/div>\n\t\t<\/div>\n\t<\/div>\n\n\n\n<div \n\tclass=\"wrapper wrapper--simple\" \n\tdata-id=\"21bce8a7\" \n\tdata-bg-on-inner=\"false\" \n\t>\n\t\t\n\t\t\t<div class=\"wrapper__inner\">\n\t\t\t\n<div class=\"block-paragraph\" data-id=\"df41611e\">\n\t<p class=\"paragraph block-paragraph__paragraph\" data-id=\"779217ba\">\n\t<strong>Completing the API with extra behaviors<\/strong><br>Our API is functional but there are areas where improvements can be made. In this final chapter, we will extend our API with other cross-cutting concerns such as authentication, logging and more.<\/p><\/div>\n\t\t<\/div>\n\t<\/div>\n\n\t\t<\/div>\n\t<\/div>\n<\/div>\n\n<\/div>\n\t\t<\/div>\n\t<\/div>\n\n<\/div>\n\n<\/div>\n\t\t<\/div>\n\t<\/div>\n\n\n\n<div \n\tclass=\"wrapper\" \n\tdata-id=\"cf67fbc6\" \n\tdata-bg-on-inner=\"false\" \n\t>\n\t\t\n\t\t\t<div class=\"wrapper__inner\">\n\t\t\t\n<div class=\"block-heading\" data-id=\"6e246ee3\">\n\t<h2\tclass=\"heading block-heading__heading\"\n\tdata-id=\"952f4269\"\n>\n\tWho is it for?<\/h2><\/div>\n\t\t<\/div>\n\t<\/div>\n\n\n\n<div \n\tclass=\"wrapper\" \n\tdata-id=\"e4c00598\" \n\tdata-bg-on-inner=\"true\" \n\t>\n\t\t\n\t\t\t<div class=\"wrapper__inner\">\n\t\t\t\n<div class=\"block-group\" data-id=\"2281c38f\">\n\t<\/div>\t\t<\/div>\n\t<\/div>\n\n\n\n<div \n\tclass=\"wrapper\" \n\tdata-id=\"0e2f8ae8\" \n\tdata-bg-on-inner=\"false\" \n\t>\n\t\t\n\t\t\t<div class=\"wrapper__inner\">\n\t\t\t\n<div class=\"block-heading\" data-id=\"e95d731e\">\n\t<h2\tclass=\"heading block-heading__heading\"\n\tdata-id=\"f5a536a8\"\n>\n\tWhy should I follow this training?<\/h2><\/div>\n\t\t<\/div>\n\t<\/div>\n\n\n\n<div \n\tclass=\"wrapper\" \n\tdata-id=\"55515f06\" \n\tdata-bg-on-inner=\"true\" \n\t>\n\t\t\n\t\t\t<div class=\"wrapper__inner\">\n\t\t\t\n<div class=\"block-columns\" data-id=\"e1edcc58\">\n\t\n\n<div class=\"block-column\" data-id=\"49530cad\">\n\t\n\n<div \n\tclass=\"wrapper wrapper--simple\" \n\tdata-id=\"6a5726c8\" \n\tdata-bg-on-inner=\"false\" \n\t>\n\t\t\n\t\t\t<div class=\"wrapper__inner\">\n\t\t\t\n<div class=\"block-icon\">\n\t<i class=\"icon block-icon__icon\" data-id=\"5bc30f66\"  aria-hidden=\"true\">\n\t<svg xmlns='http:\/\/www.w3.org\/2000\/svg' width='16' height='16' fill='currentColor' viewBox='0 0 16 16'><path d='M10.97 4.97a.75.75 0 0 1 1.07 1.05l-3.99 4.99a.75.75 0 0 1-1.08.02L4.324 8.384a.75.75 0 1 1 1.06-1.06l2.094 2.093 3.473-4.425a.267.267 0 0 1 .02-.022z'\/><\/svg><\/i><\/div>\n\t\t<\/div>\n\t<\/div>\n\n\n\n<div \n\tclass=\"wrapper wrapper--simple\" \n\tdata-id=\"b082d072\" \n\tdata-bg-on-inner=\"false\" \n\t>\n\t\t\n\t\t\t<div class=\"wrapper__inner\">\n\t\t\t\n<div class=\"block-heading\" data-id=\"480426ed\">\n\t<h2\tclass=\"heading block-heading__heading\"\n\tdata-id=\"4e97fd77\"\n>\n\tLearn about Clean Architecture<\/h2><\/div>\n\t\t<\/div>\n\t<\/div>\n\n\n\n<div \n\tclass=\"wrapper wrapper--simple\" \n\tdata-id=\"004315dd\" \n\tdata-bg-on-inner=\"false\" \n\t>\n\t\t\n\t\t\t<div class=\"wrapper__inner\">\n\t\t\t\n<div class=\"block-paragraph\" data-id=\"7440c3f7\">\n\t<p class=\"paragraph block-paragraph__paragraph\" data-id=\"96fe2b6b\">\n\tUnderstand the architectural principle.<\/p><\/div>\n\t\t<\/div>\n\t<\/div>\n\n<\/div>\n\n\n\n<div class=\"block-column\" data-id=\"2d829437\">\n\t\n\n<div \n\tclass=\"wrapper wrapper--simple\" \n\tdata-id=\"fc11e369\" \n\tdata-bg-on-inner=\"false\" \n\t>\n\t\t\n\t\t\t<div class=\"wrapper__inner\">\n\t\t\t\n<div class=\"block-icon\">\n\t<i class=\"icon block-icon__icon\" data-id=\"9ee0ab1f\"  aria-hidden=\"true\">\n\t<svg xmlns='http:\/\/www.w3.org\/2000\/svg' width='16' height='16' fill='currentColor' viewBox='0 0 16 16'><path d='M10.97 4.97a.75.75 0 0 1 1.07 1.05l-3.99 4.99a.75.75 0 0 1-1.08.02L4.324 8.384a.75.75 0 1 1 1.06-1.06l2.094 2.093 3.473-4.425a.267.267 0 0 1 .02-.022z'\/><\/svg><\/i><\/div>\n\t\t<\/div>\n\t<\/div>\n\n\n\n<div \n\tclass=\"wrapper wrapper--simple\" \n\tdata-id=\"33bb9820\" \n\tdata-bg-on-inner=\"false\" \n\t>\n\t\t\n\t\t\t<div class=\"wrapper__inner\">\n\t\t\t\n<div class=\"block-heading\" data-id=\"118dc775\">\n\t<h2\tclass=\"heading block-heading__heading\"\n\tdata-id=\"69431242\"\n>\n\tBuild a real-world web app<\/h2><\/div>\n\t\t<\/div>\n\t<\/div>\n\n\n\n<div \n\tclass=\"wrapper wrapper--simple\" \n\tdata-id=\"94ca1863\" \n\tdata-bg-on-inner=\"false\" \n\t>\n\t\t\n\t\t\t<div class=\"wrapper__inner\">\n\t\t\t\n<div class=\"block-paragraph\" data-id=\"34c8a649\">\n\t<p class=\"paragraph block-paragraph__paragraph\" data-id=\"292ec1b8\">\n\tThis course will guide you in the end-to-end building of a real-world application.<\/p><\/div>\n\t\t<\/div>\n\t<\/div>\n\n<\/div>\n\n\n\n<div class=\"block-column\" data-id=\"b5b40cc6\">\n\t\n\n<div \n\tclass=\"wrapper wrapper--simple\" \n\tdata-id=\"7b7484c2\" \n\tdata-bg-on-inner=\"false\" \n\t>\n\t\t\n\t\t\t<div class=\"wrapper__inner\">\n\t\t\t\n<div class=\"block-icon\">\n\t<i class=\"icon block-icon__icon\" data-id=\"6ede49e9\"  aria-hidden=\"true\">\n\t<svg xmlns='http:\/\/www.w3.org\/2000\/svg' width='16' height='16' fill='currentColor' viewBox='0 0 16 16'><path d='M10.97 4.97a.75.75 0 0 1 1.07 1.05l-3.99 4.99a.75.75 0 0 1-1.08.02L4.324 8.384a.75.75 0 1 1 1.06-1.06l2.094 2.093 3.473-4.425a.267.267 0 0 1 .02-.022z'\/><\/svg><\/i><\/div>\n\t\t<\/div>\n\t<\/div>\n\n\n\n<div \n\tclass=\"wrapper wrapper--simple\" \n\tdata-id=\"f8374ddb\" \n\tdata-bg-on-inner=\"false\" \n\t>\n\t\t\n\t\t\t<div class=\"wrapper__inner\">\n\t\t\t\n<div class=\"block-heading\" data-id=\"de6ac278\">\n\t<h2\tclass=\"heading block-heading__heading\"\n\tdata-id=\"8fdb232a\"\n>\n\tUse it from an API and Blazor<\/h2><\/div>\n\t\t<\/div>\n\t<\/div>\n\n\n\n<div \n\tclass=\"wrapper wrapper--simple\" \n\tdata-id=\"2a63d053\" \n\tdata-bg-on-inner=\"false\" \n\t>\n\t\t\n\t\t\t<div class=\"wrapper__inner\">\n\t\t\t\n<div class=\"block-paragraph\" data-id=\"e819a75e\">\n\t<p class=\"paragraph block-paragraph__paragraph\" data-id=\"4951b7ec\">\n\tTo make it practical, you\u2019ll apply the knowledge from an API and a Blazor application.<\/p><\/div>\n\t\t<\/div>\n\t<\/div>\n\n<\/div>\n\n<\/div>\n\t\t<\/div>\n\t<\/div>\n\n\n\n<div \n\tclass=\"wrapper\" \n\tdata-id=\"f76c8ac2\" \n\tdata-bg-on-inner=\"false\" \n\t>\n\t\t\n\t\t\t<div class=\"wrapper__inner\">\n\t\t\t\n<div class=\"block-image-carousel js-block-image-carousel\" data-id=\"9aae7d9b\">\n\t\t<h2\tclass=\"heading block-image-carousel__heading\"\n\tdata-id=\"ee9ec08d\"\n>\n\tWhat does it look like?<\/h2>\n\t\t<div class=\"block-image-carousel__navigation\">\n\t\t\t<button\tclass=\"btn block-image-carousel__btn js-block-image-carousel-prev\"\n\tdata-id=\"873f9655\">\n\t<i class=\"icon btn__icon\" data-id=\"8454970a\"  aria-hidden=\"true\">\n\t<svg width='24' height='24' viewBox='0 0 24 24' fill='none' xmlns='http:\/\/www.w3.org\/2000\/svg'><path d='M18.5 13a1 1 0 1 0 0-2v2ZM4.793 11.293a1 1 0 0 0 0 1.414l6.364 6.364a1 1 0 0 0 1.414-1.414L6.914 12l5.657-5.657a1 1 0 0 0-1.414-1.414l-6.364 6.364ZM18.5 11h-13v2h13v-2Z' fill='currentColor'\/><\/svg><\/i>\n\t\n\t<\/button><button\tclass=\"btn block-image-carousel__btn js-block-image-carousel-next\"\n\tdata-id=\"cbf603ec\">\n\t<i class=\"icon btn__icon\" data-id=\"7fc09e67\"  aria-hidden=\"true\">\n\t<svg width='24' height='24' viewBox='0 0 24 24' fill='none' xmlns='http:\/\/www.w3.org\/2000\/svg'><path d='M5.5 11a1 1 0 1 0 0 2v-2Zm13.707 1.707a1 1 0 0 0 0-1.414l-6.364-6.364a1 1 0 1 0-1.414 1.414L17.086 12l-5.657 5.657a1 1 0 0 0 1.414 1.414l6.364-6.364ZM5.5 13h13v-2h-13v2Z' fill='currentColor'\/><\/svg><\/i>\n\t\n\t<\/button>\t\t<\/div>\n\n\t\t<div class=\"swiper block-image-carousel__container js-block-image-carousel-container\">\n\t\t\n\t\t\t<div class=\"swiper-wrapper\">\n\t\t\t\t\n<div class=\"js-block-image-carousel-item swiper-slide block-image-carousel__item\">\n\t\t\t<div class=\"js-block-image-carousel-item swiper-slide block-image-carousel__item-inner\">\n<div class=\"block-image\" data-id=\"246ba8be\">\n\t<picture class=\"image block-image__image\" data-id=\"bd1a3d17\">\n\n\t\n\t\n\t<img\n\t\tsrc=\"\/academy\/wp-content\/uploads\/sites\/4\/2024\/04\/Belgium-office-3-scaled.jpg\"\n\t\talt=\"\"\n\t\tclass=\"image__img block-image__image-img\"\n\t\/>\n<\/picture><\/div>\n<\/div>\n\t\t<\/div>\n\n<div class=\"js-block-image-carousel-item swiper-slide block-image-carousel__item\">\n\t\t\t<div class=\"js-block-image-carousel-item swiper-slide block-image-carousel__item-inner\">\n<div class=\"block-image\" data-id=\"012ea699\">\n\t<picture class=\"image block-image__image\" data-id=\"55afa61b\">\n\n\t\n\t\n\t<img\n\t\tsrc=\"\/academy\/wp-content\/uploads\/sites\/4\/2023\/10\/Header-OutSystems-6.jpg\"\n\t\talt=\"\"\n\t\tclass=\"image__img block-image__image-img\"\n\t\/>\n<\/picture><\/div>\n<\/div>\n\t\t<\/div>\n\n<div class=\"js-block-image-carousel-item swiper-slide block-image-carousel__item\">\n\t\t\t<div class=\"js-block-image-carousel-item swiper-slide block-image-carousel__item-inner\">\n<div class=\"block-image\" data-id=\"fd5c763b\">\n\t<picture class=\"image block-image__image\" data-id=\"4aaaa297\">\n\n\t\n\t\n\t<img\n\t\tsrc=\"https:\/\/academy.xebia.com\/wp-content\/uploads\/sites\/4\/2023\/08\/20230328-191741-JTI-scaled.jpg\"\n\t\talt=\"\"\n\t\tclass=\"image__img block-image__image-img\"\n\t\/>\n<\/picture><\/div>\n<\/div>\n\t\t<\/div>\n\n<div class=\"js-block-image-carousel-item swiper-slide block-image-carousel__item\">\n\t\t\t<div class=\"js-block-image-carousel-item swiper-slide block-image-carousel__item-inner\">\n<div class=\"block-image\" data-id=\"5ebb7ff3\">\n\t<picture class=\"image block-image__image\" data-id=\"345a7d57\">\n\n\t\n\t\n\t<img\n\t\tsrc=\"https:\/\/academy.xebia.com\/wp-content\/uploads\/sites\/4\/2023\/09\/Xebia-Stock-Amsterdam-100_2560.jpg\"\n\t\talt=\"\"\n\t\tclass=\"image__img block-image__image-img\"\n\t\/>\n<\/picture><\/div>\n<\/div>\n\t\t<\/div>\n\n<div class=\"js-block-image-carousel-item swiper-slide block-image-carousel__item\">\n\t\t\t<div class=\"js-block-image-carousel-item swiper-slide block-image-carousel__item-inner\">\n<div class=\"block-image\" data-id=\"930c913a\">\n\t<picture class=\"image block-image__image\" data-id=\"8b50e48c\">\n\n\t\n\t\n\t<img\n\t\tsrc=\"\/academy\/wp-content\/uploads\/sites\/4\/2023\/09\/Xebia-Lead-7-scaled.jpg\"\n\t\talt=\"\"\n\t\tclass=\"image__img block-image__image-img\"\n\t\/>\n<\/picture><\/div>\n<\/div>\n\t\t<\/div>\n\n<div class=\"js-block-image-carousel-item swiper-slide block-image-carousel__item\">\n\t\t\t<div class=\"js-block-image-carousel-item swiper-slide block-image-carousel__item-inner\">\n<div class=\"block-image\" data-id=\"3b347abd\">\n\t<picture class=\"image block-image__image\" data-id=\"6b0e211c\">\n\n\t\n\t\n\t<img\n\t\tsrc=\"\/academy\/wp-content\/uploads\/sites\/4\/2023\/09\/Xebia-Hilversum-office-scaled.jpg\"\n\t\talt=\"\"\n\t\tclass=\"image__img block-image__image-img\"\n\t\/>\n<\/picture><\/div>\n<\/div>\n\t\t<\/div>\n\t\t\t<\/div>\n\t\t<\/div>\n\n\t<div class=\"block-image-carousel__pagination js-block-image-carousel-pagination swiper-pagination\"><\/div>\n<\/div>\n\t\t<\/div>\n\t<\/div>\n\n\n\n<div \n\tclass=\"wrapper\" \n\tdata-id=\"73f29881\" \n\tdata-bg-on-inner=\"false\" \n\t>\n\t\t\n\t\t\t<div class=\"wrapper__inner\">\n\t\t\t\n<div class=\"block-heading\" data-id=\"f1c8bf89\">\n\t<h2\tclass=\"heading block-heading__heading\"\n\tdata-id=\"dab5a22d\"\n>\n\tWhat else <br>should I know?<\/h2><\/div>\n\t\t<\/div>\n\t<\/div>\n\n\n\n<div \n\tclass=\"wrapper\" \n\tdata-id=\"73ae8ef8\" \n\tdata-bg-on-inner=\"false\" \n\t>\n\t\t\n\t\t\t<div class=\"wrapper__inner\">\n\t\t\t\n<div class=\"block-columns\" data-id=\"6d67f66a\">\n\t\n\n<div class=\"block-column\" data-id=\"0a001926\">\n\t\n\n<div \n\tclass=\"wrapper wrapper--simple\" \n\tdata-id=\"cb1e512e\" \n\tdata-bg-on-inner=\"false\" \n\t>\n\t\t\n\t\t\t<div class=\"wrapper__inner\">\n\t\t\t\n<div class=\"block-paragraph\" data-id=\"537d2c3d\">\n\t<p class=\"paragraph block-paragraph__paragraph\" data-id=\"70c29ac2\">\n\tAfter registration for this training, you will receive a confirmation email with practical information. A week before the training, we will ask you about any dietary wishes.<\/p><\/div>\n\t\t<\/div>\n\t<\/div>\n\n<\/div>\n\n\n\n<div class=\"block-column\" data-id=\"2c312c8c\">\n\t\n\n<div \n\tclass=\"wrapper wrapper--simple\" \n\tdata-id=\"9a9646c0\" \n\tdata-bg-on-inner=\"false\" \n\t>\n\t\t\n\t\t\t<div class=\"wrapper__inner\">\n\t\t\t\n<div class=\"block-bullet-list\">\n\t\t\t<p class=\"paragraph block-bullet-list__paragraph\" data-id=\"3124ce7f\">\n\tCourse information<\/p>\t<div class=\"block-bullet-list__columns\">\n\t\t\n\n<div class=\"block-bullet-item js-block-bullet-item\" data-id=\"0f4ece5d\">\n\t<i class=\"icon block-bullet-item__icon\" data-id=\"59552832\"  aria-hidden=\"true\">\n\t<svg width='24' height='24' viewBox='0 0 24 24' fill='none' xmlns='http:\/\/www.w3.org\/2000\/svg'><path d='M11.25 11.25C11.4489 11.25 11.6397 11.329 11.7803 11.4697C11.921 11.6103 12 11.8011 12 12V15.75C12 15.9489 12.079 16.1397 12.2197 16.2803C12.3603 16.421 12.5511 16.5 12.75 16.5' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'\/><path d='M11.625 9C12.2463 9 12.75 8.49632 12.75 7.875C12.75 7.25368 12.2463 6.75 11.625 6.75C11.0037 6.75 10.5 7.25368 10.5 7.875C10.5 8.49632 11.0037 9 11.625 9Z' fill='currentColor'\/><\/svg><\/i><p class=\"paragraph block-bullet-item__paragraph\" data-id=\"78399429\">\n\tTraining will consist of a healthy mix of theory, examples, and exercises.<\/p><\/div>\n\n\n\n<div class=\"block-bullet-item js-block-bullet-item\" data-id=\"4b4a7b34\">\n\t<i class=\"icon block-bullet-item__icon\" data-id=\"a4d31487\"  aria-hidden=\"true\">\n\t<svg width='24' height='24' viewBox='0 0 24 24' fill='none' xmlns='http:\/\/www.w3.org\/2000\/svg'><path d='M11.25 11.25C11.4489 11.25 11.6397 11.329 11.7803 11.4697C11.921 11.6103 12 11.8011 12 12V15.75C12 15.9489 12.079 16.1397 12.2197 16.2803C12.3603 16.421 12.5511 16.5 12.75 16.5' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'\/><path d='M11.625 9C12.2463 9 12.75 8.49632 12.75 7.875C12.75 7.25368 12.2463 6.75 11.625 6.75C11.0037 6.75 10.5 7.25368 10.5 7.875C10.5 8.49632 11.0037 9 11.625 9Z' fill='currentColor'\/><\/svg><\/i><p class=\"paragraph block-bullet-item__paragraph\" data-id=\"544242e8\">\n\tLunch is included.<\/p><\/div>\n\n\n\n<div class=\"block-bullet-item js-block-bullet-item\" data-id=\"7c6e413c\">\n\t<i class=\"icon block-bullet-item__icon\" data-id=\"45e26c04\"  aria-hidden=\"true\">\n\t<svg width='24' height='24' viewBox='0 0 24 24' fill='none' xmlns='http:\/\/www.w3.org\/2000\/svg'><path d='M11.25 11.25C11.4489 11.25 11.6397 11.329 11.7803 11.4697C11.921 11.6103 12 11.8011 12 12V15.75C12 15.9489 12.079 16.1397 12.2197 16.2803C12.3603 16.421 12.5511 16.5 12.75 16.5' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'\/><path d='M11.625 9C12.2463 9 12.75 8.49632 12.75 7.875C12.75 7.25368 12.2463 6.75 11.625 6.75C11.0037 6.75 10.5 7.25368 10.5 7.875C10.5 8.49632 11.0037 9 11.625 9Z' fill='currentColor'\/><\/svg><\/i><p class=\"paragraph block-bullet-item__paragraph\" data-id=\"e955d6bb\">\n\tTravel and accommodation expenses are not included.<\/p><\/div>\n\n\n\n<div class=\"block-bullet-item js-block-bullet-item\" data-id=\"b5bddc70\">\n\t<i class=\"icon block-bullet-item__icon\" data-id=\"f243e011\"  aria-hidden=\"true\">\n\t<svg width='24' height='24' viewBox='0 0 24 24' fill='none' xmlns='http:\/\/www.w3.org\/2000\/svg'><path d='M11.25 11.25C11.4489 11.25 11.6397 11.329 11.7803 11.4697C11.921 11.6103 12 11.8011 12 12V15.75C12 15.9489 12.079 16.1397 12.2197 16.2803C12.3603 16.421 12.5511 16.5 12.75 16.5' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'\/><path d='M11.625 9C12.2463 9 12.75 8.49632 12.75 7.875C12.75 7.25368 12.2463 6.75 11.625 6.75C11.0037 6.75 10.5 7.25368 10.5 7.875C10.5 8.49632 11.0037 9 11.625 9Z' fill='currentColor'\/><\/svg><\/i><p class=\"paragraph block-bullet-item__paragraph\" data-id=\"65e1e911\">\n\tBasics of ASP.NET Core are expected to be known.<\/p><\/div>\n\n\t<\/div>\n<\/div>\n\t\t<\/div>\n\t<\/div>\n\n<\/div>\n\n<\/div>\n\t\t<\/div>\n\t<\/div>\n\n\n\n<div \n\tclass=\"wrapper\" \n\tdata-id=\"18f12be8\" \n\tdata-bg-on-inner=\"false\" \n\t>\n\t\t\n\t\t\t<div class=\"wrapper__inner\">\n\t\t\t\n<div\n\tdata-id=\"45eca997\"\n\tclass=\"block-course-list js-block-course-list js-block-course-list-45eca997\"\n\t>\n\t<h2\tclass=\"heading block-course-list__heading\"\n\tdata-id=\"ad524534\"\n>\n\tAlso interesting for you<\/h2><a class=\"btn block-course-list__btn\" title=\"View all training courses\" data-id=\"e71dc7b8\" href=\"https:\/\/academy.xebia.com\/us\/training\/\">\n\t\n\t\t\t<span>View all training courses<\/span>\n\t\n\t<\/a>\n\t<div class=\"block-course-list__slider-wrapper\">\n\t\t<div class=\"block-course-list__slider\">\n\t\t\t<div\n\t\t\t\tclass=\"block-course-list__swiper js-block-course-list-swiper swiper\"\n\t\t\t\tdata-allow-keyboard-controls=\"1\"\n\t\t\t>\n\t\t\t\t<div class=\"swiper-wrapper block-course-list__swiper-wrapper\">\n\t\t\t\t\t<div class=\"course-list-item swiper-slide js-tippy-container-isolated\" data-id=\"2096e48c\">\n\t<a class=\"btn course-list-item__btn course-list-item__heading-link\" title=\"Clean Architecture with ASP.NET Core 8 (BE)\" data-id=\"fa2d138c\" href=\"https:\/\/academy.xebia.com\/us\/training\/clean-architecture-with-asp-net-core-8-be\/\">\n\t\n\t\t\t<span>Clean Architecture with ASP.NET Core 8 (BE)<\/span>\n\t\n\t<\/a>\t\t\n\t<div class=\"course-list-item__details-row\">\n\t\t\t\t\t<div class=\"course-list-item__date\">\n\t\t\t\t\t\t\t<\/div>\n\t\t<a class=\"btn course-list-item__btn\" title=\"View training\" data-id=\"075dfd36\" href=\"https:\/\/academy.xebia.com\/us\/training\/clean-architecture-with-asp-net-core-8-be\/\">\n\t\n\t\t\t<span>View training<\/span>\n\t\n\t<\/a>\t<\/div>\n\n<\/div><div class=\"course-list-item swiper-slide js-tippy-container-isolated\" data-id=\"1a838520\">\n\t<a class=\"btn course-list-item__btn course-list-item__heading-link\" title=\"Clean Architecture with ASP.NET Core 8 (BE)\" data-id=\"53c45f30\" href=\"https:\/\/academy.xebia.com\/us\/training\/clean-architecture-with-asp-net-core-8-be\/\">\n\t\n\t\t\t<span>Clean Architecture with ASP.NET Core 8 (BE)<\/span>\n\t\n\t<\/a>\t\t\n\t<div class=\"course-list-item__details-row\">\n\t\t\t\t\t<div class=\"course-list-item__date\">\n\t\t\t\t\t\t\t<\/div>\n\t\t<a class=\"btn course-list-item__btn\" title=\"View training\" data-id=\"19b15143\" href=\"https:\/\/academy.xebia.com\/us\/training\/clean-architecture-with-asp-net-core-8-be\/\">\n\t\n\t\t\t<span>View training<\/span>\n\t\n\t<\/a>\t<\/div>\n\n<\/div><div class=\"course-list-item swiper-slide js-tippy-container-isolated\" data-id=\"010e2832\">\n\t<a class=\"btn course-list-item__btn course-list-item__heading-link\" title=\"Clean Architecture with ASP.NET Core 8 (BE)\" data-id=\"0a8a05a0\" href=\"https:\/\/academy.xebia.com\/us\/training\/clean-architecture-with-asp-net-core-8-be\/\">\n\t\n\t\t\t<span>Clean Architecture with ASP.NET Core 8 (BE)<\/span>\n\t\n\t<\/a>\t\t\n\t<div class=\"course-list-item__details-row\">\n\t\t\t\t\t<div class=\"course-list-item__date\">\n\t\t\t\t\t\t\t<\/div>\n\t\t<a class=\"btn course-list-item__btn\" title=\"View training\" data-id=\"353a135a\" href=\"https:\/\/academy.xebia.com\/us\/training\/clean-architecture-with-asp-net-core-8-be\/\">\n\t\n\t\t\t<span>View training<\/span>\n\t\n\t<\/a>\t<\/div>\n\n<\/div><div class=\"course-list-item swiper-slide js-tippy-container-isolated\" data-id=\"248a466d\">\n\t<a class=\"btn course-list-item__btn course-list-item__heading-link\" title=\"Clean Architecture with ASP.NET Core 8 (BE)\" data-id=\"269db5ae\" href=\"https:\/\/academy.xebia.com\/us\/training\/clean-architecture-with-asp-net-core-8-be\/\">\n\t\n\t\t\t<span>Clean Architecture with ASP.NET Core 8 (BE)<\/span>\n\t\n\t<\/a>\t\t\n\t<div class=\"course-list-item__details-row\">\n\t\t\t\t\t<div class=\"course-list-item__date\">\n\t\t\t\t\t\t\t<\/div>\n\t\t<a class=\"btn course-list-item__btn\" title=\"View training\" data-id=\"04a868ce\" href=\"https:\/\/academy.xebia.com\/us\/training\/clean-architecture-with-asp-net-core-8-be\/\">\n\t\n\t\t\t<span>View training<\/span>\n\t\n\t<\/a>\t<\/div>\n\n<\/div><div class=\"course-list-item swiper-slide js-tippy-container-isolated\" data-id=\"9d38509f\">\n\t<a class=\"btn course-list-item__btn course-list-item__heading-link\" title=\"Clean Architecture with ASP.NET Core 8 (BE)\" data-id=\"ceb25d1b\" href=\"https:\/\/academy.xebia.com\/us\/training\/clean-architecture-with-asp-net-core-8-be\/\">\n\t\n\t\t\t<span>Clean Architecture with ASP.NET Core 8 (BE)<\/span>\n\t\n\t<\/a>\t\t\n\t<div class=\"course-list-item__details-row\">\n\t\t\t\t\t<div class=\"course-list-item__date\">\n\t\t\t\t\t\t\t<\/div>\n\t\t<a class=\"btn course-list-item__btn\" title=\"View training\" data-id=\"c741e744\" href=\"https:\/\/academy.xebia.com\/us\/training\/clean-architecture-with-asp-net-core-8-be\/\">\n\t\n\t\t\t<span>View training<\/span>\n\t\n\t<\/a>\t<\/div>\n\n<\/div><div class=\"course-list-item swiper-slide js-tippy-container-isolated\" data-id=\"4d1dd160\">\n\t<h2\tclass=\"heading course-list-item__heading\"\n\tdata-id=\"d467c4d5\"\n>\n\tCan\u2019t find the course you\u2019re looking for? There\u2019s more!<\/h2>\t\t\n\t<div class=\"course-list-item__details-row\">\n\t\t\t\t\t<div class=\"course-list-item__date\">\n\t\t\t\t\t\t\t<\/div>\n\t\t<a class=\"btn course-list-item__btn\" title=\"View all courses\" data-id=\"037af8ae\" href=\"https:\/\/academy.xebia.com\/us\/training\/\">\n\t\n\t\t\t<span>View all courses<\/span>\n\t\n\t<\/a>\t<\/div>\n\n<\/div>\t\t\t\t<\/div>\n\t\t\t<\/div>\n\t\t<\/div>\n\t<\/div>\n\n\t<div class=\"block-course-list__controls swiper-pagination\"><\/div>\n<\/div>\n\t\t<\/div>\n\t<\/div>\n\n<div \n\tclass=\"wrapper wrapper--simple\" \n\tdata-id=\"528deda2\" \n\tdata-bg-on-inner=\"false\" \n\t>\n\t\t\n\t\t\t<div class=\"wrapper__inner\">\n\t\t\t\n<div class=\"block-heading\" data-id=\"abbfdc6d\">\n\t<h3\tclass=\"heading block-heading__heading\"\n\tdata-id=\"e7519ba6\"\n>\n\tFrequently Asked Questions<\/h3><\/div>\n\t\t<\/div>\n\t<\/div>\n\n\n<div \n\tclass=\"wrapper wrapper--simple\" \n\tdata-id=\"979e3d26\" \n\tdata-bg-on-inner=\"false\" \n\t>\n\t\t\n\t\t\t<div class=\"wrapper__inner\">\n\t\t\t\n<div\n\tclass=\"block-accordion js-block-accordion\"\n\tdata-close-adjacent=\"false\"\n>\n\t\t\n\n<div class=\"block-accordion-item js-block-accordion-item\" \n\taria-expanded=\"false\"\n>\n\t<button class=\"block-accordion-item__trigger js-block-accordion-item-trigger\" \n\t\taria-label=\"What is the Clean Architecture with ASP.NET Core 8 training course about?\" \n\t\taria-controls=\"04abb1da\" \n\t\taria-expanded=\"false\" \n\t\tid=\"ff357fa9\"\n\t>\n\t\t<h2\tclass=\"heading block-accordion-item__title\"\n\tdata-id=\"35386db4\"\n>\n\tWhat is the Clean Architecture with ASP.NET Core 8 training course about?<\/h2>\t\t<p class=\"paragraph block-accordion-item__subheading\" data-id=\"76cf84a1\">\n\t1.<\/p>\n\t\t<span class=\"block-accordion-item__wrap-icon\" aria-hidden=\"true\">\n\t\t\t<i class=\"icon block-accordion-item__icon\" data-id=\"360bcba4\"  aria-hidden=\"true\">\n\t<svg width='24' height='24' viewBox='0 0 24 24' fill='none' xmlns='http:\/\/www.w3.org\/2000\/svg'><path d='M13 5.5a1 1 0 1 0-2 0h2Zm-1.707 13.707a1 1 0 0 0 1.414 0l6.364-6.364a1 1 0 0 0-1.414-1.414L12 17.086l-5.657-5.657a1 1 0 0 0-1.414 1.414l6.364 6.364ZM11 5.5v13h2v-13h-2Z' fill='currentColor'\/><\/svg><\/i>\t\t<\/span>\n\t<\/button>\n\n\t<div role=\"region\" class=\"block-accordion-item__panel js-block-accordion-item-panel\" \n\t\taria-hidden=\"true\" \n\t\taria-labelledby=\"ff357fa9\" \n\t\tid=\"04abb1da\"\n\t>\n\t\t<div class=\"block-accordion-item__content\">\n\t\t\t\n\n<p>This practical workshop teaches you how to apply Clean Architecture principles to an ASP.NET Core 8 application. You build an application from its core through infrastructure and API layers, write tests, and use a Blazor front end to consume the API.<\/p>\n\n\t\t<\/div>\n\t<\/div>\n<\/div>\n\n\n<div class=\"block-accordion-item js-block-accordion-item\" \n\taria-expanded=\"false\"\n>\n\t<button class=\"block-accordion-item__trigger js-block-accordion-item-trigger\" \n\t\taria-label=\"Who should attend this ASP.NET Core Clean Architecture course?\" \n\t\taria-controls=\"a95f0e71\" \n\t\taria-expanded=\"false\" \n\t\tid=\"7ef3e685\"\n\t>\n\t\t<h2\tclass=\"heading block-accordion-item__title\"\n\tdata-id=\"c2df8d5c\"\n>\n\tWho should attend this ASP.NET Core Clean Architecture course?<\/h2>\t\t<p class=\"paragraph block-accordion-item__subheading\" data-id=\"69fde607\">\n\t2.<\/p>\n\t\t<span class=\"block-accordion-item__wrap-icon\" aria-hidden=\"true\">\n\t\t\t<i class=\"icon block-accordion-item__icon\" data-id=\"70a08bf1\"  aria-hidden=\"true\">\n\t<svg width='24' height='24' viewBox='0 0 24 24' fill='none' xmlns='http:\/\/www.w3.org\/2000\/svg'><path d='M13 5.5a1 1 0 1 0-2 0h2Zm-1.707 13.707a1 1 0 0 0 1.414 0l6.364-6.364a1 1 0 0 0-1.414-1.414L12 17.086l-5.657-5.657a1 1 0 0 0-1.414 1.414l6.364 6.364ZM11 5.5v13h2v-13h-2Z' fill='currentColor'\/><\/svg><\/i>\t\t<\/span>\n\t<\/button>\n\n\t<div role=\"region\" class=\"block-accordion-item__panel js-block-accordion-item-panel\" \n\t\taria-hidden=\"true\" \n\t\taria-labelledby=\"7ef3e685\" \n\t\tid=\"a95f0e71\"\n\t>\n\t\t<div class=\"block-accordion-item__content\">\n\t\t\t\n\n<p>The course is intended for developers who want to create robust, testable, and maintainable .NET applications, as well as teams looking to apply architectural best practices. Basic knowledge of ASP.NET Core is expected.<\/p>\n\n\t\t<\/div>\n\t<\/div>\n<\/div>\n\n\n<div class=\"block-accordion-item js-block-accordion-item\" \n\taria-expanded=\"false\"\n>\n\t<button class=\"block-accordion-item__trigger js-block-accordion-item-trigger\" \n\t\taria-label=\"What prerequisites do I need for the training?\" \n\t\taria-controls=\"8e171dc1\" \n\t\taria-expanded=\"false\" \n\t\tid=\"a9785c1b\"\n\t>\n\t\t<h2\tclass=\"heading block-accordion-item__title\"\n\tdata-id=\"d3143b2c\"\n>\n\tWhat prerequisites do I need for the training?<\/h2>\t\t<p class=\"paragraph block-accordion-item__subheading\" data-id=\"4184a895\">\n\t3.<\/p>\n\t\t<span class=\"block-accordion-item__wrap-icon\" aria-hidden=\"true\">\n\t\t\t<i class=\"icon block-accordion-item__icon\" data-id=\"4a123fe8\"  aria-hidden=\"true\">\n\t<svg width='24' height='24' viewBox='0 0 24 24' fill='none' xmlns='http:\/\/www.w3.org\/2000\/svg'><path d='M13 5.5a1 1 0 1 0-2 0h2Zm-1.707 13.707a1 1 0 0 0 1.414 0l6.364-6.364a1 1 0 0 0-1.414-1.414L12 17.086l-5.657-5.657a1 1 0 0 0-1.414 1.414l6.364 6.364ZM11 5.5v13h2v-13h-2Z' fill='currentColor'\/><\/svg><\/i>\t\t<\/span>\n\t<\/button>\n\n\t<div role=\"region\" class=\"block-accordion-item__panel js-block-accordion-item-panel\" \n\t\taria-hidden=\"true\" \n\t\taria-labelledby=\"a9785c1b\" \n\t\tid=\"8e171dc1\"\n\t>\n\t\t<div class=\"block-accordion-item__content\">\n\t\t\t\n\n<p>You are expected to know the basics of ASP.NET Core. The first part of the course reviews ASP.NET Core and API foundations, including dependency injection and middleware, but the training is not presented as a beginner introduction to programming.<\/p>\n\n\t\t<\/div>\n\t<\/div>\n<\/div>\n\n\n<div class=\"block-accordion-item js-block-accordion-item\" \n\taria-expanded=\"false\"\n>\n\t<button class=\"block-accordion-item__trigger js-block-accordion-item-trigger\" \n\t\taria-label=\"What will I learn in the Clean Architecture with ASP.NET Core 8 course?\" \n\t\taria-controls=\"2cd8831a\" \n\t\taria-expanded=\"false\" \n\t\tid=\"54018ddf\"\n\t>\n\t\t<h2\tclass=\"heading block-accordion-item__title\"\n\tdata-id=\"a6511957\"\n>\n\tWhat will I learn in the Clean Architecture with ASP.NET Core 8 course?<\/h2>\t\t<p class=\"paragraph block-accordion-item__subheading\" data-id=\"019d28db\">\n\t4.<\/p>\n\t\t<span class=\"block-accordion-item__wrap-icon\" aria-hidden=\"true\">\n\t\t\t<i class=\"icon block-accordion-item__icon\" data-id=\"bedb2cba\"  aria-hidden=\"true\">\n\t<svg width='24' height='24' viewBox='0 0 24 24' fill='none' xmlns='http:\/\/www.w3.org\/2000\/svg'><path d='M13 5.5a1 1 0 1 0-2 0h2Zm-1.707 13.707a1 1 0 0 0 1.414 0l6.364-6.364a1 1 0 0 0-1.414-1.414L12 17.086l-5.657-5.657a1 1 0 0 0-1.414 1.414l6.364 6.364ZM11 5.5v13h2v-13h-2Z' fill='currentColor'\/><\/svg><\/i>\t\t<\/span>\n\t<\/button>\n\n\t<div role=\"region\" class=\"block-accordion-item__panel js-block-accordion-item-panel\" \n\t\taria-hidden=\"true\" \n\t\taria-labelledby=\"54018ddf\" \n\t\tid=\"2cd8831a\"\n\t>\n\t\t<div class=\"block-accordion-item__content\">\n\t\t\t\n\n<p>You will learn Clean Architecture concepts and structure, how to organize application code around contracts and business rules, and how to use CQRS, Mediator, and AutoMapper. The course also covers EF Core and external services, API development and Swagger, testing, Blazor, and cross-cutting concerns such as authentication and logging.<\/p>\n\n\t\t<\/div>\n\t<\/div>\n<\/div>\n\n\n<div class=\"block-accordion-item js-block-accordion-item\" \n\taria-expanded=\"false\"\n>\n\t<button class=\"block-accordion-item__trigger js-block-accordion-item-trigger\" \n\t\taria-label=\"Is the training hands-on, or is it mainly theory?\" \n\t\taria-controls=\"8e48b858\" \n\t\taria-expanded=\"false\" \n\t\tid=\"13e37429\"\n\t>\n\t\t<h2\tclass=\"heading block-accordion-item__title\"\n\tdata-id=\"d829ead9\"\n>\n\tIs the training hands-on, or is it mainly theory?<\/h2>\t\t<p class=\"paragraph block-accordion-item__subheading\" data-id=\"cac4a931\">\n\t5.<\/p>\n\t\t<span class=\"block-accordion-item__wrap-icon\" aria-hidden=\"true\">\n\t\t\t<i class=\"icon block-accordion-item__icon\" data-id=\"abdd75fd\"  aria-hidden=\"true\">\n\t<svg width='24' height='24' viewBox='0 0 24 24' fill='none' xmlns='http:\/\/www.w3.org\/2000\/svg'><path d='M13 5.5a1 1 0 1 0-2 0h2Zm-1.707 13.707a1 1 0 0 0 1.414 0l6.364-6.364a1 1 0 0 0-1.414-1.414L12 17.086l-5.657-5.657a1 1 0 0 0-1.414 1.414l6.364 6.364ZM11 5.5v13h2v-13h-2Z' fill='currentColor'\/><\/svg><\/i>\t\t<\/span>\n\t<\/button>\n\n\t<div role=\"region\" class=\"block-accordion-item__panel js-block-accordion-item-panel\" \n\t\taria-hidden=\"true\" \n\t\taria-labelledby=\"13e37429\" \n\t\tid=\"8e48b858\"\n\t>\n\t\t<div class=\"block-accordion-item__content\">\n\t\t\t\n\n<p>It combines theory, examples, and exercises. You build a real-world application during the course, making the architectural concepts practical and showing how the API and Blazor UI work together.<\/p>\n\n\t\t<\/div>\n\t<\/div>\n<\/div>\n\n\n<div class=\"block-accordion-item js-block-accordion-item\" \n\taria-expanded=\"false\"\n>\n\t<button class=\"block-accordion-item__trigger js-block-accordion-item-trigger\" \n\t\taria-label=\"How long is the course, and what is covered each day?\" \n\t\taria-controls=\"1763670a\" \n\t\taria-expanded=\"false\" \n\t\tid=\"a83f44f0\"\n\t>\n\t\t<h2\tclass=\"heading block-accordion-item__title\"\n\tdata-id=\"a3718817\"\n>\n\tHow long is the course, and what is covered each day?<\/h2>\t\t<p class=\"paragraph block-accordion-item__subheading\" data-id=\"5faae2fd\">\n\t6.<\/p>\n\t\t<span class=\"block-accordion-item__wrap-icon\" aria-hidden=\"true\">\n\t\t\t<i class=\"icon block-accordion-item__icon\" data-id=\"c0e54d8e\"  aria-hidden=\"true\">\n\t<svg width='24' height='24' viewBox='0 0 24 24' fill='none' xmlns='http:\/\/www.w3.org\/2000\/svg'><path d='M13 5.5a1 1 0 1 0-2 0h2Zm-1.707 13.707a1 1 0 0 0 1.414 0l6.364-6.364a1 1 0 0 0-1.414-1.414L12 17.086l-5.657-5.657a1 1 0 0 0-1.414 1.414l6.364 6.364ZM11 5.5v13h2v-13h-2Z' fill='currentColor'\/><\/svg><\/i>\t\t<\/span>\n\t<\/button>\n\n\t<div role=\"region\" class=\"block-accordion-item__panel js-block-accordion-item-panel\" \n\t\taria-hidden=\"true\" \n\t\taria-labelledby=\"a83f44f0\" \n\t\tid=\"1763670a\"\n\t>\n\t\t<div class=\"block-accordion-item__content\">\n\t\t\t\n\n<p>The program is laid out over two days. Day one covers ASP.NET Core foundations, Clean Architecture principles, the application core, and infrastructure. Day two covers the API, testing, Blazor, the Blazor UI, and additional API behaviors such as authentication and logging.<\/p>\n\n\t\t<\/div>\n\t<\/div>\n<\/div>\n\n\n<div class=\"block-accordion-item js-block-accordion-item\" \n\taria-expanded=\"false\"\n>\n\t<button class=\"block-accordion-item__trigger js-block-accordion-item-trigger\" \n\t\taria-label=\"Will I learn how to test a Clean Architecture application?\" \n\t\taria-controls=\"47483397\" \n\t\taria-expanded=\"false\" \n\t\tid=\"4b0f3caf\"\n\t>\n\t\t<h2\tclass=\"heading block-accordion-item__title\"\n\tdata-id=\"7dfc7185\"\n>\n\tWill I learn how to test a Clean Architecture application?<\/h2>\t\t<p class=\"paragraph block-accordion-item__subheading\" data-id=\"2538b30f\">\n\t7.<\/p>\n\t\t<span class=\"block-accordion-item__wrap-icon\" aria-hidden=\"true\">\n\t\t\t<i class=\"icon block-accordion-item__icon\" data-id=\"560fc578\"  aria-hidden=\"true\">\n\t<svg width='24' height='24' viewBox='0 0 24 24' fill='none' xmlns='http:\/\/www.w3.org\/2000\/svg'><path d='M13 5.5a1 1 0 1 0-2 0h2Zm-1.707 13.707a1 1 0 0 0 1.414 0l6.364-6.364a1 1 0 0 0-1.414-1.414L12 17.086l-5.657-5.657a1 1 0 0 0-1.414 1.414l6.364 6.364ZM11 5.5v13h2v-13h-2Z' fill='currentColor'\/><\/svg><\/i>\t\t<\/span>\n\t<\/button>\n\n\t<div role=\"region\" class=\"block-accordion-item__panel js-block-accordion-item-panel\" \n\t\taria-hidden=\"true\" \n\t\taria-labelledby=\"4b0f3caf\" \n\t\tid=\"47483397\"\n\t>\n\t\t<div class=\"block-accordion-item__content\">\n\t\t\t\n\n<p>Yes. The program includes a dedicated section on writing tests for the application components created during the course, with a focus on demonstrating the testability benefits of the architecture.<\/p>\n\n\t\t<\/div>\n\t<\/div>\n<\/div>\n\n<\/div>\n\t\t<\/div>\n\t<\/div>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":105,"featured_media":0,"template":"","tags":[],"class_list":["post-54007","course","type-course","status-publish","hentry"],"acf":{"field_BrokersfeedIntroduction":"","field_BrokersfeedDescription":"","field_BrokersfeedFormat":"","field_BrokersfeedSubjects":"","field_BrokersfeedTakeaways":"","field_BrokersfeedTargetAudience":"","field_BrokersfeedPrerequisites":"","field_BrokersfeedCertificationValue":"","field_BrokersfeedNextSteps":"","field_BrokersfeedBanner":"","field_BrokersfeedImages":"","course_xebia_event_ids":"","course_xebia_event_group_id":"","course_xebia_discipline":"","course_xebia_sorting_order":5},"raw_content":null,"_links":{"self":[{"href":"https:\/\/academy.xebia.com\/us\/wp-json\/wp\/v2\/courses\/54007","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/academy.xebia.com\/us\/wp-json\/wp\/v2\/courses"}],"about":[{"href":"https:\/\/academy.xebia.com\/us\/wp-json\/wp\/v2\/types\/course"}],"author":[{"embeddable":true,"href":"https:\/\/academy.xebia.com\/us\/wp-json\/wp\/v2\/users\/105"}],"version-history":[{"count":5,"href":"https:\/\/academy.xebia.com\/us\/wp-json\/wp\/v2\/courses\/54007\/revisions"}],"predecessor-version":[{"id":58213,"href":"https:\/\/academy.xebia.com\/us\/wp-json\/wp\/v2\/courses\/54007\/revisions\/58213"}],"wp:attachment":[{"href":"https:\/\/academy.xebia.com\/us\/wp-json\/wp\/v2\/media?parent=54007"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/academy.xebia.com\/us\/wp-json\/wp\/v2\/tags?post=54007"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}