A comprehensive guide to understanding network architecture, communication protocols, and network analysis to build secure applications compatible with the latest versions of C# 8 and .NET Core 3.0
Key FeaturesExplore various network architectures that make distributed programming possibleLearn how to make reliable software by writing secure interactions between clients and serversUse .NET Core for network device automation, DevOps, and software-defined networkingBook DescriptionThe C# language and the .NET Core application framework provide the tools and patterns required to make the discipline of network programming as intuitive and enjoyable as any other aspect of C# programming. With the help of this book, you will discover how the C# language and the .NET Core framework make this possible.
The book begins by introducing the core concepts of network programming, and what distinguishes this field of programming from other disciplines. After this, you will gain insights into concepts such as transport protocols, sockets and ports, and remote data streams, which will provide you with a holistic understanding of how network software fits into larger distributed systems. The book will also explore the intricacies of how network software is implemented in a more explicit context, by covering sockets, connection strategies such as Transmission Control Protocol (TCP) and User Datagram Protocol (UDP), asynchronous processing, and threads. You will then be able to work through code examples for TCP servers, web APIs served over HTTP, and a Secure Shell (SSH) client.
By the end of this book, you will have a good understanding of the Open Systems Interconnection (OSI) network stack, the various communication protocols for that stack, and the skills that are essential to implement those protocols using the C# programming language and the .NET Core framework.
What you will learnUnderstand the breadth of C#'s network programming utility classesUtilize network-layer architecture and organizational strategiesImplement various communication and transport protocols within C#Discover hands-on examples of distributed application developmentGain hands-on experience with asynchronous socket programming and streamsLearn how C# and the .NET Core runtime interact with a hosting networkUnderstand a full suite of network programming tools and featuresWho this book is forIf you're a .NET developer or a system administrator with .NET experience and are looking to get started with network programming, then this book is for you. Basic knowledge of C# and .NET is assumed, in addition to a basic understanding of common web protocols and some high-level distributed system designs.
Table of ContentsNetworks in a NutshellDNS and Resource LocationCommunication ProtocolsPackets and StreamsGenerating Network Requests in C#Streams, Threads, and Asynchronous Data TransferError Handling Over the WireSockets and PortsHTTP in .NET FTP and SMTPThe Transport TCP, UDP, and Multi-CastingThe Internet ProtocolTransport Layer Security (TLS)Authentication and Authorization for Networked RequestsCaching Strategies for Distributed SystemsPerformance Analysis and Mo
I really enjoyed not only the content of this book, but the format as well. The short chapters make it not only easy to read, but easy to document and search as well. The beginning is a little dry if you have any experience with networks, but it is necessary for a firm foundation for later chapters. I don't feel like anything was missing in here from a technical standpoint, and I enjoyed the voice of the author. It doesn't feel like a textbook, which is usually the problem with books of this type. The only thing keeping this book from 5 stars is - it is stated in the chapter on tcp connections that you should use one connection per action and let it dispose, which I agree is the correct way to handle it. The problem is, in my experience interfacing with hardware from other companies, is it's fairly common that an outside server doesn't do this. In several cases I've had to leave a long running connection open. While I agree this is not the best way to do tcp connections, the reality is that a lot of older servers want this and we have to interface with them that way. I would have liked to see a section on the best way to handle this, but understand the omission.