What this book covers
This preface briefly introduces each chapter. A longer description including why each topic is covered is in the first chapter.
Introduction
Chapter 1, Introducing Tools and Skills for .NET, is about setting up your development environment. You can use Visual Studio 2022, Visual Studio Code, JetBrains Rider, or any other code editor. I also review in more detail what the rest of this book covers and why. You will create some class libraries for an entity model and database that we will use in projects in later chapters. The chapter ends by covering how to use this book with .NET 9, expected to release in November 2024.
Tools
Important tools for professional .NET developers include your code editor, Git, debuggers, and memory analysis.
Chapter 2, Making the Most of the Tools in your Code Editor, is about the less commonly used tools built in to Visual Studio, Code, and Rider. You will learn how to customize your editor and how to create code snippets and refactoring features.
Chapter 3, Source Code Management Using Git, covers the most common tasks that you would perform with Git to manage your source code, especially when working in a team of .NET developers.
Chapter 4, Debugging and Memory Troubleshooting, is about using the debugging tools in your code editor and about using tools in your code editor to track the usage of memory to improve your apps and services.
Chapter 5, Logging, Tracing, and Metrics for Observability, is about how to instrument your code to enable observability during testing and production using telemetry.
Skills
Important skills for professional .NET developers include documentation, dynamic code, protecting data and code, and integrating artificial intelligence (AI) with your projects.
Chapter 6, Documenting Code, APIs, and Services, discusses how to best document your code to help other developers maintain it in future using comments, and how to document your services and APIs to enable other developers to call them as designed.
Chapter 7, Observing and Modifying Code Execution Dynamically, introduces you to some common types that are included with .NET for performing code reflection and applying and reading attributes; working with expression trees; and creating source generators.
Chapter 8, Protecting Data and Apps Using Cryptography, is about protecting your data from being viewed by malicious users using encryption, and from being manipulated or corrupted using hashing and signing. You will also learn about authentication and authorization to protect applications from unauthorized users.
Chapter 9, Building a Custom LLM-based Chat Service, covers how to build a custom chat service that integrates a Large Language Model-based (LLM) artificial intelligence.
Testing
Important testing tools and skills for professional .NET developers include service dependencies and all types of testing, from unit to web user interface testing.
Chapter 10, Dependency Injection, Containers, and Service Lifetime, is about reducing tight coupling between components which is especially critical to performing practical testing. This also enables you to better manage changes and software complexity.
Chapter 11, Unit Testing and Mocking, introduces testing practices that will improve your code quality. Unit testing is easy to get wrong and be useless, undermining the team’s trust. Get it right, and you will save time and money, and smooth the development process.
Chapter 12, Integration and Security Testing, introduces two higher levels of testing, integration and security, that apply across all components of a solution.
Chapter 13, Benchmarking Performance, Load, and Stress Testing, introduces how to properly use the BenchmarkDotNet library to monitor your code to measure performance and efficiency. Then you will see how to perform load and stress testing on your projects to predict required resources and estimate the costs of deployment in production.
Chapter 14, Functional and End-to-End Testing of Websites and Services, introduces you to functional and end-to-end testing of service APIs and web user interfaces.
Chapter 15, Containerization Using Docker, introduces you to the concept of containerization and specifically using Docker to virtualize hosts for services in complex solution architectures.
Chapter 16, Cloud-Native Development Using .NET Aspire, introduces you to .NET Aspire, an opinionated way to manage a simulated cloud-native development environment on your local computer.
Design and Career
Important design skills for professional .NET developers include common coding design patterns, algorithm implementations, and architectural patterns. Finally, you need to get the career you aspire to. To achieve this, you must impress with your job application documents and at an interview.
Chapter 17, Design Patterns and Principles, introduces you to the SOLID design patterns as well as other common design patterns like Singleton and Factory used by .NET.
Chapter 18, Software and Solution Architecture Foundations, covers software and solution architecture.
Chapter 19, Your Career, Teamwork, and Interviews, covers working in a team as a career professional, applying for jobs, and passing interviews for .NET software engineer and related job positions. This chapter includes 60 commonly asked questions in interviews. The first three questions have suggested answers in the print book. The full set of 60 questions and suggested answers are available online PDF that you can download from the following link: https://github.com/markjprice/tools-skills-net8/blob/main/docs/interview-qa/readme.md.
Epilogue, describes your options for further study to master the tools and skills you need to become a well-rounded professional .NET developer.
Appendix, Answers to the Test Your Knowledge Questions, has the answers to the test questions at the end of each chapter.
You can read the appendix at the following link: https://packt.link/isUsj.