This is the code repository for Software Architecture with C# 12 and .NET 8, Fourth Edition, published by Packt.
Build enterprise applications using microservices, DevOps, EF Core, and design patterns for Azure
The authors of this book are -Gabriel Baptista and Francesco Abbruzzese
Software Architecture with C# 12 and .NET 8 puts high-level design theory to work in a .NET context, teaching you the key skills, technologies, and best practices required to become an effective .NET software architect. This fourth edition puts emphasis on a case study that will bring your skills to life. You’ll learn how to choose between different architectures and technologies at each level of the stack. You’ll take an even closer look at Blazor and explore OpenTelemetry for observability, as well as a more practical dive into preparing .NET microservices for Kubernetes integration. Divided into three parts, this book starts with the fundamentals of software architecture, covering C# best practices, software domains, design patterns, DevOps principles for CI/CD, and more. The second part focuses on the technologies, from choosing data storage in the cloud to implementing frontend microservices and working with Serverless. You’ll learn about the main communication technologies used in microservices, such as REST API, gRPC, Azure Service Bus, and RabbitMQ. The final part takes you through a real-world case study where you’ll create software architecture for a travel agency. By the end of this book, you will be able to transform user requirements into technical needs and deliver highly scalable enterprise software architectures.
- Program and maintain Azure DevOps and explore GitHub Projects
- Manage software requirements to design functional and non-functional needs
- Apply architectural approaches such as layered architecture and domain-driven design
- Make effective choices between cloud-based and data storage solutions
- Implement resilient frontend microservices, worker microservices, and distributed transactions
- Understand when to use test-driven development (TDD) and alternative approaches
- Choose the best option for cloud development, from IaaS to Serverless
This book covers the best practices and approaches for software architects and engineers when developing .NET 8 and C# 12 solutions, along with the most up-to-date cloud environments and tools for effective app development, delivery, and deployment.
- Understanding the Importance of Software Architecture
- Non-Functional Requirements
- Managing Requirements
- Best Practices in Coding C# 12
- Implementing Code Reusability in C# 12
- Design Patterns and .NET 8 Implementation
- Understanding the Different Domains in Software Solutions
- Understanding DevOps Principles and CI/CD
- Testing Your Enterprise Application
- Deciding on the Best Cloud-Based Solution
- Applying a Microservice Architecture to Your Enterprise Application
- Choosing Your Data Storage in the Cloud
- Interacting with Data in C# – Entity Framework Core
- Implementing Microservices with .NET
- Applying Service-Oriented Architectures with .NET
- Working with Serverless – Azure Functions
- Presenting ASP.NET Core
- Implementing Frontend Microservices with ASP.NET Core
- Client Frameworks: Blazor
- Kubernetes
- Case Study
- Case Study Extension: Developing .NET Microservices for Kubernetes
- Answers
- Appendix: Artificial Intelligence and Machine Learning
If you feel this book is for you, get your copy today!
With the following software and hardware list you can run all code files present in the book (Chapter number mention here).
Chapter | Software required | Link to the software | Hardware specifications | OS required |
---|---|---|---|---|
All chapters | Visual Studio Community 2022 | https://visualstudio.microsoft.com/vs/community/ | Should work on any recent computer | Windows, MacOS, Linux (any), macOS, Windows |
All chapters | .Net 8 | https://dotnet.microsoft.com/en-us/download/dotnet/8.0 | Should work on any recent computer | Windows, MacOS, Linux (any), macOS, Windows |
All chapters | Azure Account | https://azure.microsoft.com/en-in/ | Should work on any recent computer | Windows, MacOS, Linux (any), macOS, Windows |
You can get more engaged on the discord server for more latest updates and discussions in the community at Discord
If you have already purchased a print or Kindle version of this book, you can get a DRM-free PDF version at no cost. Simply click on the link to claim your free PDF. Free-Ebook
We also provide a PDF file that has color images of the screenshots/diagrams used in this book at GraphicBundle
Gabriel Baptista has been working with software development since the beginning of .NET. Today, his main contributions are managing numerous projects for retail and industry. He is an Azure Platform-as-a-Service (PaaS) solution specialist, teaches at Computing Engineering universities, and helps tech startups as a mentor.
Francesco Abbruzzese dedicates his life to his two great passions: software and powerlifting. He is the author of the MVC Controls Toolkit and the Blazor Controls Toolkit libraries. He has contributed to the diffusion and evangelization of the Microsoft web stack since the first version of ASP.NET. His company, Mvcct Team, offers web applications, tools, and services for web technologies. He has moved from AI systems, where he implemented one of the first decision support systems for financial institutions, to top-10 video game titles such as Puma Street Soccer
- C# 12 and .NET 8 – Modern Cross-Platform Development Fundamentals - Eighth Edition
- Apps and Services with .NET 8 - Second Edition
- Architecting ASP.NET Core Applications - Third Edition
-
Errata Page: 222, 223
Errata Description :
In the example code sections of class "MyTestsClass", the constructor should be "MyTestsClass" instead of "MyDatabaseTests".
-
Errata Page: 226
Errata Description :
In the example code sections of class "MyUnitTestClass", the constructor should be "UnitTest1" instead of "MyUnitTestClass".
-
Errata Page: 228
Errata Description : Typo in the method submitButton.Clikck(); should be submitButton (".Click()")