Chapter
Chapter 1: Inside the CLR
An annotated reminder of some important computing terms
The OS multitask execution model
Static versus dynamic memory
.NET as a reaction to the Java World
The open source movement and .NET Core
Common Intermediate Language
Structure of an assembly file
Introducing metadata with a basic Hello World
PreJIT, JIT, EconoJIT, and RyuJIT
A quick tip on the execution and memory analysis of an assembly in Visual Studio 2015
Implementing algorithms with the CLR
Data structures, algorithms, and complexity
Relevant features appearing in versions 4.5x, 4.6, and .NET Core 1.0 and 1.1
.NET 4.6 (aligned with Visual Studio 2015)
Chapter 2: Core Concepts of C#
and .NET
C# – what's different in the language?
Languages: strongly typed, weakly typed, dynamic, and static
The true reason for delegates
The evolution in versions 2.0 and 3.0
Creating custom generic types and methods
Lambda expressions and anonymous types
LINQ syntax is based on the SQL language
Joining and grouping collections
Chapter 3: Advanced Concepts of
C# and .NET
C# 4 and .NET framework 4.0
Covariance and contravariance
Covariance in generic types
Tuples: implementation in C#
Tuples: support for structural equality
Tuples versus anonymous types
Lazy initialization and instantiation
Optional and named parameters
The Task object and asynchronous calls
C# 5.0: async/await declarations
The null-conditional operator
Auto-property initializers
Static using declarations
Expression bodied methods
Binary literals and digit separators
Pattern matching and switch statements
Chapter 4: Comparing Approaches for Programming
The inevitable Hello World demo
TypeScript: a superset of JavaScript
So, what exactly is TypeScript?
Main features and coalitions
Transpiling to different versions
A note on TypeScript's object-oriented syntax
More details and functionality
Chapter 5: Reflection and Dynamic Programming
Reflection in the .NET Framework
Calling external assemblies
The System.CodeDOM namespace
The Reflection.Emit namespace
Primary Interop Assemblies
Inserting multimedia in a sheet
Interop with Microsoft Word
The Office app default project
Architectural differences
Chapter 6: SQL Database Programming
Properties of relational tables
The tools – SQL Server 2014
SQL Server from Visual Studio
Data access in Visual Studio
Using ADO.NET basic objects
Configuring the user interface
The Entity Framework data model
Chapter 7: NoSQL Database Programming
A brief historical context
Architectural changes with respect to RDBMS
Querying multiple queries
The problem of nonnormalized data
File structure and default configuration
Altering data – the rest of CRUD operations
MongoDB from Visual Studio
First demo: a simple query from Visual Studio
Modifications and replacements
Chapter 8: Open Source Programming
Historical open source movements
Other projects and initiatives
Open source code for the programmer
Differences from traditional compilers
Getting started with Roslyn
A first look at Microsoft Code Analysis Services
An entire open source sample for you to check: ScriptCS
A basic project using Microsoft.CodeAnalysis
The first approach to code refactoring
Debugging and testing the demo
Debugging TypeScript with Chrome
Interfaces and strong typing
Declarations, scope, and Intellisense
Classes and class inheritance
More TypeScript in action
The election of an architecture
The MSF application model
Creating the demo application in Visual Studio
BPMN 2.0 (Business Process Model and Notation)
Visual Studio architecture, testing, and analysis tools
Application's architecture using Visual Studio
Testing our application in Visual Studio
The end of the life cycle: publishing the solution
Chapter 10: Design Patterns
Single Responsibility principle
Liskov Substitution principle
Other implementations of LSP in .NET (Generics)
Interface Segregation principle
Dependency Inversion principle
A final version of the sample
An example already implemented in .NET
The case for NoSQL databases
A2 – Broken Authentication and Session Management
A3 – Cross-Site Scripting (XSS)
A4 – Insecure Direct Object References
A5 – Security Misconfiguration
Possible examples of attacks
Prevention – aspects to consider
A6 – Sensitive Data Exposure
A7 – Missing Function-level Access Control
A8 – Cross-Site Request Forgery
A9 – Using components with known vulnerabilities
A10 – Invalidated redirects and forwards
Application Performance Engineering
Advanced options in Visual Studio 2015
The process of performance tuning
Using code to evaluate performance
Optimizing web applications
Chapter 13: Advanced Topics
The Windows messaging subsystem
Platform/Invoke: calling the OS from .NET
The process of platform invocation
Windows Management Instrumentation
Difference between multithreading and parallel programming
Dealing with other issues
The Parallel.ForEach version
Communication between threads
The list of supported environments
Installation of .NET Core
Configuration and Startup settings