Dive into systems programming with C# 12 and .NET Core 8, master low-level secrets, optimize performance, and secure deployments for high-performance application development
Key FeaturesEngage in hands-on exercises to effectively apply systems programming conceptsGain insights into Linux and embedded systems and broaden your development capabilitiesLearn to deploy and maintain applications securely in diverse production environmentsPurchase of the print or Kindle book includes a free PDF eBookBook DescriptionIf you want to explore the vast potential of C# and .Net Core to build high-performance applications, then this book is for you. Written by a 17-time awardee of the Microsoft MVP award, Systems Programming with C# and .Net provides a comprehensive exploration of low-level programming with C# and .NET Core. This book starts by introducing fundamental concepts like low-level APIs, memory management, and performance optimization. Each chapter imparts practical skills, guiding you through threads, file I/O, and network protocols. With a focus on real-world applications, you’ll learn to secure systems, implement effective logging, and deploy applications seamlessly. Special attention is given to debugging, profiling, and addressing challenges unique to multithreaded and asynchronous code.
You’ll also gain insights into cybersecurity essentials to help you safeguard data and establish secure communication. There is also a dedicated chapter on systems programming in Linux to broaden your horizon and give you insights into cross-platform development. For those venturing into embedded systems, the final chapter offers hands-on guidance. By the end, you’ll be all set to deploy, distribute, and maintain applications in production systems.
What you will learnMaster low-level APIs for enhanced control and performanceOptimize applications with memory management strategiesDevelop secure, efficient networking applications using C# and .NET CoreImplement effective logging, monitoring, and metrics for system healthNavigate Linux environments for cross-platform proficiencyInteract with hardware devices, GPIO pins, and embedded systemsDeploy and distribute applications securely with CI/CD pipelinesDebug and profile efficiently, addressing multithreaded challengesWho this book is forThis book is for experienced C# developers and programmers looking to deepen their expertise in systems programming with .NET Core. It's also ideal for professionals aspiring to architect high-performance applications, system engineers, and those involved in deploying and maintaining applications in production environments. A solid foundation in C# and .NET Core is essential, making it suitable for intermediate to advanced developers.
Table of ContentsThe One Where We Set the StageThe One with the Low-Level SecretsThe One Where Speed MattersThe One with the Memory GamesThe One with the Thread TanglesThe One with the Filesystem ChroniclesThe One Where Processes WhisperThe One with the Operating System TangoThe One with the Network NavigationsThe One with the Hardware HandshakesThe One with the System Check-UpsThe One with the Debugging DancesThe One with the Security Safeguards<
Good book. It deals with topics that are not that much explored in the .NET ecosystem: system's programming and low level stuff. And it's helpful for both C# and F# programmers.
At first, I thought this was a Windows-only book, but after giving it another try, I found out that even though the majority of examples are Windows focused, those lessons can be extrapolated to Linux too.
The book contents are:
1. Understanding low-level APIs: Introduction about .NET internals, low-level concepts and interoperability with native libs (most in C and C++). 2. Writing for performance: Performance tips related to types used, whether they are reference (heap) or value types (stack), boxing and unboxing (boxing happens when the system converts a value type into a reference type, the other way around is called unboxing), common data structures for performance, dealing with strings, unsafe code, compiler tips. 3. Efficient memory management: How the GC works, using IDisposable correctly, tips and tricks on how to save memory, unsafe code and pointers. 4. Concurrency and threading: What is concurrency and threading, how threads work internally in .NET and Windows, what is async/await, internal collection functions to deal with multiple threads. 5. File Systems and I/O: Work with files using .NET, Win32 APIs to work with the fs, why and how we should use async IO, how to use encryption and compression. 6. Interprocess communication (IPC): What is IPC, windows messages, pipes (name and anonymous), sockets, shared memory, RPC, gRPC. 7. Working with operating system services: The Windows Registry, worker services, windows management instrumentation (WMI), registry and WMI. 8. Building high-performance networking applications: computer networking fundamentals, OSI layers, exploring the System.Net namespace, async networking, network performance improvement tips, handling errors and time-outs. 9. Hardware interaction and control: Playing with serial ports on Windows, intro to Arduino, handling events from the outside. 10. Logging, monitoring, and metrics: Popular logging frameworks (Microsoft default logger, NLog, Serilog, etc), tips on setting the level of logging, tools to monitor the logs (Seq, Prometheus, etc) and the system. 11. Debugging and profiling system applications: What is debugging and profiling, how to debug using Visual Studio, how to deal with multi-threaded and async systems, how do we profile and benchmark code. 12. Security essentials for systems programming: How to work with strings securely, how to handle keys in your systems, how do you transfer data safely across a network. 13. Deployment and distribution: How do you use the Publish wizard from Visual Studio, what is CI/CD and how to use it in Azure DevOps or GitHub, how to build an installer, how to deploy with Docker. 14. Systems programming in C# on Linux: Linux intro and basic usage, how to develop for Linux, how to deploy on Linux, example writing a background service for Linux.
This entire review has been hidden because of spoilers.