C# 7 and .NET Core 2.0 High Performance
Book information
Description
Book Description While writing an application, performance is paramount. Performance tuning for realworld applications often involves activities geared toward fnding bottlenecks; however, this cannot solve the dreaded problem of slower code. If you want to improve the speed of your code and optimize an application's performance, then this book is for you. C# 7 and .NET Core 2.0 High Performance begins with an introduction to the new features of what?explaining how they help in improving an application's performance. Learn to identify the bottlenecks in writing programs and highlight common performance pitfalls, and learn strategies to detect and resolve these issues early. You will explore multithreading and asynchronous programming with .NET Core and learn the importance and effcient use of data structures. This is followed with memory management techniques and design guidelines to increase an application’s performance. Gradually, the book will show you the importance of microservices architecture for building highly performant applications and implementing resiliency and security in .NET Core. After reading this book, you will learn how to structure and build scalable, optimized, and robust applications in C#7 and .NET. 1. What's New in .NET Core 2 and C# 7? Evolution of .NET New improvements in .NET Core 2.0 Performance improvements RyuJIT compiler in .NET Core Profile guided optimization Simplified packaging Upgrading path from .NET Core 1.x to 2.0 1. Install .NET Core 2.0 2. Upgrade TargetFramework 3. Update .NET Core SDK version 4. Update .NET Core CLI Changes in ASP.NET Core Identity Exploring .NET Core CLI and New Project Templates Understanding .NET Standard Versioning of .NET Standard New improvements in .NET Standard 2.0 More APIs in .NET Standard 2.0 Compatibility mode Creating a .NET Standard library What comes with ASP.NET Core 2.0 ASP.NET Core Razor Pages Automatic Page and View compilation on publishing Razor support for C# 7.1 Simplified configuration for Application Insights Pooling connections in Entity Framework Core 2.0 New features in C# 7.0 Tuples Patterns Constant pattern Type pattern Var pattern Reference returns Expression bodied member extended Creating Local Functions Out variables Async Main Writing quality code Summary 2. Understanding .NET Core Internals and Measuring Performance .NET Core internals CoreFX CoreCLR Understanding MSIL, CLI, CTS, and CLS How the CLR works From compilation to execution - Under the hood Garbage collection Generations in GC .NET Native and JIT compilation Utilizing multiple cores of the CPU for high performance How releasing builds increases performance Benchmarking .NET Core 2.0 applications Exploring BenchmarkDotNet How it works Setting parameters Memory diagnostics using BenchmarkDotnet Adding configurations Summary 3. Multithreading and Asynchronous Programming in .NET Core Multithreading versus asynchronous programming Multithreading in .NET Core Multithreading caveats Threads in .NET Core Creating threads in .NET Core Thread lifetime The thread pool in .NET Thread synchronization Monitors Task parallel library (TPL) Creating a task using TPL Task-based asynchronous pattern (TAP) Naming convention Return type Parameters Exceptions Task status Task cancellation Task progress reporting Implementing TAP using compilers Implementing TAP with greater control over Task Design patterns for parallel programming Pipeline pattern Dataflow pattern Producer/consumer pattern Parallel.ForEach Parallel LINQ (PLINQ) Summary 4. Data Structures and Writing Optimized Code in C# What are data structures? Understanding the use of Big O notation to measure the performance and complexity of an algorithm Logarithms Choosing the right data structure for performance optimization Arrays Lists Stacks Queue Linked lists Singly linked lists Doubly linked lists Circular-linked lists Dictionaries, hashtables, and hashsets Generic lists Best practices in writing optimized code in C# Boxing and unboxing overhead String concatenation Exception handling For and foreach Delegates Summary 5. Designing Guidelines for .NET Core Application Performance Coding principles Naming convention Code comments One class per file One logic per method Design principles KISS (Keep It Simple, Stupid) YAGNI (You Aren't Gonna Need It) DRY (Don't Repeat Yourself) Separation of Concerns (SoC) SOLID principles Single Responsibility Principle Open Closed principle Parameters Inheritance Composition Liskov principle The Interface Segregation principle The Dependency Inversion principle Caching Data structures Communication Using lighter interfaces Minimizing message size Queuing communication Resource management Avoiding improper use of threads Disposing objects in a timely fashion Acquiring resources when they are required Concurrency Summary 6. Memory Management Techniques in .NET Core Memory allocation process overview Analysing CLR internals through the SOS debugger in .NET Core Memory fragmentation Avoiding finalizers Best practices for disposing of objects in .NET Core Introduction to the IDisposable interface What are unmanaged resources? Using IDisposable When to implement the IDisposable interface Finalizer and Dispose Summary 7. Securing and Implementing Resilience in .NET Core Applications Introduction to resilient applications Resilient policies Reactive policies Implementing the retry pattern Implementing circuit breaker Wrapping the circuit breaker with retry Fallback policy with circuit breaker and retry Proactive policies Implementing timeout Implementing caching Implementing health checks Storing sensitive information using Application Secrets Protecting ASP.NET Core APIs SSL (Secure Socket Layer) Enabling SSL in an ASP.NET Core application Preventing CSRF (Cross-Site Request Forgery) attacks Reinforcing security headers Adding the HTTP strict transport security header Adding the X-Content-Type-Options header Adding the X-Frame-Options header Adding the X-Xss-Protection header Adding the Content-Security-Policy header Adding the referrer-policy header Enabling CORS in the ASP.NET Core application Authentication and authorization Using ASP.NET Core Identity for authentication and authorization Authentication Authorization Implementing authentication and authorization using the ASP.NET Core Identity framework Adding more properties in the user table Summary 8. Microservices Architecture Microservices architecture Benefits of microservices architecture Standard practice when developing microservices Types of microservices Stateless microservices Stateful microservices DDD Data manipulation with microservices Wrapping microservices behind an API gateway Denormalizing data into a flat schema for read/query purposes Consistency across business scenarios Communication with microservices Database architecture in microservices Tables per service Database per service Challenges in segregating tables or databases per service What is API composition? CQRS Developing microservices architecture with .NET Core Creating a sample app in .NET Core using microservices architecture Solution structure Logical architecture Developing a Core infrastructure project Creating the BaseEntity class The UnitOfWork pattern Creating a repository interface Logging Creating the APIComponents infrastructure project Developing an identity service for user authorization OpenIddict connect flows Creating the identity service project Implementing the vendor service Creating a vendor domain Creating the vendor infrastructure Creating the vendor service Implementing the mediator pattern in the vendor service Deploying microservices on Docker containers What is Docker? Using Docker with .NET Core Running Docker images Summary 9. Monitoring Application Performance Using Tools Application performance key metrics Average response time Apdex scores Percentage of errors Request rate Throughput/endpoints CPU and memory usage Tools and techniques to measure performance Introducing App Metrics Setting up App Metrics with ASP.NET Core Tracking middleware Adding tracking middleware Setting up configuration Adding visual reports Setting up InfluxDB Setting up the Windows subsystem for Linux Installing InfluxDB Installing Grafana Adding the InfluxDB dashboard Configuring InfluxDB Modifying the Configure and ConfigureServices methods in Startup Testing the ASP.NET Core App and reporting on the Grafana dashboard Summary
Similar books
The history of the church, from Our Lord's incarnation, to the twelfth year of the Emperor Mauricius Tiberius, or the year of Christ 594 As it was written in Greek by Eusebius Pamphilus, Bishop of Caesarea in Palestine; Socrates Scholasticus, Native of Constantinople; and Evagrius Scholasticus Born at Epiphania in Syria Secunda. Made English from that edition of these Historians, which Valesius published at Paris in the Years 1659, 1668, and 1673. Also, the Life of Constantine in four books, written by Eusebius Pamphilus; with Constantine's Oration to the Convention of the Saints, and Eusebius's Speech in Praise of Constantine, spoken at his Tricennalia. Valesius's Annotations on these Authors are done into English, and set at their proper Places in the Margin; as likewise a Translation of His Account of their Lives and Writings. With Two indexes; the One, of the Principal Matters that occur in the Text; the Other, of those contained in the Notes
AZW3
The Emergence of the Chief Data Officer: And a Look Into Analytics (Harness the Power of Data within Your Marketing Strategy Book 1)
2015 · AZW3
Focus Factor: How to Use Your Mental Power
2017 · AZW3
KEYBOARD SHORTCUTS FOR EFFICIENT INTERNET SURFING
2016 · AZW3
Instagram Secrets 2017: Make Money Longterm with Instagram Branding: The #1 Formula to Making a Steady Income with Instagram
2017 · AZW3
The "I Love My Instant Pot®" Free Holiday Menu: From Maple Dill Carrots and Spiced Applesauce to Cherry-Rosemary Pork Tenderloin and Festive Fruitcake, ... Dishes--Made Easy! ("I Love My" Series)
2017 · AZW3
How to SAP® EWM - Putaway Strategy Basics
2017 · AZW3
How to Eliminate Negative Thoughts and Emotions with One Simple but Powerful Technique
2016 · AZW3