cs11dotnet7/book-links.md

801 lines
58 KiB
Markdown
Raw Normal View History

2022-02-09 11:30:33 +01:00
- [Chapter 1 - Hello, C#! Welcome, .NET!](#chapter-1---hello-c-welcome-net)
- [Visual Studio 2022 for Windows](#visual-studio-2022-for-windows)
- [Visual Studio Code](#visual-studio-code)
- [Other C# code editors and platforms](#other-c-code-editors-and-platforms)
- [.NET Interactive](#net-interactive)
- [Command Line Interfaces](#command-line-interfaces)
- [.NET](#net)
- [Open source and other projects related to .NET](#open-source-and-other-projects-related-to-net)
- [Git](#git)
- [Help and learning](#help-and-learning)
- [Chapter 2 - Speaking C](#chapter-2---speaking-c)
- [C# language version and the journey to C# 10](#c-language-version-and-the-journey-to-c-10)
- [C# language](#c-language)
- [C# implemented proposals](#c-implemented-proposals)
- [C# proposals being worked on](#c-proposals-being-worked-on)
- [Text types](#text-types)
- [Number types](#number-types)
- [Console apps and formatting](#console-apps-and-formatting)
- [Miscellaneous](#miscellaneous)
- [Chapter 3 - Controlling Flow and Converting Types](#chapter-3---controlling-flow-and-converting-types)
- [Operators](#operators)
- [Branching statements and pattern matching](#branching-statements-and-pattern-matching)
- [Casting, converting, rounding, and formatting data](#casting-converting-rounding-and-formatting-data)
- [Handling exceptions](#handling-exceptions)
- [Coding problems in interviews](#coding-problems-in-interviews)
- [Chapter 4 - Writing, Debugging, and Testing Functions](#chapter-4---writing-debugging-and-testing-functions)
- [Concepts](#concepts)
- [Debugging](#debugging)
- [Instrumenting](#instrumenting)
- [Testing](#testing)
- [Chapter 5 - Building Your Own Types with Object-Oriented Programming](#chapter-5---building-your-own-types-with-object-oriented-programming)
- [Fields](#fields)
- [Methods](#methods)
- [Properties](#properties)
- [Pattern matching](#pattern-matching)
- [Records](#records)
- [Miscellaneous](#miscellaneous-1)
- [Chapter 6 - Implementing Interfaces and Inheriting Classes](#chapter-6---implementing-interfaces-and-inheriting-classes)
- [Operator overloading](#operator-overloading)
- [Delegates and events](#delegates-and-events)
- [Interfaces and generics](#interfaces-and-generics)
- [Memory, reference and value types](#memory-reference-and-value-types)
- [Null and nullability](#null-and-nullability)
- [Inheritance](#inheritance)
- [Chapter 7 - Packaging and Distributing .NET Types](#chapter-7---packaging-and-distributing-net-types)
- [.NET Standard](#net-standard)
- [.NET versions](#net-versions)
- [.NET API, packages and frameworks](#net-api-packages-and-frameworks)
- [Roslyn, SDKs, and project templates](#roslyn-sdks-and-project-templates)
- [Packaging and publishing](#packaging-and-publishing)
- [Decompiling .NET](#decompiling-net)
- [Porting from .NET Framework to modern .NET](#porting-from-net-framework-to-modern-net)
- [Preview features](#preview-features)
- [Chapter 8 - Working with Common .NET Types](#chapter-8---working-with-common-net-types)
- [Working with numbers](#working-with-numbers)
- [Working with text and regular expressions](#working-with-text-and-regular-expressions)
- [Dates and times](#dates-and-times)
- [Collections](#collections)
- [Spans](#spans)
- [Networking](#networking)
- [Assemblies and reflection](#assemblies-and-reflection)
- [Working with images](#working-with-images)
- [Internationalization](#internationalization)
- [Chapter 9 - Working with Files, Streams, and Serialization](#chapter-9---working-with-files-streams-and-serialization)
- [File system, encoding, and streams](#file-system-encoding-and-streams)
- [Serialization](#serialization)
- [JSON](#json)
- [Chapter 10 - Working with Data Using Entity Framework Core](#chapter-10---working-with-data-using-entity-framework-core)
- [Legacy EF 6](#legacy-ef-6)
- [EF Core](#ef-core)
- [EF Core database providers](#ef-core-database-providers)
- [SQLite](#sqlite)
- [Microsoft SQL Server](#microsoft-sql-server)
- [NoSQL data stores](#nosql-data-stores)
- [EF Core models](#ef-core-models)
- [EF Core querying and manipulating](#ef-core-querying-and-manipulating)
- [Chapter 11 - Querying and Manipulating Data Using LINQ](#chapter-11---querying-and-manipulating-data-using-linq)
- [LINQ concepts](#linq-concepts)
- [LINQ providers](#linq-providers)
- [LINQ samples and tools](#linq-samples-and-tools)
2022-03-06 11:41:30 +01:00
- [Chapter 12 - Introducing Web Development Using ASP.NET Core](#chapter-12---introducing-web-development-using-aspnet-core)
2022-02-09 11:30:33 +01:00
- [.NET apps](#net-apps)
- [.NET Content Management Systems](#net-content-management-systems)
- [ASP.NET versions and features](#aspnet-versions-and-features)
- [Web development technologies](#web-development-technologies)
2022-03-06 11:41:30 +01:00
- [Chapter 13 - Building Websites Using ASP.NET Core Razor Pages](#chapter-13---building-websites-using-aspnet-core-razor-pages)
2022-02-09 11:30:33 +01:00
- [General web development](#general-web-development)
- [ASP.NET Core](#aspnet-core)
- [Razor Pages and layouts](#razor-pages-and-layouts)
- [Endpoint routing](#endpoint-routing)
2022-03-06 11:41:30 +01:00
- [Chapter 14 - Building Websites Using the Model-View-Controller Pattern](#chapter-14---building-websites-using-the-model-view-controller-pattern)
2022-02-09 11:30:33 +01:00
- [Security and privacy](#security-and-privacy)
- [Setting up and configuring](#setting-up-and-configuring)
- [Controllers](#controllers)
- [Models](#models)
- [Views](#views)
- [Miscellaneous](#miscellaneous-2)
2022-03-06 11:41:30 +01:00
- [Chapter 15 - Building and Consuming Web Services](#chapter-15---building-and-consuming-web-services)
2022-02-09 11:30:33 +01:00
- [Web service technologies](#web-service-technologies)
- [Web service routing](#web-service-routing)
- [Web service clients](#web-service-clients)
- [Documenting web services](#documenting-web-services)
- [Securing web services](#securing-web-services)
- [Health checks and reliable web services](#health-checks-and-reliable-web-services)
2022-03-06 11:41:30 +01:00
- [Chapter 16 - Building User Interfaces Using Blazor](#chapter-16---building-user-interfaces-using-blazor)
2022-02-09 11:30:33 +01:00
- [Blazor hosting models](#blazor-hosting-models)
- [Blazor components](#blazor-components)
- [Advanced techniques](#advanced-techniques)
- [Other resources](#other-resources)
- [Epilogue](#epilogue)
- [Next steps on your C# and .NET learning journey](#next-steps-on-your-c-and-net-learning-journey)
- [Learn from other Packt books](#learn-from-other-packt-books)
# Chapter 1 - Hello, C#! Welcome, .NET!
## Visual Studio 2022 for Windows
- Download Visual Studio for Windows: https://visualstudio.microsoft.com/downloads/
- Sign up for a Microsoft account: https://signup.live.com/
- Visual Studio for Windows documentation: https://docs.microsoft.com/en-us/visualstudio/windows/
- MSBuild and 64-bit Visual Studio 2022: https://devblogs.microsoft.com/dotnet/msbuild-and-64-bit-visual-studio-2022/
- Create C# apps with Visual Studio: https://docs.microsoft.com/en-us/visualstudio/get-started/csharp/
- Tutorial: Open a project from a repo: https://docs.microsoft.com/en-us/visualstudio/get-started/tutorial-open-project-from-repo-visual-studio-2019
- Comparison of Visual Studio Code and Visual Studio: https://www.itworld.com/article/3403683/visual-studio-code-stepping-on-visual-studios-toes.html
## Visual Studio Code
- Download Visual Studio Code: https://code.visualstudio.com/
- Set up Visual Studio Code: https://code.visualstudio.com/docs/setup/setup-overview
- Visual Studio Code key bindings and shortcuts: https://code.visualstudio.com/docs/getstarted/keybindings
- Windows: https://code.visualstudio.com/shortcuts/keyboard-shortcuts-windows.pdf
- macOS: https://code.visualstudio.com/shortcuts/keyboard-shortcuts-macos.pdf
- Linux: https://code.visualstudio.com/shortcuts/keyboard-shortcuts-linux.pdf
- Latest versions of Visual Studio Code: https://code.visualstudio.com/updates
- Visual Studio Code documentation: https://code.visualstudio.com/docs
- Visual Studio Code user interface: https://code.visualstudio.com/docs/getstarted/userinterface
- Visual Studio Code support for C#: https://code.visualstudio.com/docs/languages/csharp
- Source code version control with Visual Studio Code: https://code.visualstudio.com/Docs/editor/versioncontrol
- Microsoft's plans for Visual Studio Code: https://github.com/Microsoft/vscode/wiki/Roadmap
- Learning with VS Code on Chromebooks: https://code.visualstudio.com/blogs/2020/12/03/chromebook-get-started
- Google and Amazon are supporters of Visual Studio Code: https://www.cnbc.com/2018/12/20/microsoft-cmo-capossela-says-google-employees-use-visual-studio-code.html
2022-02-09 14:13:36 +01:00
- Visual Studio Code: How Microsoft's 'any OS, any programming language, any software' plan is paying off: https://www.zdnet.com/article/visual-studio-code-how-microsofts-any-os-any-programming-language-any-software-plan-is-paying-off/
2022-02-09 11:30:33 +01:00
- The History of Visual Studio Code: https://mybuild.microsoft.com/sessions/6b571733-8198-48da-b870-ef804dcfea93?source=sessions
## Other C# code editors and platforms
- Stack Overflow survey 2021 - Integrated development environment: https://insights.stackoverflow.com/survey/2021#section-most-popular-technologies-integrated-development-environment
- Stack Overflow survey 2019 - Most Popular Development Environments: https://insights.stackoverflow.com/survey/2019#development-environments-and-tools
- Visual Studio for Mac documentation: https://docs.microsoft.com/en-us/visualstudio/mac/
- GitHub Codespaces: https://docs.github.com/en/github/developing-online-with-codespaces/about-codespaces
- JetBrains Rider: https://www.jetbrains.com/rider/
- Rider documentation: https://www.jetbrains.com/help/rider/Introduction.html
- How to code with C# and .NET using a Raspberry Pi 400 with Ubuntu Desktop 64-bit by reading an extra article that I wrote at the following link: https://github.com/markjprice/cs9dotnet5-extras/blob/main/raspberry-pi-ubuntu64/README.md
## .NET Interactive
- .NET Interactive documentation: https://github.com/dotnet/interactive/tree/main/docs
- VS Code Notebooks: A Deep Dive video: https://www.youtube.com/watch?v=D-AXZZDTQhM
- Discuss: File format in the .NET Interactive VS Code extension: https://github.com/dotnet/interactive/issues/467
- Polyglot Notebooks: Variable Sharing: https://devblogs.microsoft.com/dotnet/net-interactive-preview-3-vs-code-insiders-and-polyglot-notebooks/
- Using HTML and JavaScript in .NET Interactive: https://github.com/dotnet/interactive/blob/main/docs/javascript-overview.md
- .NET Interactive Samples: https://github.com/dotnet/interactive/tree/main/samples
- Markdown syntax: https://daringfireball.net/projects/markdown/syntax
## Command Line Interfaces
- Windows Terminal as your Default Command Line Experience: https://devblogs.microsoft.com/commandline/windows-terminal-as-your-default-command-line-experience/
- .NET Core Command-Line Interface (CLI) tool: https://aka.ms/dotnet-cli-docs
## .NET
- Download .NET SDK: https://www.microsoft.com/net/download
- Stack Overflow survey 2021 - Most loved frameworks and libraries: https://insights.stackoverflow.com/survey/2021#section-most-loved-dreaded-and-wanted-other-frameworks-and-libraries
- Themes of .NET: https://themesof.net/
- Microsoft's positioning of .NET Core and .NET Framework: https://devblogs.microsoft.com/dotnet/update-on-net-core-3-0-and-net-framework-4-8/
- Microsoft's plans for the journey to one .NET: https://devblogs.microsoft.com/dotnet/announcing-net-5-preview-4-and-our-journey-to-one-net/
2022-02-09 14:17:05 +01:00
- Official list of .NET 6 supported operating systems: https://github.com/dotnet/core/blob/main/release-notes/6.0/supported-os.md
2022-02-09 11:30:33 +01:00
- Windows ARM64 support: https://github.com/dotnet/runtime/issues/36699
- .NET Support Policy: https://dotnet.microsoft.com/platform/support/policy/dotnet-core
- .NET versions: https://docs.microsoft.com/en-us/dotnet/core/versions/
- .NET Uninstall Tool: https://docs.microsoft.com/en-us/dotnet/core/additional-tools/uninstall-tool
- Remove .NET SDKs and runtimes: https://docs.microsoft.com/en-us/dotnet/core/install/remove-runtime-sdk-versions
- ASP.NET Core and EF Core branding for .NET 5: https://docs.microsoft.com/en-us/dotnet/core/dotnet-five
- .NET Optional SDK Workloads: https://github.com/dotnet/designs/blob/main/accepted/2020/workloads/workloads.md
- .NET Core runtime, CoreCLR: https://github.com/dotnet/runtime
- .NET Core Roadmap: https://github.com/dotnet/core/blob/master/roadmap.md
- .NET Standard FAQ: https://github.com/dotnet/standard/blob/master/docs/faq.md
- .NET Standard versions and which .NET platforms support them: https://github.com/dotnet/standard/blob/master/docs/versions.md
- .NET Team Members: https://twitter.com/i/lists/120961876//members
## Open source and other projects related to .NET
- Mono project: http://www.mono-project.com/
- Unity project: https://docs.unity3d.com/
- Open source projects to enable WCF and WF to migrate to .NET 5: https://devblogs.microsoft.com/dotnet/supporting-the-community-with-wf-and-wcf-oss-projects/
- Open source project for Blazor Web Forms components: https://github.com/FritzAndFriends/BlazorWebFormsComponents
## Git
- Download Git: https://git-scm.com/download
- Download GitHub Desktop: https://desktop.github.com
- Become a master at Git and Open Source: https://devblogs.microsoft.com/visualstudio/become-a-master-at-git-and-open-source/
## Help and learning
- Raise an issue with the book: https://github.com/markjprice/cs10dotnet6/issues
- .NET Conf 2021 Recap Videos, Slides, Demos, and More: https://devblogs.microsoft.com/dotnet/net-conf-2021-recap-videos-slides-demos-and-more/
- Microsoft Docs: https://docs.microsoft.com/
- Official .NET Blog written by the .NET engineering teams: https://devblogs.microsoft.com/dotnet/
- Scott Hanselman's videos: http://computerstufftheydidntteachyou.com/
- Get better at programming by learning how things work: https://jvns.ca/blog/learn-how-things-work/
- Practice .NET anywhere with .NET Fiddle: https://dotnetfiddle.net/
- Try .NET: https://try.dot.net/
- Stack Overflow: https://stackoverflow.com/
- Google Advanced Search: https://www.google.com/advanced_search
- Microsoft Learn: https://docs.microsoft.com/en-us/learn/
- .NET Videos: https://dotnet.microsoft.com/learn/videos
- Microsoft Channel 9 .NET Videos: https://channel9.msdn.com/Search?term=.net&lang-en=true
# Chapter 2 - Speaking C#
## C# language version and the journey to C# 10
- Welcome to C# 10: https://devblogs.microsoft.com/dotnet/welcome-to-csharp-10/
- Announcing Open Source C# standardization: https://devblogs.microsoft.com/dotnet/announcing-open-source-c-standardization-standards/
- Rosalyn and C# compiler versions: https://github.com/dotnet/roslyn/blob/master/docs/wiki/NuGet-packages.md
- How Microsoft rewrote its C# compiler in C# and made it open source: https://medium.com/microsoft-open-source-stories/how-microsoft-rewrote-its-c-compiler-in-c-and-made-it-open-source-4ebed5646f98
- Current status of the C# language: https://github.com/dotnet/roslyn/blob/master/docs/Language%20Feature%20Status.md
- C# Language Specification 5.0: https://www.microsoft.com/en-us/download/details.aspx?id=7029
- Draft proposals for C# Language Specifications for 6.0 and later: https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/
- What's new in C# 7.3: https://docs.microsoft.com/en-us/dotnet/csharp/whats-new/csharp-7-3
- New C# 9.0 features: https://docs.microsoft.com/en-us/dotnet/csharp/whats-new/csharp-9
- C# 9 Workshop: https://github.com/dotnet-presentations/csharp-workshop
- C# language versioning: https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/configure-language-version
- The history of C#: https://docs.microsoft.com/en-us/dotnet/csharp/whats-new/csharp-version-history
- Interview with the C# Boss - Mads Torgersen: https://www.dotnetcurry.com/csharp/1455/mads-torgersen-interview
- The .NET Docs Show - C# Ask Me Anything 🤯: https://www.youtube.com/watch?v=U6cwOzUqjxY
- [EPIC] .NET 6 C# project templates use latest language idioms #3359: https://github.com/dotnet/templating/issues/3359
- SDK support for implicit namespaces in C# projects #25066: https://github.com/dotnet/docs/issues/25066
## C# language
- C# Reference: https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/
- C# Programming Guide: https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/
- C# Keywords: https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/index
- Naming guidelines: https://docs.microsoft.com/en-us/dotnet/standard/design-guidelines/naming-guidelines
- Types (C# Programming Guide): https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/types/
- Statements, Expressions, and Operators (C# Programming Guide): https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/statements-expressions-operators/
## C# implemented proposals
- C# 10: https://github.com/dotnet/csharplang/tree/main/proposals/csharp-10.0
- C# 9: https://github.com/dotnet/csharplang/tree/main/proposals/csharp-9.0
- C# 8: https://github.com/dotnet/csharplang/tree/main/proposals/csharp-8.0
- C# 7.3: https://github.com/dotnet/csharplang/tree/main/proposals/csharp-7.3
- C# 7.2: https://github.com/dotnet/csharplang/tree/main/proposals/csharp-7.2
- C# 7.1: https://github.com/dotnet/csharplang/tree/main/proposals/csharp-7.1
- C# 7.0: https://github.com/dotnet/csharplang/tree/main/proposals/csharp-7.0
- C# 6.0: https://github.com/dotnet/csharplang/tree/main/proposals/csharp-6.0
## C# proposals being worked on
- [Proposal] Required Properties #3630: https://github.com/dotnet/csharplang/issues/3630
- Champion: Simplified parameter null validation code #2145: https://github.com/dotnet/csharplang/issues/2145
- Proposal: Semi-Auto-Properties; field keyword #140: https://github.com/dotnet/csharplang/issues/140
- Working Set (of proposals): https://github.com/dotnet/csharplang/milestone/19
## Text types
- Strings (C# Programming Guide): https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/strings/
- Verbatim strings: https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/tokens/verbatim
- String Interpolation in C# 10 and .NET 6: https://devblogs.microsoft.com/dotnet/string-interpolation-in-c-10-and-net-6/
- Escape sequences: https://devblogs.microsoft.com/csharpfaq/what-character-escape-sequences-are-available/
## Number types
- Floating point numbers: https://ciechanow.ski/exposing-floating-point/
- Why 0.1 does not exist in floating-point numbers: https://www.exploringbinary.com/why-0-point-1-does-not-exist-in-floating-point/
- American Patriot missile disaster: https://www.ima.umn.edu/~arnold/disasters/patriot.html
## Console apps and formatting
- Main() and command-line arguments (C# Programming Guide): https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/main-and-command-args/
- Console Class: https://docs.microsoft.com/en-us/dotnet/api/system.console
- Formatting types: https://docs.microsoft.com/en-us/dotnet/standard/base-types/formatting-types
- Composite Formatting: https://docs.microsoft.com/en-us/dotnet/standard/base-types/composite-formatting
## Miscellaneous
- An Arabic programming language: https://youtu.be/dkO8cdwf6v8
# Chapter 3 - Controlling Flow and Converting Types
## Operators
- C# operators: https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/statements-expressions-operators/operators
- Truth tables: https://en.wikipedia.org/wiki/Truth_table
- Side effects: https://en.wikipedia.org/wiki/Side_effect_(computer_science)
- Bitwise and shift operators: https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/operators/bitwise-and-shift-operators
- Member access operators: https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/operators/member-access-operators
## Branching statements and pattern matching
- Statement keywords (C# Reference): https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/statement-keywords
- Goto Fail bug: https://gotofail.com/
- goto keyword and examples of when it can be used: https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/goto
- Pattern matching: https://docs.microsoft.com/en-us/dotnet/csharp/pattern-matching
- Patterns and switch expressions: https://devblogs.microsoft.com/dotnet/do-more-with-patterns-in-c-8-0/
## Casting, converting, rounding, and formatting data
- Taking control of rounding: https://docs.microsoft.com/en-us/dotnet/api/system.math.round
- Format codes for common scenarios: https://docs.microsoft.com/en-us/dotnet/standard/base-types/standard-date-and-time-format-strings
- Casting and type conversions (C# Programming Guide): https://docs.microsoft.com/en-us/dotnet/articles/csharp/programming-guide/types/casting-and-type-conversions
## Handling exceptions
- 10 Exception handling best practices in C#: https://kumarashwinhubert.com/10-exception-handling-best-practices-in-csharp
## Coding problems in interviews
- Why can't programmers program? http://blog.codinghorror.com/why-cant-programmers-program/
- FizzBuzz for programming interviews: http://imranontech.com/2007/01/24/using-fizzbuzz-to-find-developers-who-grok-coding/
- Make Better Hiring Decisions With Take-Home Coding Challenges: https://codesubmit.io
- The 30-minute guide to rocking your next coding interview: https://www.freecodecamp.org/news/coding-interviews-for-dummies-5e048933b82b/
- C# Interview Questions: https://www.codingdojo.com/blog/c-interview-questions
# Chapter 4 - Writing, Debugging, and Testing Functions
## Concepts
- Recursion versus interation: https://en.wikipedia.org/wiki/Recursion_(computer_science)#Recursion_versus_iteration
## Debugging
- Visual Studio for Windows debugger documentation: https://docs.microsoft.com/en-us/visualstudio/debugger/
- Visual Studio Code debugger: https://code.visualstudio.com/docs/editor/debugging
- Instructions for setting up the .NET debugger: https://github.com/OmniSharp/omnisharp-vscode/blob/master/debugger.md
- How to debug for absolute beginners: https://docs.microsoft.com/en-us/visualstudio/debugger/debugging-absolute-beginners
## Instrumenting
- System.Diagnostics Namespace: https://docs.microsoft.com/en-us/dotnet/core/api/system.diagnostics
- Debug class: https://docs.microsoft.com/en-us/dotnet/api/system.diagnostics.debug
- Trace listeners: https://docs.microsoft.com/en-us/dotnet/api/system.diagnostics.tracelistener
- Console log formatting: https://docs.microsoft.com/en-us/dotnet/core/extensions/console-log-formatter
- Using .env in .NET: https://dusted.codes/dotenv-in-dotnet
- Announcing dotnet monitor in .NET 6: https://devblogs.microsoft.com/dotnet/announcing-dotnet-monitor-in-net-6/
## Testing
- Test Driven Development (TDD): https://en.wikipedia.org/wiki/Test-driven_development
- Unit testing in .NET: https://docs.microsoft.com/en-us/dotnet/core/testing/
- xUnit.net: http://xunit.github.io/
# Chapter 5 - Building Your Own Types with Object-Oriented Programming
## Fields
- Fields (C# programming guide): https://docs.microsoft.com/en-us/dotnet/articles/csharp/programming-guide/classes-and-structs/fields
- Access modifiers (C# programming guide): https://docs.microsoft.com/en-us/dotnet/articles/csharp/language-reference/keywords/access-modifiers
- Enumeration types (C# reference): https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/builtin-types/enum
## Methods
- Constructors (C# programming guide): https://docs.microsoft.com/en-us/dotnet/articles/csharp/programming-guide/classes-and-structs/constructors
- Methods (C# programming guide): https://docs.microsoft.com/en-us/dotnet/articles/csharp/methods
- Deconstruct method: https://docs.microsoft.com/en-us/dotnet/csharp/deconstruct
- params keyword: https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/params
- ref keyword: https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/classes-and-structs/ref-returns
## Properties
- Encapsulation of fields using properties: https://stackoverflow.com/questions/1568091/why-use-getters-and-setters-accessors
- Properties (C# programming guide): https://docs.microsoft.com/en-us/dotnet/articles/csharp/properties
- Using Tuples in C# to Initialize Properties in the Constructor and to Deconstruct Your Object: https://www.thomasclaudiushuber.com/2021/03/25/csharp-using-tuples-to-initialize-properties/
## Pattern matching
- Pattern matching tutorial: https://docs.microsoft.com/en-us/dotnet/csharp/tutorials/pattern-matching
## Records
- Comparing struct and class records: https://devblogs.microsoft.com/dotnet/announcing-net-6-release-candidate-2/#record-structs
## Miscellaneous
- How to calculate someone's age: https://stackoverflow.com/questions/9/how-do-i-calculate-someones-age-in-c
# Chapter 6 - Implementing Interfaces and Inheriting Classes
## Operator overloading
- Operator (C# reference): https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/operators/operator-overloading
- Symbols that can be overloaded: https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/statements-expressions-operators/overloadable-operators
## Delegates and events
- Delegates: https://docs.microsoft.com/en-us/dotnet/standard/delegates-lambdas
- Events (C# reference): https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/event
- Custom EventArgs: https://docs.microsoft.com/en-us/dotnet/standard/events/how-to-raise-and-consume-events
## Interfaces and generics
- Interfaces: https://docs.microsoft.com/en-us/dotnet/csharp/fundamentals/types/interfaces
- Explicit interface implementations: https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/interfaces/explicit-interface-implementation
- Design decisions for default interface implementations: https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/proposals/csharp-8.0/default-interface-methods
- Default interface implementations tutorial: https://docs.microsoft.com/en-us/dotnet/csharp/tutorials/default-interface-members-versions
- Generics (C# Programming Guide): https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/generics
## Memory, reference and value types
- Reference Types (C# Reference): https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/reference-types
- Value Types (C# reference): https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/builtin-types/value-types
- Choosing Between Class and Struct: https://docs.microsoft.com/en-us/dotnet/standard/design-guidelines/choosing-between-class-and-struct
- Conversation about the .NET type system: https://devblogs.microsoft.com/dotnet/conversation-about-the-net-type-system/
- Technical details of the internal memory layout of types in .NET: https://adamsitnik.com/Value-Types-vs-Reference-Types/
- Garbage collection: https://docs.microsoft.com/en-us/dotnet/standard/garbage-collection/
- Finalizers (C# Programming Guide): https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/classes-and-structs/destructors
- Finalizers and disposing: https://docs.microsoft.com/en-us/dotnet/standard/garbage-collection/unmanaged
- IDisposable interface: https://docs.microsoft.com/en-us/dotnet/standard/garbage-collection/using-objects
## Null and nullability
- The inventor of null, Sir Charles Antony Richard Hoare, admits his mistake in a recorded hour-long talk: https://www.infoq.com/presentations/Null-References-The-Billion-Dollar-Mistake-Tony-Hoare
- The tweet about achieving 80% annotations in .NET 5: https://twitter.com/terrajobst/status/1296566363880742917
- Video to learn how to get rid of null reference exceptions forever: https://channel9.msdn.com/Shows/On-NET/This-is-how-you-get-rid-of-null-reference-exceptions-forever
- Nullable value types (C# reference): https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/builtin-types/nullable-value-types
- Nullable reference types: https://docs.microsoft.com/en-us/dotnet/csharp/nullable-references
- Null-conditional operator: https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/operators/null-conditional-operators
- Null-coalescing operator: https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/operators/null-coalescing-operator
## Inheritance
- Inheritance (C# Programming Guide): https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/classes-and-structs/inheritance
# Chapter 7 - Packaging and Distributing .NET Types
## .NET Standard
- .NET Standard 2.1 announcement: https://devblogs.microsoft.com/dotnet/announcing-net-standard-2-1/
- .NET Standard 2.1 APIs and a comparison with .NET Standard 2.0: https://github.com/dotnet/standard/blob/master/docs/versions/netstandard2.1.md
- Future of .NET Standard: https://devblogs.microsoft.com/dotnet/the-future-of-net-standard/
- From .NET Standard to .NET 5: https://www.codemag.com/article/2010022
## .NET versions
- .NET Core 1.0 announcement: https://devblogs.microsoft.com/dotnet/announcing-net-core-1-0/
- .NET Core 1.1 announcement: https://devblogs.microsoft.com/dotnet/announcing-net-core-1-1/
- .NET Core 2.0 announcement: https://devblogs.microsoft.com/dotnet/announcing-net-core-2-0/
- .NET Core 2.2 announcement: https://devblogs.microsoft.com/dotnet/announcing-net-core-2-2/
- .NET Core 3.0 announcement: https://devblogs.microsoft.com/dotnet/announcing-net-core-3-0/
- .NET Core 3.1 announcement: https://devblogs.microsoft.com/dotnet/announcing-net-core-3-1/
- .NET 5 announcement: https://devblogs.microsoft.com/dotnet/announcing-net-5-0
- Performance improvements in .NET 5: https://devblogs.microsoft.com/dotnet/performance-improvements-in-net-5/
- .NET 5.0 Runtime Highlights: https://codemag.com/Article/2010092/.NET-5.0-Runtime-Highlights
- Announcing .NET 6 — The Fastest .NET Yet: https://devblogs.microsoft.com/dotnet/announcing-net-6/
## .NET API, packages and frameworks
- Search and browse all .NET APIs: https://docs.microsoft.com/en-us/dotnet/api/
- CoreFX README.md: https://github.com/dotnet/corefx/blob/master/Documentation/README.md
- .NET 6.0 TFMs: https://github.com/dotnet/designs/pull/174/files
- How packages and their APIs relate to frameworks: https://gist.github.com/davidfowl/8939f305567e1755412d6dc0b8baf1b7
- Example .NET package and the frameworks it supports: https://www.nuget.org/packages/System.IO.FileSystem/
- Currently supported Runtime Identifier (RID) values: https://docs.microsoft.com/en-us/dotnet/articles/core/rid-catalog
- System.IO.FileSystem package details: https://www.nuget.org/packages/System.IO.FileSystem/
## Roslyn, SDKs, and project templates
- Roslyn compiler: https://github.com/dotnet/roslyn
- .NET project SDKs: https://docs.microsoft.com/en-us/dotnet/core/project-sdk/overview
- global.json overview: https://docs.microsoft.com/en-us/dotnet/core/tools/global-json
- Additional `dotnet new` templates: https://dotnetnew.azurewebsites.net/
- Tutorial: Create an item template: https://docs.microsoft.com/en-us/dotnet/core/tutorials/cli-templates-create-item-template
## Packaging and publishing
- PDB files: https://www.wintellect.com/pdb-files-what-every-developer-must-know/
- Single-file app issue: https://github.com/dotnet/runtime/issues/36590
- App trimming: https://devblogs.microsoft.com/dotnet/app-trimming-in-net-5/
- The PackageReference format: https://docs.microsoft.com/en-us/nuget/reference/msbuild-targets
- NuGet packages: https://www.nuget.org/packages
- Announcing NuGet 6.0: https://devblogs.microsoft.com/nuget/announcing-nuget-6/
- .NET Core application publishing overview: https://docs.microsoft.com/en-us/dotnet/core/deploying/
- How to Deploy .NET apps to Raspberry Pi: https://www.ryadel.com/en/deploy-net-apps-raspberry-pi/
- How to solve a circular reference using an interface: https://stackoverflow.com/questions/6928387/how-to-solve-circular-reference
- Semantic versioning: http://semver.org
## Decompiling .NET
- Is it possible to “decompile” a Windows .exe? Or at least view the Assembly? https://stackoverflow.com/questions/273145/is-it-possible-to-decompile-a-windows-exe-or-at-least-view-the-assembly
- IDA Freeware Download Page: https://www.hex-rays.com/products/ida/support/download_freeware/
## Porting from .NET Framework to modern .NET
- Overview of porting from .NET Framework to .NET Core: https://docs.microsoft.com/en-us/dotnet/core/porting/
- What .NET Developers ought to know: https://www.hanselman.com/blog/WhatNETDevelopersOughtToKnowToStartIn2017.aspx
- Introducing the .NET Upgrade Assistant Preview: https://devblogs.microsoft.com/dotnet/introducing-the-net-upgrade-assistant-preview/
- .NET Upgrade Assistant: https://dotnet.microsoft.com/platform/upgrade-assistant
- Discover cross-platform issues: https://docs.microsoft.com/en-us/dotnet/standard/analyzers/api-analyzer#discover-cross-platform-issues
- Amazon Porting Assistant for .NET: https://aws.amazon.com/porting-assistant-dotnet/
## Preview features
- Preview Features: https://github.com/dotnet/designs/blob/main/accepted/2021/preview-features/preview-features.md
# Chapter 8 - Working with Common .NET Types
## Working with numbers
- Numerics types: https://docs.microsoft.com/en-us/dotnet/standard/numerics
- The Half type: https://devblogs.microsoft.com/dotnet/introducing-the-half-type/
- nint and nuint types (C# reference): https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/builtin-types/nint-nuint
- nint Struct: https://docs.microsoft.com/en-us/dotnet/api/system.nint
- Names for large numbers: https://en.wikipedia.org/wiki/Names_of_large_numbers
## Working with text and regular expressions
- String Class: https://docs.microsoft.com/en-us/dotnet/api/system.string
- Regex Class: https://docs.microsoft.com/en-us/dotnet/api/system.text.regularexpressions.regex
- Regular expressions in .NET: https://docs.microsoft.com/en-us/dotnet/articles/standard/base-types/regular-expressions
- Regular Expression Language Quick Reference: https://docs.microsoft.com/en-us/dotnet/standard/base-types/regular-expression-language-quick-reference
- Unicode in regular expressions: https://www.regular-expressions.info/unicode.html
- Using a regular expression to split a comma-separated string: https://stackoverflow.com/questions/18144431/regex-to-split-a-csv
- To specify a Unicode character, use `\u` followed by four characters specifying the number of the character. For example, `\u00c0` is the À character: https://www.regular-expressions.info
- Performance improvements in .NET 5: https://devblogs.microsoft.com/dotnet/regex-performance-improvements-in-net-5/
## Dates and times
- Date, Time, and Time Zone Enhancements in .NET 6: https://devblogs.microsoft.com/dotnet/date-time-and-time-zone-enhancements-in-net-6/
- .NET 6: Date and Time Structures: https://www.infoq.com/news/2021/04/Net6-Date-Time/
- Noda Time: A better date and time API for .NET: https://nodatime.org/
## Collections
- Collections (C# and Visual Basic): https://docs.microsoft.com/en-us/dotnet/api/system.collections
- Collections: https://docs.microsoft.com/en-us/dotnet/standard/collections
- Concurrent collections: https://docs.microsoft.com/en-us/dotnet/api/system.collections.concurrent
- What types should I use to pass collections in C#? https://markheath.net/post/passing-collections-csharp
- On Abstractions and For-Each Performance in C#: https://www.infoq.com/articles/For-Each-Performance/
## Spans
- Span<T>: https://docs.microsoft.com/en-us/dotnet/api/system.span-1
- How spans work internally: https://docs.microsoft.com/en-us/archive/msdn-magazine/2018/january/csharp-all-about-span-exploring-a-new-net-mainstay
## Networking
- .NET 6 Networking Improvements: https://devblogs.microsoft.com/dotnet/dotnet-6-networking-improvements/
## Assemblies and reflection
- .NET API Reference: https://docs.microsoft.com/en-us/dotnet/api/
- Compiler-generated display class: http://stackoverflow.com/a/2509524/55847
- Dynamically load assemblies that are not currently referenced: https://docs.microsoft.com/en-us/dotnet/standard/assembly/unloadability-howto
- Dynamically execute code: https://docs.microsoft.com/en-us/dotnet/api/system.reflection.methodbase.invoke
- Dynamically generate new code and assemblies: https://docs.microsoft.com/en-us/dotnet/api/system.reflection.emit.assemblybuilder
- Extending Metadata Using Attributes: https://docs.microsoft.com/en-us/dotnet/standard/attributes/
## Working with images
- ImageSharp: https://github.com/SixLabors/ImageSharp
## Internationalization
- Globalizing and localizing .NET applications: https://docs.microsoft.com/en-us/dotnet/standard/globalization-localization/
- Time zones: https://devblogs.microsoft.com/dotnet/cross-platform-time-zones-with-net-core/
# Chapter 9 - Working with Files, Streams, and Serialization
## File system, encoding, and streams
- File System and the Registry (C# Programming Guide): https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/file-system/
- Character encoding in .NET: https://docs.microsoft.com/en-us/dotnet/articles/standard/base-types/character-encoding
- Async streams tutorial: https://docs.microsoft.com/en-us/dotnet/csharp/tutorials/generate-consume-asynchronous-stream
- How pipelines help with I/O performance: https://devblogs.microsoft.com/dotnet/system-io-pipelines-high-performance-io-in-net/
## Serialization
- Serialization (C#): https://docs.microsoft.com/en-us/dotnet/articles/csharp/programming-guide/concepts/serialization/
- Serializing to Files, TextWriters, and XmlWriters: https://docs.microsoft.com/en-us/dotnet/standard/linq/serialize-files-textwriters-xmlwriters
## JSON
- Newtonsoft Json.NET: https://www.newtonsoft.com/json
- System.Text.Json APIs: https://devblogs.microsoft.com/dotnet/try-the-new-system-text-json-apis/
- Issues solved by the new JSON APIs, including JamesNK's comments: https://github.com/dotnet/corefx/issues/33115
- How to migrate from Newtonsoft.Json to System.Text.Json: https://docs.microsoft.com/en-us/dotnet/standard/serialization/system-text-json-migrate-from-newtonsoft-how-to
- Whats next for System.Text.Json? https://devblogs.microsoft.com/dotnet/whats-next-for-system-text-json/
# Chapter 10 - Working with Data Using Entity Framework Core
## Legacy EF 6
- Entity Framework 6.3 and its .NET Core 3.0 and later support: https://devblogs.microsoft.com/dotnet/announcing-ef-core-3-0-and-ef-6-3-general-availability/
## EF Core
- EF Core documentation: https://docs.microsoft.com/en-us/ef/core/
- EF Core team's plans: https://docs.microsoft.com/en-us/ef/core/what-is-new/ef-core-5.0/plan
- New features in EF Core 5: https://docs.microsoft.com/en-us/ef/core/what-is-new/ef-core-5.0/whatsnew
- New features in EF Core 6: https://docs.microsoft.com/en-us/ef/core/what-is-new/ef-core-6.0/whatsnew
- Get to Know EF Core 6: https://devblogs.microsoft.com/dotnet/get-to-know-ef-core-6/
- Announcing the Plan for EF7: https://devblogs.microsoft.com/dotnet/announcing-the-plan-for-ef7/
- Plans for Entity Framework Core 6.0 revealed as Microsoft admits it is unlikely to match Dapper for performance: https://www.theregister.com/2021/01/19/entity_framework_core_6/
- Entity Framework Community Standup - Performance Tuning an EF Core App: https://www.youtube.com/watch?v=VgNFFEqwZPU
## EF Core database providers
- EF Core database providers: https://docs.microsoft.com/en-us/ef/core/providers/
- Devart database providers: https://www.devart.com/dotconnect/entityframework.html
- Check the latest NuGet package version: https://www.nuget.org/packages/Microsoft.EntityFrameworkCore.Sqlite/
- Document Database Providers for Entity Framework Core: https://github.com/BlueshiftSoftware/EntityFrameworkCore
## SQLite
- Download SQLite: https://www.sqlite.org/download.html
- SQL statements supported by SQLite: https://sqlite.org/lang.html
- Download SQLiteStudio: http://sqlitestudio.pl
## Microsoft SQL Server
- Try SQL Server on-premises or in the cloud: https://www.microsoft.com/en-us/sql-server/sql-server-downloads
- Download SQL Server Management Studio (SSMS): https://docs.microsoft.com/en-us/sql/ssms/download-sql-server-management-studio-ssms
- Quickstart: Connect and query a SQL Server instance using SQL Server Management Studio (SSMS): https://docs.microsoft.com/en-us/sql/ssms/quickstarts/ssms-connect-query-sql-server
- Quickstart: Connect and query an Azure SQL Database or an Azure Managed Instance using SQL Server Management Studio (SSMS): https://docs.microsoft.com/en-us/sql/ssms/quickstarts/ssms-connect-query-azure-sql
- Use Visual Studio Code to create and run Transact-SQL scripts: https://docs.microsoft.com/en-us/sql/tools/visual-studio-code/sql-server-develop-use-vscode
- .NET Interactive with SQL!| .NET Notebooks in Visual Studio Code: https://devblogs.microsoft.com/dotnet/net-interactive-with-sql-net-notebooks-in-visual-studio-code/
## NoSQL data stores
- Welcome to Azure Cosmos DB: https://docs.microsoft.com/en-us/azure/cosmos-db/introduction
- Use NoSQL databases as a persistence infrastructure: https://docs.microsoft.com/en-us/dotnet/standard/microservices-architecture/microservice-ddd-cqrs-patterns/nosql-database-persistence-infrastructure
## EF Core models
- EF Core model conventions: https://docs.microsoft.com/en-us/ef/core/modeling/
- Data seeding: https://docs.microsoft.com/en-us/ef/core/modeling/data-seeding
- Humanizer library: http://humanizr.net
- Scaffolding: https://docs.microsoft.com/en-us/ef/core/managing-schemas/scaffolding?tabs=dotnet-core-cli
- Deep Dive into Many-to-Many: A Tour of EF Core 5.0: https://channel9.msdn.com/Shows/On-NET/Deep-Dive-into-Many-to-Many-A-Tour-of-EF-Core-50-pt-2
- Naming Conventions for Entity Framework Core Tables and Columns: https://github.com/efcore/EFCore.NamingConventions
## EF Core querying and manipulating
- Filtered include: https://docs.microsoft.com/en-us/ef/core/querying/related-data/eager#filtered-include
2022-03-05 13:54:51 +01:00
- Simple logging: https://docs.microsoft.com/en-us/ef/core/logging-events-diagnostics/simple-logging
2022-02-09 11:30:33 +01:00
- Query tags: https://docs.microsoft.com/en-us/ef/core/querying/tags
- Loading patterns: https://docs.microsoft.com/en-us/ef/core/querying/related-data
- Pooling database contexts: https://docs.microsoft.com/en-us/ef/core/what-is-new/ef-core-2.0#dbcontext-pooling
# Chapter 11 - Querying and Manipulating Data Using LINQ
## LINQ concepts
- Expression trees: https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/concepts/expression-trees/
- LINQ comprehension syntax: https://stackoverflow.com/questions/6229187/linq-why-is-it-called-comprehension-syntax
- LINQ in C#: https://docs.microsoft.com/en-us/dotnet/csharp/linq/linq-in-csharp
- New LINQ extensions in .NET 6 and benchmarks: https://blog.elmah.io/new-linq-extensions-in-net-6-and-benchmarks/
## LINQ providers
- EF Core LINQ queries no longer evaluated at client: https://docs.microsoft.com/en-us/ef/core/what-is-new/ef-core-3.x/breaking-changes#linq-queries-are-no-longer-evaluated-on-the-client
- Parallel LINQ (PLINQ): https://docs.microsoft.com/en-us/dotnet/standard/parallel-programming/introduction-to-plinq
- LINQ to XML Overview (C#): https://docs.microsoft.com/en-gb/dotnet/csharp/programming-guide/concepts/linq/linq-to-xml-overview
## LINQ samples and tools
- 101 LINQ Samples: https://docs.microsoft.com/en-us/samples/dotnet/try-samples/101-linq-samples/
- LINQPad: https://www.linqpad.net/
2022-03-06 11:41:30 +01:00
# Chapter 12 - Introducing Web Development Using ASP.NET Core
2022-02-09 11:30:33 +01:00
## .NET apps
- .NET Application Architecture Guidance: https://www.microsoft.com/net/learn/architecture
## .NET Content Management Systems
- Piranha CMS: https://piranhacms.org/
- Orchard Core: http://www.orchardcore.net/
- Optimizely CMS Developer Guide: https://world.optimizely.com/documentation/developer-guides/CMS/
- Umbraco CMS: https://umbraco.com/products/umbraco-cms/migrating-umbraco-to-net-core/
## ASP.NET versions and features
- ASP.NET Core 1.0 announcement: https://devblogs.microsoft.com/aspnet/announcing-asp-net-core-1-0/
- ASP.NET Core 1.1 announcement: https://devblogs.microsoft.com/aspnet/announcing-asp-net-core-1-1/
- ASP.NET Core 2.0 announcement: https://devblogs.microsoft.com/aspnet/announcing-asp-net-core-2-0/
- ASP.NET Core 2.1 announcement: https://devblogs.microsoft.com/aspnet/asp-net-core-2-1-0-now-available/
- ASP.NET Core 2.2 announcement: https://devblogs.microsoft.com/aspnet/asp-net-core-2-2-available-today/
- ASP.NET Core 3.0 announcement: https://devblogs.microsoft.com/aspnet/a-first-look-at-changes-coming-in-asp-net-core-3-0/
- ASP.NET Core 3.1 announcement: https://devblogs.microsoft.com/aspnet/asp-net-core-updates-in-net-core-3-1/
- Blazor WebAssembly announcement: https://devblogs.microsoft.com/aspnet/blazor-webassembly-3-2-0-now-available/
- ASP.NET Core 5.0 announcement: https://devblogs.microsoft.com/aspnet/announcing-asp-net-core-in-net-5/
## Web development technologies
- WebSocket: https://en.wikipedia.org/wiki/WebSocket
- MessagePack: https://msgpack.org
- WebAssembly: https://webassembly.org
- TypeScript: https://www.typescriptlang.org
2022-03-06 11:41:30 +01:00
# Chapter 13 - Building Websites Using ASP.NET Core Razor Pages
2022-02-09 11:30:33 +01:00
## General web development
- HTML5 and CSS3: Building Responsive Websites: https://www.packtpub.com/producthtml5-and-css3-building-responsive-websites/9781787124813h
- Kestrel web server: https://docs.microsoft.com/en-us/aspnet/core/fundamentals/servers/kestrel
- Free TLS/SSL certificates: https://letsencrypt.org
- ASP.NET Core hosting environments: https://docs.microsoft.com/en-us/aspnet/core/fundamentals/environments
- Content Delivery Network (CDN): https://en.wikipedia.org/wiki/Content_delivery_network
- Bootstrap: https://getbootstrap.com/
- Compact Folders feature: https://github.com/microsoft/vscode-docs/blob/vnext/release-notes/v1_41.md#compact-folders-in-explorer
## ASP.NET Core
- Announcing ASP.NET Core in .NET 6: https://devblogs.microsoft.com/dotnet/announcing-asp-net-core-in-net-6/
- ASP.NET Core fundamentals: https://docs.microsoft.com/en-us/aspnet/core/fundamentals/
- Static files in ASP.NET Core: https://docs.microsoft.com/en-us/aspnet/core/fundamentals/static-files
- HttpContext class: https://docs.microsoft.com/en-us/dotnet/api/system.web.httpcontext
## Razor Pages and layouts
- Introducing the new Razor editor in Visual Studio 2022: https://devblogs.microsoft.com/visualstudio/introducing-the-new-razor-editor-in-visual-studio-2022/
- Introduction to Razor Pages in ASP.NET Core: https://docs.microsoft.com/en-us/aspnet/core/razor-pages/
- Razor syntax reference for ASP.NET Core: https://docs.microsoft.com/en-us/aspnet/core/mvc/views/razor
- Layout in ASP.NET Core: https://docs.microsoft.com/en-us/aspnet/core/mvc/views/layout
- Tag Helpers in ASP.NET Core: https://docs.microsoft.com/en-us/aspnet/core/mvc/views/tag-helpers/intro
- ASP.NET Core Razor Pages with EF Core: https://docs.microsoft.com/en-us/aspnet/core/data/ef-rp/intro
- Registering a database context for use as a dependency service: https://docs.microsoft.com/en-us/ef/core/miscellaneous/configuring-dbcontext#using-dbcontext-with-dependency-injection
- The `<partial>` tag helper: https://docs.microsoft.com/en-us/aspnet/core/mvc/views/tag-helpers/built-in/partial-tag-helper
## Endpoint routing
- Simple examples of Run, Map, and Use: https://www.vaughanreid.com/2020/05/using-in-line-middleware-in-asp-net-core/
- Automatically visualize your endpoints: https://andrewlock.net/visualizing-asp-net-core-endpoints-using-graphvizonline-and-the-dot-language/
- Configuring the HTTP pipeline with middleware: https://docs.microsoft.com/en-us/aspnet/core/fundamentals/middleware
- DEEP DIVE: HOW IS THE ASP.NET CORE MIDDLEWARE PIPELINE BUILT? https://www.stevejgordon.co.uk/how-is-the-asp-net-core-middleware-pipeline-built
2022-03-06 11:41:30 +01:00
# Chapter 14 - Building Websites Using the Model-View-Controller Pattern
2022-02-09 11:30:33 +01:00
## Security and privacy
- Built-in features for compliance with modern privacy requirements like GDPR: https://docs.microsoft.com/en-us/aspnet/core/security/gdpr
- ASP.NET Core's support for authenticator apps: https://docs.microsoft.com/en-us/aspnet/core/security/authentication/identity-enable-qrcodes
- Identity UI library: https://docs.microsoft.com/en-us/aspnet/core/security/authentication/scaffold-identity?tabs=netcore-cli
- Authorization: https://docs.microsoft.com/en-us/aspnet/core/security/authorization/introduction
- Anti-forgery tokens: https://docs.microsoft.com/en-us/aspnet/core/security/anti-request-forgery
## Setting up and configuring
- dotnet new templates: https://github.com/dotnet/templating/wiki/Available-templates-for-dotnet-new
- Overview of ASP.NET Core MVC: https://docs.microsoft.com/en-us/aspnet/core/mvc/overview
- Default configuration of web hosts: https://docs.microsoft.com/en-us/aspnet/core/fundamentals/host/web-host
- Dependency injection for ASP.NET Core: https://docs.microsoft.com/en-us/aspnet/core/fundamentals/dependency-injection
- Configuring middleware: https://docs.microsoft.com/en-us/aspnet/core/fundamentals/middleware/
- Announcing YARP 1.0 Release: https://devblogs.microsoft.com/dotnet/announcing-yarp-1-0-release/
## Controllers
- Handle requests with controllers in ASP.NET Core MVC: https://docs.microsoft.com/en-us/aspnet/core/mvc/controllers/actions
- Response caching: https://docs.microsoft.com/en-us/aspnet/core/performance/caching/response
- How cache busting using query strings works: https://stackoverflow.com/questions/9692665/cache-busting-via-params
## Models
- Model Binding in ASP.NET Core: https://docs.microsoft.com/en-us/aspnet/core/mvc/models/model-binding
- Create your own model binders by implementing the IModelBinder interface: https://docs.microsoft.com/en-us/aspnet/core/mvc/advanced/custom-model-binding
- Model validation: https://docs.microsoft.com/en-us/aspnet/core/mvc/models/validation
- Tutorial: Get started with EF Core in an ASP.NET MVC web app: https://docs.microsoft.com/en-us/aspnet/core/data/ef-mvc/intro
## Views
- HtmlHelper class: https://docs.microsoft.com/en-us/dotnet/api/microsoft.aspnetcore.mvc.viewfeatures.htmlhelper
- Views in ASP.NET Core MVC: https://docs.microsoft.com/en-us/aspnet/core/mvc/views/overview
- Why it is good to put <script> elements at the bottom of the <body>: https://stackoverflow.com/questions/436411/where-should-i-put-script-tags-in-html-markup
## Miscellaneous
- How to unit test controllers: https://docs.microsoft.com/en-us/aspnet/core/mvc/controllers/testing
- Filters for cross-concern functionality: https://docs.microsoft.com/en-us/aspnet/core/mvc/controllers/filters
- Free stock photos for commercial use with no attribution: https://www.pexels.com/
- Images of eight categories: https://github.com/markjprice/cs9dotnet5/tree/master/Assets/Categories
2022-03-06 11:41:30 +01:00
# Chapter 15 - Building and Consuming Web Services
2022-02-09 11:30:33 +01:00
## Web service technologies
- Media types: http://en.wikipedia.org/wiki/Media_type
- WS-* standards: https://en.wikipedia.org/wiki/List_of_web_service_specifications
- HTTP OPTIONS method and other HTTP methods: https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/OPTIONS
- HTTP POST requests: https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/POST
- Create web APIs with ASP.NET Core: https://docs.microsoft.com/en-us/aspnet/core/web-api/
## Web service routing
- Design decisions around endpoint routing: https://devblogs.microsoft.com/aspnet/asp-net-core-2-2-0-preview1-endpoint-routing/
- Endpoint routing: https://docs.microsoft.com/en-us/aspnet/core/fundamentals/routing
- Previous routing system: https://docs.microsoft.com/en-us/aspnet/core/fundamentals/routing?view=aspnetcore-2.1
- Route constraints: https://docs.microsoft.com/en-us/aspnet/core/fundamentals/routing#route-constraint-reference
- Dependency injection for ASP.NET Core: https://docs.microsoft.com/en-us/aspnet/core/fundamentals/dependency-injection
- Proposed standard for Problem Details for HTTP APIs: https://tools.ietf.org/html/rfc7807
- Implementing problem details: https://docs.microsoft.com/en-us/dotnet/api/microsoft.aspnetcore.mvc.problemdetails
## Web service clients
- REST Client: https://github.com/Huachao/vscode-restclient/blob/master/README.md
- It is the BaseAddress and DefaultRequestHeaders properties that you should treat with caution with multiple threads: https://medium.com/@nuno.caneco/c-httpclient-should-not-be-disposed-or-should-it-45d2a8f568bc
- You're using HttpClient wrong and it is destabilizing your software: https://aspnetmonsters.com/2016/08/2016-08-27-httpclientwrong/
- How to initiate HTTP requests: https://docs.microsoft.com/en-us/aspnet/core/fundamentals/http-requests
- Issues with the original HttpClient class available in .NET: https://docs.microsoft.com/en-us/dotnet/architecture/microservices/implement-resilient-applications/use-httpclientfactory-to-implement-resilient-http-requests#issues-with-the-original-httpclient-class-available-in-net
- HttpClient extension methods for easily working with JSON: https://github.com/dotnet/designs/blob/main/accepted/2020/json-http-extensions/json-http-extensions.md
## Documenting web services
- Swagger: https://swagger.io/
- Swagger Tools: https://swagger.io/tools/
- Swashbuckle for ASP.NET Core: https://github.com/domaindrivendev/Swashbuckle.AspNetCore
- How Swagger can support multiple versions of an API: https://stackoverflow.com/questions/30789045/leverage-multipleapiversions-in-swagger-with-attribute-versioning/30789944
- Importance of documenting services: https://idratherbewriting.com/learnapidoc/
- Benefits of setting version compatibility: https://docs.microsoft.com/en-us/aspnet/core/mvc/compatibility-version
- Check latest version of analyzers package: http://www.nuget.org/packages/Microsoft.AspNetCore.Mvc.Api.Analyzers/
## Securing web services
- Verifying that the tokens used to call your web APIs are requested with the expected claims: https://docs.microsoft.com/en-us/azure/active-directory/develop/scenario-protected-web-api-verification-scope-app-roles
- CORS can be enabled to allow different origin requests: https://docs.microsoft.com/en-us/aspnet/core/security/cors
- Common HTTP security headers that you might want to add: https://www.meziantou.net/security-headers-in-asp-net-core.htm
## Health checks and reliable web services
- Health checks in ASP.NET Core: https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/health-checks
- How to extend the health check response: https://blogs.msdn.microsoft.com/webdev/2018/08/22/asp-net-core-2-2-0-preview1-healthcheck/
- How Polly can make your web services more reliable: https://docs.microsoft.com/en-us/dotnet/architecture/microservices/implement-resilient-applications/implement-http-call-retries-exponential-backoff-polly
- Use HttpClientFactory to implement resilient HTTP requests: https://docs.microsoft.com/en-us/dotnet/architecture/microservices/implement-resilient-applications/use-httpclientfactory-to-implement-resilient-http-requests
- Redis: https://redis.io
2022-03-06 11:41:30 +01:00
# Chapter 16 - Building User Interfaces Using Blazor
2022-02-09 11:30:33 +01:00
## Blazor hosting models
- Blazor: https://dotnet.microsoft.com/apps/aspnet/web-apps/blazor
- Official list of supported Blazor platforms: https://docs.microsoft.com/en-us/aspnet/core/blazor/supported-platforms
- Blazor hosting models: https://docs.microsoft.com/en-us/aspnet/core/blazor/hosting-models
- Blazor Mobile Bindings: https://devblogs.microsoft.com/aspnet/mobile-blazor-bindings-experiment/
- Blazor Hybrid apps: https://devblogs.microsoft.com/aspnet/hybrid-blazor-apps-in-mobile-blazor-bindings-july-update/
## Blazor components
- The reason for needing CSS isolation for Blazor components: https://github.com/dotnet/aspnetcore/issues/10170
- OI icons: https://iconify.design/icon-sets/oi/
- Setting `<head>` elements: https://docs.microsoft.com/en-us/aspnet/core/blazor/fundamentals/additional-scenarios-influence-html-head-tag-elements
- Forms and validation: https://docs.microsoft.com/en-us/aspnet/core/blazor/forms-validation
- NavigationManager with Blazor routes: https://docs.microsoft.com/en-us/aspnet/core/blazor/fundamentals/routing#uri-and-navigation-state-helpers
## Advanced techniques
- Implementing offline support for Blazor WebAssembly projects: https://docs.microsoft.com/en-us/aspnet/core/blazor/progressive-web-app#offline-support
- Lazy loading assemblies: https://docs.microsoft.com/en-us/aspnet/core/blazor/webassembly-lazy-load-assemblies?view=aspnetcore-5.0
- Routing in Blazor Apps: Comparing the routing of popular web frameworks like React and Angular with Blazor: https://devblogs.microsoft.com/premier-developer/routing-in-blazor-apps/
## Other resources
- Awesome Blazor: A collection of awesome Blazor resources: https://github.com/AdrienTorris/awesome-blazor
- Blazor University: Learn the new .NET SPA framework from Microsoft: https://blazor-university.com
- Blazor - app building workshop: In this workshop, we will build a complete Blazor app and learn about the various Blazor framework features along the way: https://github.com/dotnet-presentations/blazor-workshop/
- Carl Franklin's Blazor Train: https://www.youtube.com/playlist?list=PL8h4jt35t1wjvwFnvcB2LlYL4jLRzRmoz
- Welcome to PACMAN written in C# and running on Blazor WebAssembly: https://github.com/SteveDunn/PacManBlazor
# Epilogue
## Next steps on your C# and .NET learning journey
- Follow the Framework Design Guidelines: https://docs.microsoft.com/en-us/dotnet/standard/design-guidelines/
- Follow the code style rules: https://docs.microsoft.com/en-us/dotnet/fundamentals/code-analysis/style-rules/
- Cloud-Native learning resources for .NET developers: https://devblogs.microsoft.com/dotnet/cloud-native-learning-resources-for-net-developers/
- 37 App Ideas for Bootcamp Students & Code Newbies: https://dev.to/sylwiavargas/33-app-ideas-for-bootcamp-students-code-newbies-3n28
- Just! Build! Websites! https://github.com/melanierichards/just-build-websites
## Learn from other Packt books
- Mobile Development with .NET: https://www.packtpub.com/product/mobile-development-with-net-second-edition/9781800204690
- Enterprise Application Development with C# 9 and .NET 5: https://www.packtpub.com/product/enterprise-application-development-with-c-9-and-net-5/9781800209442
- Software Architecture with C# 9 and .NET 5: https://www.packtpub.com/product/software-architecture-with-c-9-and-net-5-second-edition/9781800566040
- An Atypical ASP.NET Core 5 Design Patterns Guide: https://www.packtpub.com/product/an-atypical-asp-net-core-5-design-patterns-guide/9781789346091
- Customizing ASP.NET Core 5.0: https://www.packtpub.com/product/customizing-asp-net-core-5-0/9781801077866
- ASP.NET Core Secure Coding Cookbook: https://www.packtpub.com/product/asp-net-core-secure-coding-cookbook/9781801071567
- ASP.NET Core 5 and React: https://www.packtpub.com/product/asp-net-core-5-and-react-second-edition/9781800206168
- ASP.NET Core 5 and Angular: https://www.packtpub.com/product/asp-net-core-5-and-angular-fourth-edition/9781800560338
- ASP.NET Core and Vue.js: https://www.packtpub.com/product/asp-net-core-and-vue-js/9781800206694
- Practical Microservices with Dapr and .NET: https://www.packtpub.com/product/practical-microservices-with-dapr-and-net/9781800568372
- Web Development with Blazor and .NET 5: https://www.packtpub.com/product/web-development-with-blazor-and-net-5/9781800208728
- Mastering Windows Presentation Foundation: https://www.packtpub.com/product/mastering-windows-presentation-foundation-second-edition/9781838643416