Software Architecture with C# 12 and .NET

by Gabriel Baptista, Francesco Abbruzzese

Software Development

Book Details

Book Title

Software Architecture with C# 12 and .NET

Author

Gabriel Baptista, Francesco Abbruzzese

Publisher

Packt Publishing

Publication Date

2024

ISBN

9781805127659

Number of Pages

1200

Language

English

Format

PDF

File Size

9.9MB

Subject

architecture-and-design:csharp-dotnet

Table of Contents

  • Preface
  • Understanding the Importance of Software Architecture
  • What is software architecture?
  • Creating an Azure account
  • Software development process models
  • Gathering the right information to design high-quality software
  • Using design techniques as a helpful tool
  • Common cases where the requirements gathering process impacts system results
  • Summary
  • Questions
  • Further reading
  • Non-Functional Requirements
  • Technical requirements
  • Enabling scalability, availability, and resiliency with Azure and .NET 8
  • Performance issues that need to be considered when programming in C#
  • Software usability: how to design effective user interfaces
  • Interoperability with .NET 8
  • Achieving security by design
  • Summary
  • Questions
  • Further reading
  • Managing Requirements
  • Technical requirements
  • Introducing Azure DevOps
  • Introducing GitHub projects
  • Summary
  • Questions
  • Best Practices in Coding C# 12
  • Technical requirements
  • The simpler your code, the better a programmer you are
  • Using a version control system
  • Writing safe code in C#
  • .NET 8 tips and tricks for coding
  • Identifying well-written code
  • Summary
  • Questions
  • Further reading
  • Implementing Code Reusability in C# 12
  • Technical requirements
  • Understanding the principles of code reusability
  • Using .NET 8 for code reuse
  • Summary
  • Questions
  • Further reading
  • Design Patterns and .NET 8 Implementation
  • Technical requirements
  • Understanding design patterns and their purpose
  • Understanding the design patterns available in .NET
  • Summary
  • Questions
  • Further reading
  • Understanding the Different Domains in Software Solutions
  • Technical requirements
  • What are software domains?
  • Understanding DDD
  • Common DDD patterns and architectures
  • Summary
  • Questions
  • Further reading
  • Understanding DevOps Principles and CI/CD
  • Technical requirements
  • Describing DevOps
  • Understanding DevOps principles
  • Tools to facilitate DevOps implementation
  • Summary
  • Questions
  • Testing Your Enterprise Application
  • Technical requirements
  • Understanding unit and integration tests
  • Understanding the basics of test-driven development
  • Functional tests
  • Behavior-Driven Development (BDD)
  • Defining C# test projects in Visual Studio
  • Automating functional tests in C#
  • Summary
  • Questions
  • Further reading
  • Deciding on the Best Cloud-Based Solution
  • Technical requirements
  • Different software deployment models
  • Why are hybrid applications so useful in many cases?
  • Summary
  • Questions
  • Further reading
  • Applying a Microservice Architecture to Your Enterprise Application
  • Technical requirements
  • What are microservices?
  • When do microservices help?
  • How does .NET deal with microservices?
  • Which tools are needed to manage microservices?
  • Summary
  • Questions
  • Further reading
  • Choosing Your Data Storage in the Cloud
  • Technical requirements
  • Understanding the different repositories for different purposes
  • Choosing between SQL and NoSQL document-oriented databases
  • Azure Cosmos DB – an opportunity to manage a multi-continental database
  • Summary
  • Questions
  • Further reading
  • Interacting with Data in C# – Entity Framework Core
  • Technical requirements
  • Understanding ORM basics
  • Configuring Entity Framework Core
  • Entity Framework Core migrations
  • Compiled models
  • Querying and updating data with Entity Framework Core
  • Deploying your data layer
  • How data and domain layers communicate with other layers
  • Understanding Entity Framework Core advanced features
  • Summary
  • Questions
  • Further reading
  • Implementing Microservices with .NET
  • Technical requirements
  • Communication and data serialization
  • Implementing worker microservices with ASP.NET Core
  • Implementing microservices with .NET worker services and message brokers
  • Summary
  • Questions
  • Further reading
  • Applying Service-Oriented Architectures with .NET
  • Technical requirements
  • Understanding the principles of the SOA approach
  • SOAP web services
  • REST web services
  • How does .NET 8 deal with SOA?
  • Summary
  • Questions
  • Further reading
  • Working with Serverless – Azure Functions
  • Technical requirements
  • Understanding the Azure Functions app
  • Programming Azure Functions using C#
  • Maintaining Azure Functions
  • Azure Durable Functions
  • Azure Functions roadmap
  • The decision to use serverless and Azure Functions
  • Summary
  • Questions
  • Further reading
  • Presenting ASP.NET Core
  • Technical requirements
  • Understanding the presentation layers of web applications
  • Understanding the basics of ASP.NET Core
  • Understanding how ASP.NET Core MVC creates the response HTML
  • Understanding the connection between ASP.NET Core MVC and design principles
  • Summary
  • Questions
  • Further reading
  • Implementing Frontend Microservices with ASP.NET Core
  • Technical requirements
  • Front-ends and micro-frontends
  • Defining the application architecture
  • Defining the domain layer interface
  • Defining the domain layer implementation
  • Defining the application layer
  • Defining controllers
  • Summary
  • Questions
  • Further reading
  • Client Frameworks: Blazor
  • Technical requirements
  • Comparison of the various types of client technologies
  • Blazor WebAssembly architecture
  • Blazor pages and components
  • Blazor forms and validation
  • Blazor advanced features
  • Third-party tools for Blazor WebAssembly
  • .NET MAUI Blazor
  • Summary
  • Questions
  • Further reading
  • Kubernetes
  • Technical requirements
  • Kubernetes basics
  • Interacting with Kubernetes clusters
  • Advanced Kubernetes concepts
  • Summary
  • Questions
  • Further reading
  • Case Study
  • Introducing World Wild Travel Club
  • User needs and system requirements
  • Main types of .NET projects used at WWTravelClub
  • Managing WWTravelClub’s requirements using Azure DevOps
  • Code standard for WWTravelClub – Dos and don’ts when writing code
  • Applying SonarCloud to WWTravelClub APIs
  • Reusing code as a fast way to deliver good and safe software
  • Understanding the domains of the WWTravelClub application
  • The WWTravelClub DevOps approach
  • How to choose your data storage in the cloud
  • A worker microservice with ASP.NET Core
  • A worker microservice based on RabbitMQ
  • Exposing WWTravelClub packages using Web APIs
  • Implementing Azure Functions to send emails
  • A frontend microservice
  • Using client technologies
  • Testing the WWTravelClub application
  • Summary
  • Case Study Extension: Developing .NET Microservices for Kubernetes
  • Answers
  • Other Books You May Enjoy
  • Index