14. To go further
In 2008, the course concluded with a list of important topics it did not cover: LINQ, XML document processing, web programming with ASP.NET, and .NET Remoting. The landscape has changed:
- LINQ is now covered in Chapter 5, and its translation to SQL using Entity Framework Core is covered in Chapter 11;
- web programming is covered in Chapter 13 using ASP.NET Core;
- .NET Remoting, .NET’s proprietary client/server protocol, no longer exists in .NET (since .NET Core); it has been replaced by REST web services (Chapter 13), by gRPC (efficient remote procedure calls on HTTP/2, with contracts described in Protocol Buffers), and by SignalR (real-time bidirectional communication between a server and browsers).
Here are the main topics that build upon this document.
14.1. Processing XML documents
JSON has largely replaced XML for data exchange, but XML remains in use (configuration files, document formats, existing SOAP services). .NET provides two families of APIs:
- LINQ to XML ([System.Xml.Linq]: [XDocument] classes, [XElement], [XAttribute]): the simplest, which allows you to build and query an XML document using LINQ;
- the classes of [System.Xml] ([XmlReader], [XmlWriter], [XmlDocument]) and XML serialization ([XmlSerializer]).
14.2. Web Applications
Chapter 13 covers only web services (applications that generate data). For web applications that generate HTML pages, ASP.NET Core offers:
- ASP.NET Core MVC and Razor Pages: server-side-generated pages; the author wrote the course “Step-by-Step Introduction to the ASP.NET Core MVC Framework” (September 2026);
- Blazor: interactive web interfaces written in C# rather than JavaScript, running on the server or in the browser (WebAssembly).
14.3. Desktop and Mobile Applications
The chapter on Windows Forms graphical user interfaces has been removed from this document. Windows Forms is still available in .NET 10 (for Windows), as well as WPF; .NET MAUI allows you to write a single application for Windows, macOS, Android, and iOS. The concepts covered in Chapters 7 (events) and 9 (asynchronous programming) apply directly here.
14.4. Testing
Chapter 6 introduces MSTest. Two other testing frameworks are widely used: xUnit and NUnit (version 2.4 of which was used in the 2008 course and has evolved significantly since then). Unit tests are often supplemented with “mock” libraries (simulated objects) and integration tests for ASP.NET Core applications ([WebApplicationFactory]).
14.5. Performance
.NET has made performance a major priority since .NET Core. Among the corresponding tools are:
- the [Span<T>] and [Memory<T>] types, which manipulate portions of arrays or strings without copying (Chapter 5);
- ahead-of-time compilation to native code (Native AOT, [dotnet publish -p:PublishAot=true]): a standalone executable that starts up very quickly, at the cost of restrictions on reflection (we encountered these with JSON serialization in Chapter 5);
- source generators, which produce code during compilation (regular expressions generated in Chapter 5, JSON context generated in Chapter 6);
- the BenchmarkDotNet tool for precisely measuring code performance.
14.6. Deployment
A .NET program can be deployed in several ways: with the .NET platform installed on the computer ([dotnet publish]), as a standalone executable that includes the platform ([--self-contained]), or in a container ([dotnet publish -t:PublishContainer] directly generates a container image, without a [Dockerfile] file).
14.7. Resources
- the official documentation, https://learn.microsoft.com/en-us/dotnet/;
- the C# language guide and its “What’s New” pages: https://learn.microsoft.com/en-us/dotnet/csharp/;
- the source code for .NET, on GitHub: https://github.com/dotnet;
- the reference book C# in a Nutshell by Joseph Albahari (O’Reilly), which the 2008 course had already recommended in its C# 3.0 edition.