C# 10 and .NET 6 - Modern Cross-Platform Development: build apps, websites, and services with ASP.NET Core 6, Blazor, and EF Core 6 using Visual Studio 2022 and Visual Studio Code
Gespeichert in:
1. Verfasser: | |
---|---|
Format: | Buch |
Sprache: | English |
Veröffentlicht: |
Birmingham
Packt Publishing
[2021]
|
Ausgabe: | 6th edition |
Schriftenreihe: | Expert insight
|
Schlagworte: | |
Online-Zugang: | Inhaltsverzeichnis |
Beschreibung: | xxx, 792 Seiten Illustrationen |
ISBN: | 9781801077361 |
Internformat
MARC
LEADER | 00000nam a22000001c 4500 | ||
---|---|---|---|
001 | BV047709564 | ||
003 | DE-604 | ||
005 | 20220331 | ||
007 | t | ||
008 | 220125s2021 a||| |||| 00||| eng d | ||
020 | |a 9781801077361 |9 978-1-80107-736-1 | ||
035 | |a (OCoLC)1304475223 | ||
035 | |a (DE-599)BVBBV047709564 | ||
040 | |a DE-604 |b ger |e rda | ||
041 | 0 | |a eng | |
049 | |a DE-384 |a DE-739 | ||
084 | |a ST 253 |0 (DE-625)143628: |2 rvk | ||
084 | |a ST 250 |0 (DE-625)143626: |2 rvk | ||
100 | 1 | |a Price, Mark J. |e Verfasser |0 (DE-588)1221555669 |4 aut | |
245 | 1 | 0 | |a C# 10 and .NET 6 - Modern Cross-Platform Development |b build apps, websites, and services with ASP.NET Core 6, Blazor, and EF Core 6 using Visual Studio 2022 and Visual Studio Code |c Mark J. Price |
250 | |a 6th edition | ||
264 | 1 | |a Birmingham |b Packt Publishing |c [2021] | |
300 | |a xxx, 792 Seiten |b Illustrationen | ||
336 | |b txt |2 rdacontent | ||
337 | |b n |2 rdamedia | ||
338 | |b nc |2 rdacarrier | ||
490 | 0 | |a Expert insight | |
650 | 0 | 7 | |a ASP.NET |0 (DE-588)4678758-6 |2 gnd |9 rswk-swf |
650 | 0 | 7 | |a Programmiersprache |0 (DE-588)4047409-4 |2 gnd |9 rswk-swf |
689 | 0 | 0 | |a Programmiersprache |0 (DE-588)4047409-4 |D s |
689 | 0 | 1 | |a ASP.NET |0 (DE-588)4678758-6 |D s |
689 | 0 | |5 DE-604 | |
776 | 0 | 8 | |i Erscheint auch als |n Online-Ausgabe |
856 | 4 | 2 | |m Digitalisierung UB Passau - ADAM Catalogue Enrichment |q application/pdf |u http://bvbr.bib-bvb.de:8991/F?func=service&doc_library=BVB01&local_base=BVB01&doc_number=033093365&sequence=000001&line_number=0001&func_code=DB_RECORDS&service_type=MEDIA |3 Inhaltsverzeichnis |
999 | |a oai:aleph.bib-bvb.de:BVB01-033093365 |
Datensatz im Suchindex
_version_ | 1804183207713701888 |
---|---|
adam_text | Table of Contents Preface xxv Chapter 1: Hello, C#! Welcome, .NET!ļ Setting up your development environment 2 Choosing the appropriate tool and application type for learning 3 Pros and cons of the .NET Interactive Notebooks extension Using Visual Studio Code for cross-platform development Using GitHub Codespaces for development in the cloud Using Visual Studio for Mac for general development Using Visual Studio for Windows for general development What I used 3 4 4 4 5 5 6 6 Deploying cross-platform Downloading and installing Visual Studio 2022 for Windows Microsoft Visual Studio for Windows keyboard shortcuts 7 Downloading and installing Visual Studio Code 7 Installing other extensions Understanding Microsoft Visual Studio Code versions Microsoft Visual Studio Code keyboard shortcuts Understanding .NET Understanding .NET Framework Understanding the Mono, Xamarin, and Unity projects Understanding .NET Core Understanding the journey to one .NET Understanding .NET support Understanding .NET Runtime and .NET SDK versions Removingoldversionsof.NET 9 9 10 10 10 11 11 12 13 14 14 What is different about modern .NET? Windows development Web development Database development 14 15 15 Themes of modern .NET Understanding .NET Standard .NET platforms and tools used by the book editions Understanding intermediate language Comparing .NET technologies Building console apps using Visual Studio 2022 Managing multiple projects using Visual Studio 2022 Writing code using Visual Studio 2022 Compiling and running code using Visual Studio
---------------------------------------------------------------------- 8 15 15 16 17 17 18 18 18 20 [v] -----------------------------------------------------------------------
Table of Contents Table of Contents Understanding the compiler-generated folders and files Writing top-ievel programs Adding a second project using Visual Studio 2022 Implicitly imported namespaces Building console apps using Visual Studio Code Managing multiple projects using Visual Studio Code Writing code using Visual Studio Code Compiling and running code using the dotnet CLI Adding a second project using Visual Studio Code Managing multiple files using Visual Studio Code Exploring code using .NET Interactive Notebooks Creating a notebook Writing and running code in a notebook Saving a notebook Adding Markdown and special commands to a notebook Executing code in multiple cells Using .NET Interactive Notebooks for the code in this book Reviewing the folders and files for projects Understanding the common folders and files Understanding the solution code on GitHub Making good use of the GitHub repository for this book Raising issues with the book Giving me feedback Downloading solution code from the GitHub repository Using Git with Visual Studio Code and the command line Cloning the book solution code repository Looking for help Reading Microsoft documentation Getting help for the dotnet tool Getting definitions of types and their members Looking for answers on Stack Overflow Searching for answers using Google Subscribing to the official .NET blog Watching Scott Hanselman s videos Practicing and exploring Exercise 1.1- Test your knowledge Exercise 1.2 - Practice C# anywhere Exercise 1.3- Explore topics Summary Chapter 2: Speaking C#_________________________ Introducing
the C# language Understanding language versions and features C#1.0 C#2.0 C#3.0 C#4.0 _---------------------------------------------------- —----------------- [vi] 21 21 22 22 24 24 24 27 27 29 29 30 31 32 32 33 34 34 35 36 36 36 37 37 38 38 39 39 39 40 42 43 43 43 43 43 44 44 45 47 47 47 48 48 48 48 C#5.0 C#6.0 C#7.0 C#7.1 C# 7.2 C# 7.3 C#8 C#9 C#10 49 49 49 49 50 50 50 50 50 Understanding C# standards Discovering your C# compiler versions How to output the SDK version Enabling a specific language version compiler Understanding C# grammar and vocabulary Showing the compiler version Understanding C# grammar Statements Comments Blocks Examples of statements and blocks Understanding C# vocabulary Comparing programming languages to human languages Changing the color scheme for C# syntax Help for writing correct code Importing namespaces Implicitly and globally importing namespaces Verbs are methods Nouns are types, variables, fields, and properties Revealing the extent of the C# vocabulary Working with variables Naming things and assigning values Literal values Storing text Understanding verbatim strings 51 51 52 52 53 53 55 55 55 56 56 57 57 57 58 59 59 62 62 63 65 66 66 66 67 Storing numbers 68 Storing whole numbers Exploring whole numbers 68 69 Storing real numbers 70 Writing code to explore number sizes Comparing double and decimal types 70 71 Storing Booleans Storing any type of object Storing dynamic types Declaring local variables 73 73 74 76 Specifying the type of a local variable Inferring the type of a local variable Using target-typed new to instantiate objects
Getting and setting the default values for types 76 76 78 78 [vii] - ---------------------------------------- --------------------------------- _
Table of Contents Table of Contents Storing multiple values in an array Exploring more about console applications Displaying output to the user Formatting using numbered positional arguments Formatting using interpolated strings Understanding format strings 79 80 81 81 82 82 Getting text input from the user 84 Simplifying the usage of the console 84 Getting key input from the user 85 Passing arguments to a console app 88 Setting options with arguments 88 Handling platforms that do not support an API 90 Practicing and exploring 91 Exercise 2.1- Test your knowledge 91 Exercise 2.2 ֊ Test your knowledge of number types 92 Exercise 2.3 - Practice number sizes and ranges 92 Exercise 2.4 - Explore topics 93 Summary 93 Chapter 3: Controlling Flow, Converting Types, and Handling Exceptions__ 95 Operating on variables 98 Exploring unary operators 96 Exploring binary arithmetic operators 97 Assignment operators 98 Exploring logical operators 98 Exploring conditional logical operators 100 Exploring bitwise and binary shift operators 101 Miscellaneous operators 103 Understanding selection statements 103 Branching with the if statement 104 Why you should always use braces with if statements Pattern matching with the if statement Branching with the switch statement Pattern matching with the switch statement Simplifying switch statements with switch expressions Understanding iteration statements Looping with the while statement Looping with the do statement Looping with the for statement Looping with the foreach statement 105 1θ8 106 108 199 110 11 ° 111 112 112 Understanding how foreach
works internally 113 Casting and converting between types Casting numbers implicitly and explicitly Converting with the System.Convert type Rounding numbers 113 114 115 118 Understanding the default rounding rules Taking control of rounding rules ------------------------------------- --------------------------------------------------------------------- [ VIII 1 117 Converting from any type to a string Converting from a binary object to a string Parsing from strings to numbers or dates and times 117 118 119 Errors using Parse Avoiding exceptions using the TryParse method 120 120 Handling exceptions Wrapping error-prone code in a try block 121 121 Catching all exceptions Catching specific exceptions Catching with filters 123 123 125 Checking for overflow Throwing overflow exceptions with the checked statement Disabling compiler overflow checks with the unchecked statement Practicing and exploring Exercise 3.1- Test your knowledge Exercise 3.2 - Explore loops and overflow Exercise 3.3 - Practice loops and operators Exercise 3.4 - Practice exception handling Exercise 3.5 - Test your knowledge of operators Exercise 3.6 - Explore topics Summary Chapter 4: Writing, Debugging, and Testing Functions___________________ Writing functions Times table example Writing a times table function 125 125 127 128 128 129 129 130 130 130 130 131 131 132 132 Writing a function that returns a value Converting numbers from cardinal to ordinal Calculating factorials with recursion Documenting functions with XML comments Using lambdas in function implementations Debugging during development Creating
code with a deliberate bug Setting a breakpoint and start debugging Using Visual Studio 2022 Using Visual Studio Code 134 136 137 140 141 144 144 145 145 146 Navigating with the debugging toolbar Debugging windows Stepping through code Customizing breakpoints Logging during development and runtime Understanding logging options Instrumenting with Debug and Trace Writing to the default trace listener 148 149 150 151 153 153 154 154 155 157 Configuring trace listeners Switching trace levels Adding packages to a project in Visual Studio Code Adding packages to a project in Visual Studio 2022 157 158 “------------------------------------------------------ [ix]--------
Table of Contents_____ __ ____________________________ ________________ __________________ ______ Reviewing project packages Unit testing Understanding types of testing Creating a class library that needs testing Writing unit tests Running unit tests using Visual Studio Code Running unit tests using Visual Studio Fix the bug Throwing and catching exceptions in functions Understanding usage errors and execution errors Commonly thrown exceptions in functions Understanding the call stack Where to catch exceptions Rethrowing exceptions Implementing the tester-doer pattern Problems with the tester-doer pattern Practicing and exploring Exercise 4.1- Test your knowledge Exercise 4.2 - Practice writing functions with debugging and unit testing Exercise 4.3 - Explore topics Summary Chapter 5: Building Your Own Types with Object-Oriented Programming Talking about OOP Building class libraries Creating a class library Defining a class in a namespace Simplifying namespace declarations 158 162 162 162 1 θ4 1 88 166 167 167 167 Ιθθ 171 17 178 173 174 174 174 175 175 I77 177 ^78 178 179 180 Understanding members Instantiating a class 181 184 Referencing an assembly 182 Importing a namespace to use a type Understanding objects Inheriting from System.Object Storing data within fields Defining fields Understanding access modifiers Setting and outputting field values Storing a value using an enum type Storing multiple values using an enum type Storing multiple values using collections Understanding generic collections Making a field static Making a field constant Making a field read-only
Initializing fields with constructors Defining multiple constructors -------------------------------------------------------------------------- [x] ---------- —------------------------------------------ 182 188 184 184 ^84 185 186 187 188 189 ^98 Ιθΐ I92 ^88 194 195 - _____________ _______________________________________________________________ Table of Contents Writing and calling methods Returning values from methods Combining multiple returned values using tuples Language support for tuples Naming the fields of a tuple Inferring tuple names Deconstructing tuples Deconstructing types 197 198 198 198 199 Defining and passing parameters to methods Overloading methods Passing optional and named parameters Naming parameter values when calling methods Controlling how parameters are passed 200 201 201 203 203 204 Simplified out parameters Understanding ref returns Splitting classes using partial Controlling access with properties and indexers Defining read-only properties Defining settable properties Requiring properties to be set during instantiation Defining indexers Pattern matching with objects Creating and referencing a .NET 6 class library Defining flight passengers Enhancements to pattern matching in C# 9 or later Working with records Init-only properties Understanding records Positional data members in records Simplifying data members in records 195 195 196 205 205 206 206 207 209 209 210 210 211 212 213 213 214 215 215 Practicing and exploring 216 Exercise 5.1 - Test your knowledge 217 Exercise 5.2 - Explore topics 217 Summary 217 Chapter 6: Implementing Interfaces and
Inheriting Classes_______________ 219 Setting up a class library and console application 220 More about methods 221 Implementing functionality using methods 221 Implementing functionality using operators 223 Implementing functionality using local functions 224 Raising and handling events 225 Calling methods using delegates 226 Defining and handling delegates 227 Defining and handling events 229 Making types safely reusable with generics 230 Working with non-generic types 230 - ---------- -------------------------------------------------------------- [Xi] ---------
Table of Contents Table of Contents Working with generic types Implementing interfaces Common interfaces Comparing objects when sorting Comparing objects using a separate class Implicit and explicit interface implementations Defining interfaces with default implementations Managing memory with reference and value types Defining reference and value types How reference and value types are stored in memory Equality of types Defining struct types Working with record struct types Releasing unmanaged resources Ensuring that Dispose is called Working with null values Making a value type nullable Understanding nullable reference types Enabling nullable and non-nullable reference types Declaring non-nullable variables and parameters Checking for null Checking for null in method parameters Inheriting from classes Extending classes to add functionality Hiding members Overriding members Inheriting from abstract classes Preventing inheritance and overriding Understanding polymorphism Casting within inheritance hierarchies Implicit casting Explicit casting Avoiding casting exceptions Inheriting and extending .NET types Inheriting exceptions Extending types when you can t inherit Using static methods to reuse functionality Using extension methods to reuse functionality Using an analyzer to write better code Suppressing warnings Fixing the code Understanding common StyleCop recommendations Practicing and exploring Exercise 6.1 - Test your knowledge Exercise 6.2 - Practice creating an inheritance hierarchy Exercise 6.3 - Explore topics 231 232 232 233 235 236 237 239 239 240 241 242 243 244
246 246 246 247 248 248 250 251 252 252 253 254 255 256 257 259 259 259 260 261 261 263 263 264 265 267 268 270 271 271 271 272 Summary Chapter 7: Packaging and Distributing .NET Types The road to .NET 6 .NET Core 1.0 .NET Core 1.1 .NET Core 2.0 .NET Core 2.1 .NET Core 2.2 .NET Core 3.0 .NET Core 3.1 .NET 5.0 .NET 6.0 Improving performance from .NET Core 2.0 to .NET 5 Checking your .NET SDKs for updates Understanding .NET components Understanding assemblies, NuGet packages, and namespaces What is a namespace? Understanding dependent assemblies Understanding the Microsoft .NET project SDKs Understanding namespaces and types in assemblies Understanding NuGet packages Understanding frameworks Importing a namespace to use a type Relating C# keywords to .NET types Mapping C# aliases to .NET types Revealing the location of a type Sharing code with legacy platforms using .NET Standard Understanding defaults for class libraries with different SDKs Creating a .NET Standard 2.0 class library Controlling the .NET SDK Publishing your code for deployment Creating a console application to publish Understanding dotnet commands Creating new projects Getting information about .NET and its environment Managing projects Publishing a self-contained app Publishing a single-file app Reducing the size of apps using app trimming Enabling assembly-level trimming Enabling type-level and member-level trimming Decompiling .NET assemblies Decompiling using the ILSpy extension for Visual Studio 2022 Decompiling using the ILSpy extension for Visual Studio Code No, you cannot technically prevent
decompilation Packaging your libraries for NuGet distribution 272 ________ 273 273 274 274 275 275 275 275 276 276 276 277 277 277 278 278 278 278 279 280 280 281 281 282 283 284 284 285 286 287 288 289 289 290 291 292 293 295 295 295 296 296 297 301 302
__________________________ _____ _ _____ __________________________________________ ________ Table of Contents Table of Contents__________ __________ _______________________________________________ _______________ Referencing a NuGet package Fixing dependencies Packaging a library for NuGet Publishing a package to a public NuGet feed Publishing a package to a private NuGet feed Exploring NuGet packages with a tool Testing your class library package Porting from .NET Framework to modern .NET Could you port? Should you port? Differences between .NET Frameworkand modern .NET Understanding the .NET Portability Analyzer Understanding the .NET Upgrade Assistant Using non-.NET Standard libraries Working with preview features Requiring preview features Enabling preview features Generic mathematics Practicing and exploring Exercise 7.1 - Test your knowledge Exercise 7.2 - Explore topics Exercise 7.3 - Explore PowerShell Summary Chapter 8: Working with Common .NET Types Working with numbers Working with big integers Working with complex numbers Understanding quaternions Working with text Getting the length of a string Getting the characters of a string Splitting a string Getting part of a string Checking a string for content Joining, formatting, and other string members Building strings efficiently Working with dates and times Specifying date and time values Globalization with dates and times Working with only a date or a time Pattern matching with regular expressions Checking for digits entered as text Regular expression performance improvements Understanding the syntax of a
regularexpression Examples of regular expressions -------------------------------------------------------------------------- [ xiv ] 302 3θ3 304 3θθ 307 307 308 309 309 310 311 311 311 312 313 314 314 315 315 316 316 316 316 317 318 318 319 320 320 320 321 321 322 323 323 324 325 325 327 329 330 330 331 332 332 Splitting a complex comma-separated string Storing multiple objects in collections Common features of all collections Improving performance by ensuring the capacity of a collection Understanding collection choices 333 334 335 336 337 337 33g 339 339 340 340 Lists Dictionaries Stacks Queues Sets Collection methods summary Working with lists Working with dictionaries Working with queues Sorting collections More specialized collections 340 342 344 346 347 Working with a compact array of bit values Working with efficient lists 347 347 Using immutable collections Good practice with collections Working with spans, indexes, and ranges Using memory efficiently using spans Identifying positions with the Index type Identifying ranges with the Range type Using indexes, ranges, and spans Working with network resources Working with URIs, DNS, and IP addresses Pinging a server Working with reflection and attributes Versioning of assemblies Reading assembly metadata Creating custom attributes Doing more with reflection Working with images Internationalizing your code Detecting and changing the current culture Practicing and exploring Exercise 8.1 - Test your knowledge Exercise 8.2 - Practice regular expressions Exercise 8.3 - Practice writing extension methods Exercise 8.4 -
Explore topics Summary 347 348 349 349 349 350 350 351 352 353 354 355 355 358 Յ6Օ 36О 362 363 365 365 366 366 Յ66 3θτ Chapter 9: Working with Files, Streams, and Serialization_______________ 369 Managing the filesystem Handling cross-platform environments and filesystems Managing drives 369 369 371 [xv]------------------------------------------------------- —------- --—
Table of Contents Managing directories Managing files Managing paths Getting file information Controlling how you work with files Reading and writing with streams Understanding abstract and concrete streams Understanding storage streams Understanding function streams Understanding stream helpers Writing to text streams Writing to XML streams Disposing of file resources Simplifying disposal by using the using statement Compressing streams Compressing with the Brotli algorithm Encoding and decoding text Encoding strings as byte arrays Encoding and decoding text in files Serializing object graphs Serializing as XML Generating compact XML Deserializing XML files Serializing with JSON High-performance JSON processing Controlling JSON processing New JSON extension methods for working with HTTP responses Migrating from Newtonsoft to new JSON Practicing and exploring Exercise 9.1 - Test your knowledge Exercise 9.2 - Practice serializing as XML Exercise 9.3 - Explore topics Summary Table of Contents 372 374 375 376 377 378 378 379 379 379 380 381 383 385 386 388 390 391 393 394 394 397 398 399 400 401 404 404 405 405 405 406 406 Chapter 10: Working with Data Using Entity Framework Core____________407 Understanding modern databases Understanding legacy Entity Framework Using the legacy Entity Framework 6.3 or later Understanding Entity Framework Core Creating a console app for working with EF Core Using a sample relational database Using Microsoft SQL Server for Windows Downloading and installing SQL Server Creating the Northwind sample database for SQL Server Managing the Northwind
sample database with Server Explorer Using SQLite Setting up SQLite for macOS 407 408 408 408 409 409 410 411 412 413 414 414 Setting up SQLite for Windows Setting up SQLite for other OSes Creating the Northwind sample database for SQLite Managing the Northwind sample database with SQLiteStudio Setting up EF Core Choosing an EF Core database provider Connecting to a database Defining the Northwind database context class Defining EF Core models Using EF Core conventions to define the model Using EF Core annotation attributes to define the model Using the EF Core Fluent API to define the model Understanding data seeding with the Fluent API Building an EF Core model for the Northwind tables Defining the Category and Product entity classes Adding tables to the Northwind database context class Setting up the dotnet-ef tool Scaffolding models using an existing database Configuring preconvention models Querying EF Core models Filtering included entities Unicode characters in the Windows console Filtering and sorting products Getting the generated SQL Logging EF Core using a custom logging provider Filtering logs by provider-specific values Logging with query tags Pattern matching with Like Defining global filters Loading patterns with EF Core Eager loading entities Enabling lazy loading Explicit loading entities Manipulating data with EF Core Inserting entities Updating entities Deleting entities Pooling database contexts Working with transactions Controlling transactions using isolation levels Defining an explicit transaction Code First EF Core models Understanding migrations
Practicing and exploring Exercise 10.1- Test your knowledge Exercise 10.2 - Practice exporting data using different serialization formats 414 414 415 415 417 417 417 418 420 421 421 423 423 423 424 426 427 428 432 433 435 436 437 438 439 442 443 444 445 446 446 447 448 450 450 452 453 454 454 455 455 456 463 464 464 464
Table of Contents ____________________ ____________ Exercise 10.3 - Explore topics Exercise 10.4 - Explore NoSQL databases Summary 464 465 465 Chapter 11: Querying and Manipulating Data Using LINQ______________ 467 Writing LINQ expressions What makes LINQ? Building LINQ expressions with the Enumerable class 467 467 468 Understanding deferred execution 470 Filtering entities with Where Targeting a named method Simplifying the code by removing the explicit delegate instantiation Targeting a lambda expression Sorting entities 471 473 474 474 475 Sorting by a single property using OrderBy Sorting by a subsequent property using ThenBy Declaring a query using var or a specified type Filtering by type Working with sets and bags using LINQ Using LINQ with EF Core Building an EF Core model Filtering and sorting sequences Projecting sequences into new types Joining and grouping sequences 475 475 476 476 478 480 480 483 485 486 Joining sequences Group-joining sequences 487 488 Aggregating sequences Sweetening LINQ syntax with syntactic sugar Using multiple threads with parallel LINQ Creating an app that benefits from multiple threads Using Windows Using macOS For all operating systems 490 491 492 492 494 494 494 Creating your own LINQ extension methods Trying the chainable extension method Trying the mode and median methods 495 498 498 Working with LINQ to XML Generating XML using LINQ to XML Reading XML using LINQ to XML Practicing and exploring Exercise 11.1֊ Test your knowledge Exercise 11.2- Practice querying with LINQ Exercise 11.3- Explore topics Summary Chapter 12: Improving
Performance and Scalability Using Multitasking Understanding processes, threads, and tasks Monitoring performance and resource usage ■[ xviii ] 499 499 500 501 501 502 503 503 505 505 506 Table of Contents Evaluating the efficiency of types Monitoring performance and memory using diagnostics Useful members of the Stopwatch and Process types Implementing a Recorder class Measuring the efficiency of processing strings Monitoring performance and memory using Benchmark.NET Running tasks asynchronously Running multiple actions synchronously Running multiple actions asynchronously using tasks Starting tasks 506 507 508 508 510 512 516 516 518 5-13 Waiting for tasks 519 519 Using wait methods with tasks Continuing with another task Nested and child tasks Wrapping tasks around other objects Synchronizing access to shared resources Accessing a resource from multiple threads Applying a mutually exclusive lock to a conch Understanding the lock statement Avoiding deadlocks 520 522 523 524 525 526 527 տշջ Synchronizing events Making CPU operations atomic Applying other types of synchronization Understanding async and await Improving responsiveness for console apps Improving responsiveness for GUI apps Improving scalability for web applications and web services Common types that support multitasking Using await in catch blocks Working with async streams Practicing and exploring Exercise 12.1- Test your knowledge Exercise 12.2 - Explore topics Summary 529 530 531 532 532 533 537 537 537 538 539 539 539 539 Chapter 13: Introducing Practical Applications of C# and .NET___________541
Understanding app models for C# and .NET Building websites using ASP.NET Core Building websites using a content management system Building web applications using SPA frameworks Building web and other services Building mobile and desktop apps Alternatives to .NET MAUI 541 542 542 543 544 545 545 Understanding Uno Platform Understanding Avaionia 545 543 New features in ASP.NET Core ASP.NET Core 1.0 546 546 — [ xix 1
Table of Contents Table of Contents______ _____________________________________________ ______________________________________ ASP.NET Core 1.1 ASP.NET Core 2.0 ASP.NET Core 2.1 ASP.NET Core 2.2 ASP.NET Core 3.0 ASP.NET Core 3.1 Blazor WebAssembly 3.2 ASP.NET Core 5.0 ASP.NET Core 6.0 Building Windows-only desktop apps Understanding legacy Windows application platforms Understanding modern .NET support for legacy Windows platforms Structuring projects Structuring projects in a solution or workspace Using other project templates Installing additional template packs Building an entity data model for the Northwind database Creating a class library for entity models using SQLite Improving the class-to-table mapping Creating a class library for a Northwind database context Creating a class library for entity models using SQL Server Practicing and exploring Exercise 13.1- Test your knowledge Exercise 13.2 ֊ Explore topics Summary 546 546 547 547 548 548 548 548 548 549 549 550 550 551 552 552 553 554 555 559 562 565 565 565 565 Chapter 14: Building Websites Using ASP.NET Core Razor Pages________ 567 Understanding web development Understanding HTTP 567 887 Understanding the components of a URL Assigning port numbers for projects in this book Using Google Chrome to make HTTP requests Understanding client-side web development technologies Understanding ASP.NET Core ClassicASP.NET versus modernASP.NET Core Creating an empty ASP.NET Core project Testing and securing the website Enabling stronger security and redirect to a secure connection Controlling the hosting environment
Separating configuration for services and pipeline Enabling a website to serve static content Creating a folder for static files and a web page Enabling static and default files Exploring ASP.NET Core Razor Pages Enabling Razor Pages Adding code to a Razor Page Using shared layouts with Razor Pages - [xx] 568 569 569 572 572 573 574 576 579 580 582 584 584 585 586 586 587 588 Using code-behind files with Razor Pages Using Entity Framework Core with ASP.NET Core Configure Entity Framework Core as a service Manipulating data using Razor Pages Enabling a model to insert entities Defining a form to insert a new supplier Injecting a dependency service into a Razor Page Using Razor class libraries Creating a Razor class library Disabling compact folders for Visual Studio Code Implementing the employees feature using EF Core Implementing a partial view to show a single employee Using and testing a Razor class library Configuring services and the HTTP request pipeline Understanding endpoint routing Configuring endpoint routing 591 593 593 596 595 597 597 59g 598 599 600 602 603 604 604 595 Reviewing the endpoint routing configuration in our project Registering services in the ConfigureServices method Setting up the HTTP request pipeline in the Configure method Summarizing key middlewareextension methods Visualizing the HTTP pipeline Implementing an anonymous inline delegate as middleware Practicing and exploring Exercise 14.1 - Test your knowledge Exercise 14.2 - Practice building a data-driven web page Exercise 14.3 - Practice building web pages for console apps Exercise 14.4 -
Explore topics Summary Chapter 15: Building Websites Using the Model-View-Controller Pattern 605 606 608 609 610 610 612 612 613 613 613 613 615 Setting up an ASP.NET Core MVC website Creating an ASP.NET Core MVC website Creating the authentication database for SQL Server LocalDB Exploring the default ASP.NET Core MVC website Understanding visitor registration Reviewing an MVC website project structure Reviewing the ASP.NET Core Identity database Exploring an ASP.NET Core MVC website Understanding ASP.NET Core MVC initialization Understanding the default MVC route Understanding controllers and actions Understanding the ControllerBase class Understanding the Controller class Understanding the responsibilities of a controller Understanding the view search path convention Understanding logging Understanding filters 615 616 617 618 619 620 622 622 622 625 626 626 627 628 629 630 631 [ xxi ]--------------
Table of Contents Table of Contents Using a filter to secure an action method Enabling role management and creating a role programmatically Using a filter to cache a response Using a filter to define a custom route Understanding entity and view models Understanding views Customizing an ASP.NET Core MVCwebsite Defining a custom style Setting up the category images Understanding Razor syntax Defining a typed view Reviewing the customized home page Passing parameters using a route value Understanding model binders in more detail Disambiguating action methods Passing a route parameter Passing a form parameter Validating the model Understanding view helper methods Querying a database and using display templates Improving scalability using asynchronous tasks Making controller action methods asynchronous Practicing and exploring Exercise 15.1- Test your knowledge Exercise 15.2 - Practice implementing MVC by implementing a category detail page Exercise 15.3 - Practice improving scalability by understanding and implementing async action methods Exercise 15.4 - Practice unit testing MVC controllers Exercise 15.5 - Explore topics Summary 631 632 635 636 637 640 643 643 643 643 644 647 648 650 652 654 654 654 657 659 662 662 663 663 664 664 665 665 665 Chapter 16: Building and Consuming Web Services____________________667 Building web services using ASP.NET Core Web API Understanding web service acronyms 667 667 Understanding Windows Communication Foundation (WCF) An alternative to WCF 668 668 Understanding HTTP requests and responses for Web APIs Creating an ASP.NET Core Web API
project Reviewing the web service s functionality Creating a web service for the Northwind database Creating data repositories for entities Implementing a Web API controller Understanding action method return types Configuring the customer repository and Web API controller Specifying problem details Controlling XML serialization Documenting and testing web services 669 671 674 675 677 681 681 683 687 688 688 — --------------- ---------------------------------------------------------- [ xxii ]------------------------------------------------------- ----- ----------------- Testing GET requests using a browser Testing HTTP requests with the REST Client extension 688 690 Making GET requests using REST Client Making other requests using REST Client 690 692 Understanding Swagger Testing requests with Swagger UI Enabling HTTP logging Consuming web services using HTTP clients Understanding HttpCIient Configuring HTTP clients using HttpCIientFactory Getting customers as JSON in the controller Enabling Cross-Origin Resource Sharing Implementing advanced features for web services Implementing a Health Check API Implementing Open API analyzers and conventions Implementing transient fault handling Adding security HTTP headers Building web services using minimal APIs Building a weather service using minimal APIs Testing the minimal weather service Adding weather forecasts to the Northwind website home page Practicing and exploring Exercise 16.1 - Test your knowledge Exercise 16.2 - Practice creating and deleting customers with HttpCIient Exercise 16.3 - Explore topics Summary 693 694 700
702 702 702 703 705 707 708 709 709 710 711 712 714 714 716 716 717 717 717 Chapter 17: Building User Interfaces Using Blazor 719 Understanding Blazor JavaScript and friends Silverlight - C# and .NET using a plugin WebAssembly - a target for Blazor Understanding Blazor hosting models Understanding Blazor components What is the difference between Blazor and Razor? Comparing Blazor project templates Reviewing the Blazor Server project template Understanding CSS and JavaScript isolation 719 720 720 720 720 721 722 723 723 729 Understanding Blazor routing to page components How to define a routable page component How to navigate Blazor routes How to pass route parameters Understanding base component classes How to use the navigation link component with routes Running the Blazor Server project template Reviewing the Blazor WebAssembly project template Building components using Blazor Server 729 729 729 730 730 732 732 733 737 ֊[ xxiij ]--------------------------------------------------------- ------- ------ —----
Table of Contents Defining and testing a simple component Making the component a routable page component Getting entities into a component Abstracting a service for a Blazor component Defining forms using the EditForm component Building and using a customer form component Testing the customer form component Building components using Blazor WebAssembly Configuring the server for Blazor WebAssembly Configuring the client for Blazor WebAssembly Testing the Blazor WebAssembly components and service Improving Blazor WebAssembly apps Enabling Blazor WebAssembly ACT Exploring Progressive Web App support 737 738 739 742 745 746 749 750 751 754 757 758 759 760 762 Implementing offline support for PWAs Understanding the browser compatibility analyzer for Blazor WebAssembly Sharing Blazor components in a class library Interop with JavaScript Libraries of Blazor components Practicing and exploring Exercise 17.1 - Test your knowledge Exercise 17.2 - Practice by creating a times table component Exercise 17.3 - Practice by creating a country navigation item Exercise 17.4 - Explore topics Summary Epilogue Next steps on your C# and .NET learning journey Polishing your skills with design guidelines Books to take your learning further .NET MAUI delayed Next edition coming November 2022 Good luck! Index 762 763 765 767 767 768 768 768 769 769 771 771 771 772 773 773 773 775 Online Chapters___________________________________________ Chapter 18: Building and Consuming Specialized Services (Available Online) Chapter 19: Building Mobile and Desktop Apps Using .NET MAUI (Available
Online)____________________________________________________________ Chapter 20: Protecting Your Data and Applications (Available Online)________ Appendix A: Answers to the Test Your Knowledge Questions (Available Online) [ xxiv ]
|
adam_txt |
Table of Contents Preface xxv Chapter 1: Hello, C#! Welcome, .NET!ļ Setting up your development environment 2 Choosing the appropriate tool and application type for learning 3 Pros and cons of the .NET Interactive Notebooks extension Using Visual Studio Code for cross-platform development Using GitHub Codespaces for development in the cloud Using Visual Studio for Mac for general development Using Visual Studio for Windows for general development What I used 3 4 4 4 5 5 6 6 Deploying cross-platform Downloading and installing Visual Studio 2022 for Windows Microsoft Visual Studio for Windows keyboard shortcuts 7 Downloading and installing Visual Studio Code 7 Installing other extensions Understanding Microsoft Visual Studio Code versions Microsoft Visual Studio Code keyboard shortcuts Understanding .NET Understanding .NET Framework Understanding the Mono, Xamarin, and Unity projects Understanding .NET Core Understanding the journey to one .NET Understanding .NET support Understanding .NET Runtime and .NET SDK versions Removingoldversionsof.NET 9 9 10 10 10 11 11 12 13 14 14 What is different about modern .NET? Windows development Web development Database development 14 15 15 Themes of modern .NET Understanding .NET Standard .NET platforms and tools used by the book editions Understanding intermediate language Comparing .NET technologies Building console apps using Visual Studio 2022 Managing multiple projects using Visual Studio 2022 Writing code using Visual Studio 2022 Compiling and running code using Visual Studio
---------------------------------------------------------------------- 8 15 15 16 17 17 18 18 18 20 [v] -----------------------------------------------------------------------
Table of Contents Table of Contents Understanding the compiler-generated folders and files Writing top-ievel programs Adding a second project using Visual Studio 2022 Implicitly imported namespaces Building console apps using Visual Studio Code Managing multiple projects using Visual Studio Code Writing code using Visual Studio Code Compiling and running code using the dotnet CLI Adding a second project using Visual Studio Code Managing multiple files using Visual Studio Code Exploring code using .NET Interactive Notebooks Creating a notebook Writing and running code in a notebook Saving a notebook Adding Markdown and special commands to a notebook Executing code in multiple cells Using .NET Interactive Notebooks for the code in this book Reviewing the folders and files for projects Understanding the common folders and files Understanding the solution code on GitHub Making good use of the GitHub repository for this book Raising issues with the book Giving me feedback Downloading solution code from the GitHub repository Using Git with Visual Studio Code and the command line Cloning the book solution code repository Looking for help Reading Microsoft documentation Getting help for the dotnet tool Getting definitions of types and their members Looking for answers on Stack Overflow Searching for answers using Google Subscribing to the official .NET blog Watching Scott Hanselman's videos Practicing and exploring Exercise 1.1- Test your knowledge Exercise 1.2 - Practice C# anywhere Exercise 1.3- Explore topics Summary Chapter 2: Speaking C#_ Introducing
the C# language Understanding language versions and features C#1.0 C#2.0 C#3.0 C#4.0 _---------------------------------------------------- —----------------- [vi] 21 21 22 22 24 24 24 27 27 29 29 30 31 32 32 33 34 34 35 36 36 36 37 37 38 38 39 39 39 40 42 43 43 43 43 43 44 44 45 47 47 47 48 48 48 48 C#5.0 C#6.0 C#7.0 C#7.1 C# 7.2 C# 7.3 C#8 C#9 C#10 49 49 49 49 50 50 50 50 50 Understanding C# standards Discovering your C# compiler versions How to output the SDK version Enabling a specific language version compiler Understanding C# grammar and vocabulary Showing the compiler version Understanding C# grammar Statements Comments Blocks Examples of statements and blocks Understanding C# vocabulary Comparing programming languages to human languages Changing the color scheme for C# syntax Help for writing correct code Importing namespaces Implicitly and globally importing namespaces Verbs are methods Nouns are types, variables, fields, and properties Revealing the extent of the C# vocabulary Working with variables Naming things and assigning values Literal values Storing text Understanding verbatim strings 51 51 52 52 53 53 55 55 55 56 56 57 57 57 58 59 59 62 62 63 65 66 66 66 67 Storing numbers 68 Storing whole numbers Exploring whole numbers 68 69 Storing real numbers 70 Writing code to explore number sizes Comparing double and decimal types 70 71 Storing Booleans Storing any type of object Storing dynamic types Declaring local variables 73 73 74 76 Specifying the type of a local variable Inferring the type of a local variable Using target-typed new to instantiate objects
Getting and setting the default values for types 76 76 78 78 [vii] - ---------------------------------------- --------------------------------- _
Table of Contents Table of Contents Storing multiple values in an array Exploring more about console applications Displaying output to the user Formatting using numbered positional arguments Formatting using interpolated strings Understanding format strings 79 80 81 81 82 82 Getting text input from the user 84 Simplifying the usage of the console 84 Getting key input from the user 85 Passing arguments to a console app 88 Setting options with arguments 88 Handling platforms that do not support an API 90 Practicing and exploring 91 Exercise 2.1- Test your knowledge 91 Exercise 2.2 ֊ Test your knowledge of number types 92 Exercise 2.3 - Practice number sizes and ranges 92 Exercise 2.4 - Explore topics 93 Summary 93 Chapter 3: Controlling Flow, Converting Types, and Handling Exceptions_ 95 Operating on variables 98 Exploring unary operators 96 Exploring binary arithmetic operators 97 Assignment operators 98 Exploring logical operators 98 Exploring conditional logical operators 100 Exploring bitwise and binary shift operators 101 Miscellaneous operators 103 Understanding selection statements 103 Branching with the if statement 104 Why you should always use braces with if statements Pattern matching with the if statement Branching with the switch statement Pattern matching with the switch statement Simplifying switch statements with switch expressions Understanding iteration statements Looping with the while statement Looping with the do statement Looping with the for statement Looping with the foreach statement 105 1θ8 106 108 199 110 11 ° 111 112 112 Understanding how foreach
works internally 113 Casting and converting between types Casting numbers implicitly and explicitly Converting with the System.Convert type Rounding numbers 113 114 115 118 Understanding the default rounding rules Taking control of rounding rules ------------------------------------- --------------------------------------------------------------------- [ VIII 1 117 Converting from any type to a string Converting from a binary object to a string Parsing from strings to numbers or dates and times 117 118 119 Errors using Parse Avoiding exceptions using the TryParse method 120 120 Handling exceptions Wrapping error-prone code in a try block 121 121 Catching all exceptions Catching specific exceptions Catching with filters 123 123 125 Checking for overflow Throwing overflow exceptions with the checked statement Disabling compiler overflow checks with the unchecked statement Practicing and exploring Exercise 3.1- Test your knowledge Exercise 3.2 - Explore loops and overflow Exercise 3.3 - Practice loops and operators Exercise 3.4 - Practice exception handling Exercise 3.5 - Test your knowledge of operators Exercise 3.6 - Explore topics Summary Chapter 4: Writing, Debugging, and Testing Functions_ Writing functions Times table example Writing a times table function 125 125 127 128 128 129 129 130 130 130 130 131 131 132 132 Writing a function that returns a value Converting numbers from cardinal to ordinal Calculating factorials with recursion Documenting functions with XML comments Using lambdas in function implementations Debugging during development Creating
code with a deliberate bug Setting a breakpoint and start debugging Using Visual Studio 2022 Using Visual Studio Code 134 136 137 140 141 144 144 145 145 146 Navigating with the debugging toolbar Debugging windows Stepping through code Customizing breakpoints Logging during development and runtime Understanding logging options Instrumenting with Debug and Trace Writing to the default trace listener 148 149 150 151 153 153 154 154 155 157 Configuring trace listeners Switching trace levels Adding packages to a project in Visual Studio Code Adding packages to a project in Visual Studio 2022 157 158 “------------------------------------------------------ [ix]--------
Table of Contents_ _ _ _ _ _ Reviewing project packages Unit testing Understanding types of testing Creating a class library that needs testing Writing unit tests Running unit tests using Visual Studio Code Running unit tests using Visual Studio Fix the bug Throwing and catching exceptions in functions Understanding usage errors and execution errors Commonly thrown exceptions in functions Understanding the call stack Where to catch exceptions Rethrowing exceptions Implementing the tester-doer pattern Problems with the tester-doer pattern Practicing and exploring Exercise 4.1- Test your knowledge Exercise 4.2 - Practice writing functions with debugging and unit testing Exercise 4.3 - Explore topics Summary Chapter 5: Building Your Own Types with Object-Oriented Programming Talking about OOP Building class libraries Creating a class library Defining a class in a namespace Simplifying namespace declarations 158 162 162 162 1 θ4 1 88 166 167 167 167 Ιθθ 171 17 178 173 174 174 174 175 175 I77 177 ^78 178 179 180 Understanding members Instantiating a class 181 184 Referencing an assembly 182 Importing a namespace to use a type Understanding objects Inheriting from System.Object Storing data within fields Defining fields Understanding access modifiers Setting and outputting field values Storing a value using an enum type Storing multiple values using an enum type Storing multiple values using collections Understanding generic collections Making a field static Making a field constant Making a field read-only
Initializing fields with constructors Defining multiple constructors -------------------------------------------------------------------------- [x] ---------- —------------------------------------------ 182 188 184 184 ^84 185 186 187 188 189 ^98 Ιθΐ I92 ^88 194 195 - _ _ Table of Contents Writing and calling methods Returning values from methods Combining multiple returned values using tuples Language support for tuples Naming the fields of a tuple Inferring tuple names Deconstructing tuples Deconstructing types 197 198 198 198 199 Defining and passing parameters to methods Overloading methods Passing optional and named parameters Naming parameter values when calling methods Controlling how parameters are passed 200 201 201 203 203 204 Simplified out parameters Understanding ref returns Splitting classes using partial Controlling access with properties and indexers Defining read-only properties Defining settable properties Requiring properties to be set during instantiation Defining indexers Pattern matching with objects Creating and referencing a .NET 6 class library Defining flight passengers Enhancements to pattern matching in C# 9 or later Working with records Init-only properties Understanding records Positional data members in records Simplifying data members in records 195 195 196 205 205 206 206 207 209 209 210 210 211 212 213 213 214 215 215 Practicing and exploring 216 Exercise 5.1 - Test your knowledge 217 Exercise 5.2 - Explore topics 217 Summary 217 Chapter 6: Implementing Interfaces and
Inheriting Classes_ 219 Setting up a class library and console application 220 More about methods 221 Implementing functionality using methods 221 Implementing functionality using operators 223 Implementing functionality using local functions 224 Raising and handling events 225 Calling methods using delegates 226 Defining and handling delegates 227 Defining and handling events 229 Making types safely reusable with generics 230 Working with non-generic types 230 - ---------- -------------------------------------------------------------- [Xi] ---------
Table of Contents Table of Contents Working with generic types Implementing interfaces Common interfaces Comparing objects when sorting Comparing objects using a separate class Implicit and explicit interface implementations Defining interfaces with default implementations Managing memory with reference and value types Defining reference and value types How reference and value types are stored in memory Equality of types Defining struct types Working with record struct types Releasing unmanaged resources Ensuring that Dispose is called Working with null values Making a value type nullable Understanding nullable reference types Enabling nullable and non-nullable reference types Declaring non-nullable variables and parameters Checking for null Checking for null in method parameters Inheriting from classes Extending classes to add functionality Hiding members Overriding members Inheriting from abstract classes Preventing inheritance and overriding Understanding polymorphism Casting within inheritance hierarchies Implicit casting Explicit casting Avoiding casting exceptions Inheriting and extending .NET types Inheriting exceptions Extending types when you can't inherit Using static methods to reuse functionality Using extension methods to reuse functionality Using an analyzer to write better code Suppressing warnings Fixing the code Understanding common StyleCop recommendations Practicing and exploring Exercise 6.1 - Test your knowledge Exercise 6.2 - Practice creating an inheritance hierarchy Exercise 6.3 - Explore topics 231 232 232 233 235 236 237 239 239 240 241 242 243 244
246 246 246 247 248 248 250 251 252 252 253 254 255 256 257 259 259 259 260 261 261 263 263 264 265 267 268 270 271 271 271 272 Summary Chapter 7: Packaging and Distributing .NET Types The road to .NET 6 .NET Core 1.0 .NET Core 1.1 .NET Core 2.0 .NET Core 2.1 .NET Core 2.2 .NET Core 3.0 .NET Core 3.1 .NET 5.0 .NET 6.0 Improving performance from .NET Core 2.0 to .NET 5 Checking your .NET SDKs for updates Understanding .NET components Understanding assemblies, NuGet packages, and namespaces What is a namespace? Understanding dependent assemblies Understanding the Microsoft .NET project SDKs Understanding namespaces and types in assemblies Understanding NuGet packages Understanding frameworks Importing a namespace to use a type Relating C# keywords to .NET types Mapping C# aliases to .NET types Revealing the location of a type Sharing code with legacy platforms using .NET Standard Understanding defaults for class libraries with different SDKs Creating a .NET Standard 2.0 class library Controlling the .NET SDK Publishing your code for deployment Creating a console application to publish Understanding dotnet commands Creating new projects Getting information about .NET and its environment Managing projects Publishing a self-contained app Publishing a single-file app Reducing the size of apps using app trimming Enabling assembly-level trimming Enabling type-level and member-level trimming Decompiling .NET assemblies Decompiling using the ILSpy extension for Visual Studio 2022 Decompiling using the ILSpy extension for Visual Studio Code No, you cannot technically prevent
decompilation Packaging your libraries for NuGet distribution 272 _ 273 273 274 274 275 275 275 275 276 276 276 277 277 277 278 278 278 278 279 280 280 281 281 282 283 284 284 285 286 287 288 289 289 290 291 292 293 295 295 295 296 296 297 301 302
_ _ _ _ _ _ Table of Contents Table of Contents_ _ _ _ Referencing a NuGet package Fixing dependencies Packaging a library for NuGet Publishing a package to a public NuGet feed Publishing a package to a private NuGet feed Exploring NuGet packages with a tool Testing your class library package Porting from .NET Framework to modern .NET Could you port? Should you port? Differences between .NET Frameworkand modern .NET Understanding the .NET Portability Analyzer Understanding the .NET Upgrade Assistant Using non-.NET Standard libraries Working with preview features Requiring preview features Enabling preview features Generic mathematics Practicing and exploring Exercise 7.1 - Test your knowledge Exercise 7.2 - Explore topics Exercise 7.3 - Explore PowerShell Summary Chapter 8: Working with Common .NET Types Working with numbers Working with big integers Working with complex numbers Understanding quaternions Working with text Getting the length of a string Getting the characters of a string Splitting a string Getting part of a string Checking a string for content Joining, formatting, and other string members Building strings efficiently Working with dates and times Specifying date and time values Globalization with dates and times Working with only a date or a time Pattern matching with regular expressions Checking for digits entered as text Regular expression performance improvements Understanding the syntax of a
regularexpression Examples of regular expressions -------------------------------------------------------------------------- [ xiv ] 302 3θ3 304 3θθ 307 307 308 309 309 310 311 311 311 312 313 314 314 315 315 316 316 316 316 317 318 318 319 320 320 320 321 321 322 323 323 324 325 325 327 329 330 330 331 332 332 Splitting a complex comma-separated string Storing multiple objects in collections Common features of all collections Improving performance by ensuring the capacity of a collection Understanding collection choices 333 334 335 336 337 337 33g 339 339 340 340 Lists Dictionaries Stacks Queues Sets Collection methods summary Working with lists Working with dictionaries Working with queues Sorting collections More specialized collections 340 342 344 346 347 Working with a compact array of bit values Working with efficient lists 347 347 Using immutable collections Good practice with collections Working with spans, indexes, and ranges Using memory efficiently using spans Identifying positions with the Index type Identifying ranges with the Range type Using indexes, ranges, and spans Working with network resources Working with URIs, DNS, and IP addresses Pinging a server Working with reflection and attributes Versioning of assemblies Reading assembly metadata Creating custom attributes Doing more with reflection Working with images Internationalizing your code Detecting and changing the current culture Practicing and exploring Exercise 8.1 - Test your knowledge Exercise 8.2 - Practice regular expressions Exercise 8.3 - Practice writing extension methods Exercise 8.4 -
Explore topics Summary 347 348 349 349 349 350 350 351 352 353 354 355 355 358 Յ6Օ 36О 362 363 365 365 366 366 Յ66 3θτ Chapter 9: Working with Files, Streams, and Serialization_ 369 Managing the filesystem Handling cross-platform environments and filesystems Managing drives 369 369 371 [xv]------------------------------------------------------- —------- --—
Table of Contents Managing directories Managing files Managing paths Getting file information Controlling how you work with files Reading and writing with streams Understanding abstract and concrete streams Understanding storage streams Understanding function streams Understanding stream helpers Writing to text streams Writing to XML streams Disposing of file resources Simplifying disposal by using the using statement Compressing streams Compressing with the Brotli algorithm Encoding and decoding text Encoding strings as byte arrays Encoding and decoding text in files Serializing object graphs Serializing as XML Generating compact XML Deserializing XML files Serializing with JSON High-performance JSON processing Controlling JSON processing New JSON extension methods for working with HTTP responses Migrating from Newtonsoft to new JSON Practicing and exploring Exercise 9.1 - Test your knowledge Exercise 9.2 - Practice serializing as XML Exercise 9.3 - Explore topics Summary Table of Contents 372 374 375 376 377 378 378 379 379 379 380 381 383 385 386 388 390 391 393 394 394 397 398 399 400 401 404 404 405 405 405 406 406 Chapter 10: Working with Data Using Entity Framework Core_407 Understanding modern databases Understanding legacy Entity Framework Using the legacy Entity Framework 6.3 or later Understanding Entity Framework Core Creating a console app for working with EF Core Using a sample relational database Using Microsoft SQL Server for Windows Downloading and installing SQL Server Creating the Northwind sample database for SQL Server Managing the Northwind
sample database with Server Explorer Using SQLite Setting up SQLite for macOS 407 408 408 408 409 409 410 411 412 413 414 414 Setting up SQLite for Windows Setting up SQLite for other OSes Creating the Northwind sample database for SQLite Managing the Northwind sample database with SQLiteStudio Setting up EF Core Choosing an EF Core database provider Connecting to a database Defining the Northwind database context class Defining EF Core models Using EF Core conventions to define the model Using EF Core annotation attributes to define the model Using the EF Core Fluent API to define the model Understanding data seeding with the Fluent API Building an EF Core model for the Northwind tables Defining the Category and Product entity classes Adding tables to the Northwind database context class Setting up the dotnet-ef tool Scaffolding models using an existing database Configuring preconvention models Querying EF Core models Filtering included entities Unicode characters in the Windows console Filtering and sorting products Getting the generated SQL Logging EF Core using a custom logging provider Filtering logs by provider-specific values Logging with query tags Pattern matching with Like Defining global filters Loading patterns with EF Core Eager loading entities Enabling lazy loading Explicit loading entities Manipulating data with EF Core Inserting entities Updating entities Deleting entities Pooling database contexts Working with transactions Controlling transactions using isolation levels Defining an explicit transaction Code First EF Core models Understanding migrations
Practicing and exploring Exercise 10.1- Test your knowledge Exercise 10.2 - Practice exporting data using different serialization formats 414 414 415 415 417 417 417 418 420 421 421 423 423 423 424 426 427 428 432 433 435 436 437 438 439 442 443 444 445 446 446 447 448 450 450 452 453 454 454 455 455 456 463 464 464 464
Table of Contents _ _ Exercise 10.3 - Explore topics Exercise 10.4 - Explore NoSQL databases Summary 464 465 465 Chapter 11: Querying and Manipulating Data Using LINQ_ 467 Writing LINQ expressions What makes LINQ? Building LINQ expressions with the Enumerable class 467 467 468 Understanding deferred execution 470 Filtering entities with Where Targeting a named method Simplifying the code by removing the explicit delegate instantiation Targeting a lambda expression Sorting entities 471 473 474 474 475 Sorting by a single property using OrderBy Sorting by a subsequent property using ThenBy Declaring a query using var or a specified type Filtering by type Working with sets and bags using LINQ Using LINQ with EF Core Building an EF Core model Filtering and sorting sequences Projecting sequences into new types Joining and grouping sequences 475 475 476 476 478 480 480 483 485 486 Joining sequences Group-joining sequences 487 488 Aggregating sequences Sweetening LINQ syntax with syntactic sugar Using multiple threads with parallel LINQ Creating an app that benefits from multiple threads Using Windows Using macOS For all operating systems 490 491 492 492 494 494 494 Creating your own LINQ extension methods Trying the chainable extension method Trying the mode and median methods 495 498 498 Working with LINQ to XML Generating XML using LINQ to XML Reading XML using LINQ to XML Practicing and exploring Exercise 11.1֊ Test your knowledge Exercise 11.2- Practice querying with LINQ Exercise 11.3- Explore topics Summary Chapter 12: Improving
Performance and Scalability Using Multitasking Understanding processes, threads, and tasks Monitoring performance and resource usage ■[ xviii ] 499 499 500 501 501 502 503 503 505 505 506 Table of Contents Evaluating the efficiency of types Monitoring performance and memory using diagnostics Useful members of the Stopwatch and Process types Implementing a Recorder class Measuring the efficiency of processing strings Monitoring performance and memory using Benchmark.NET Running tasks asynchronously Running multiple actions synchronously Running multiple actions asynchronously using tasks Starting tasks 506 507 508 508 510 512 516 516 518 5-13 Waiting for tasks 519 519 Using wait methods with tasks Continuing with another task Nested and child tasks Wrapping tasks around other objects Synchronizing access to shared resources Accessing a resource from multiple threads Applying a mutually exclusive lock to a conch Understanding the lock statement Avoiding deadlocks 520 522 523 524 525 526 527 տշջ Synchronizing events Making CPU operations atomic Applying other types of synchronization Understanding async and await Improving responsiveness for console apps Improving responsiveness for GUI apps Improving scalability for web applications and web services Common types that support multitasking Using await in catch blocks Working with async streams Practicing and exploring Exercise 12.1- Test your knowledge Exercise 12.2 - Explore topics Summary 529 530 531 532 532 533 537 537 537 538 539 539 539 539 Chapter 13: Introducing Practical Applications of C# and .NET_541
Understanding app models for C# and .NET Building websites using ASP.NET Core Building websites using a content management system Building web applications using SPA frameworks Building web and other services Building mobile and desktop apps Alternatives to .NET MAUI 541 542 542 543 544 545 545 Understanding Uno Platform Understanding Avaionia 545 543 New features in ASP.NET Core ASP.NET Core 1.0 546 546 — [ xix 1
Table of Contents Table of Contents_ _ _ ASP.NET Core 1.1 ASP.NET Core 2.0 ASP.NET Core 2.1 ASP.NET Core 2.2 ASP.NET Core 3.0 ASP.NET Core 3.1 Blazor WebAssembly 3.2 ASP.NET Core 5.0 ASP.NET Core 6.0 Building Windows-only desktop apps Understanding legacy Windows application platforms Understanding modern .NET support for legacy Windows platforms Structuring projects Structuring projects in a solution or workspace Using other project templates Installing additional template packs Building an entity data model for the Northwind database Creating a class library for entity models using SQLite Improving the class-to-table mapping Creating a class library for a Northwind database context Creating a class library for entity models using SQL Server Practicing and exploring Exercise 13.1- Test your knowledge Exercise 13.2 ֊ Explore topics Summary 546 546 547 547 548 548 548 548 548 549 549 550 550 551 552 552 553 554 555 559 562 565 565 565 565 Chapter 14: Building Websites Using ASP.NET Core Razor Pages_ 567 Understanding web development Understanding HTTP 567 887 Understanding the components of a URL Assigning port numbers for projects in this book Using Google Chrome to make HTTP requests Understanding client-side web development technologies Understanding ASP.NET Core ClassicASP.NET versus modernASP.NET Core Creating an empty ASP.NET Core project Testing and securing the website Enabling stronger security and redirect to a secure connection Controlling the hosting environment
Separating configuration for services and pipeline Enabling a website to serve static content Creating a folder for static files and a web page Enabling static and default files Exploring ASP.NET Core Razor Pages Enabling Razor Pages Adding code to a Razor Page Using shared layouts with Razor Pages - [xx] 568 569 569 572 572 573 574 576 579 580 582 584 584 585 586 586 587 588 Using code-behind files with Razor Pages Using Entity Framework Core with ASP.NET Core Configure Entity Framework Core as a service Manipulating data using Razor Pages Enabling a model to insert entities Defining a form to insert a new supplier Injecting a dependency service into a Razor Page Using Razor class libraries Creating a Razor class library Disabling compact folders for Visual Studio Code Implementing the employees feature using EF Core Implementing a partial view to show a single employee Using and testing a Razor class library Configuring services and the HTTP request pipeline Understanding endpoint routing Configuring endpoint routing 591 593 593 596 595 597 597 59g 598 599 600 602 603 604 604 595 Reviewing the endpoint routing configuration in our project Registering services in the ConfigureServices method Setting up the HTTP request pipeline in the Configure method Summarizing key middlewareextension methods Visualizing the HTTP pipeline Implementing an anonymous inline delegate as middleware Practicing and exploring Exercise 14.1 - Test your knowledge Exercise 14.2 - Practice building a data-driven web page Exercise 14.3 - Practice building web pages for console apps Exercise 14.4 -
Explore topics Summary Chapter 15: Building Websites Using the Model-View-Controller Pattern 605 606 608 609 610 610 612 612 613 613 613 613 615 Setting up an ASP.NET Core MVC website Creating an ASP.NET Core MVC website Creating the authentication database for SQL Server LocalDB Exploring the default ASP.NET Core MVC website Understanding visitor registration Reviewing an MVC website project structure Reviewing the ASP.NET Core Identity database Exploring an ASP.NET Core MVC website Understanding ASP.NET Core MVC initialization Understanding the default MVC route Understanding controllers and actions Understanding the ControllerBase class Understanding the Controller class Understanding the responsibilities of a controller Understanding the view search path convention Understanding logging Understanding filters 615 616 617 618 619 620 622 622 622 625 626 626 627 628 629 630 631 [ xxi ]--------------
Table of Contents Table of Contents Using a filter to secure an action method Enabling role management and creating a role programmatically Using a filter to cache a response Using a filter to define a custom route Understanding entity and view models Understanding views Customizing an ASP.NET Core MVCwebsite Defining a custom style Setting up the category images Understanding Razor syntax Defining a typed view Reviewing the customized home page Passing parameters using a route value Understanding model binders in more detail Disambiguating action methods Passing a route parameter Passing a form parameter Validating the model Understanding view helper methods Querying a database and using display templates Improving scalability using asynchronous tasks Making controller action methods asynchronous Practicing and exploring Exercise 15.1- Test your knowledge Exercise 15.2 - Practice implementing MVC by implementing a category detail page Exercise 15.3 - Practice improving scalability by understanding and implementing async action methods Exercise 15.4 - Practice unit testing MVC controllers Exercise 15.5 - Explore topics Summary 631 632 635 636 637 640 643 643 643 643 644 647 648 650 652 654 654 654 657 659 662 662 663 663 664 664 665 665 665 Chapter 16: Building and Consuming Web Services_667 Building web services using ASP.NET Core Web API Understanding web service acronyms 667 667 Understanding Windows Communication Foundation (WCF) An alternative to WCF 668 668 Understanding HTTP requests and responses for Web APIs Creating an ASP.NET Core Web API
project Reviewing the web service's functionality Creating a web service for the Northwind database Creating data repositories for entities Implementing a Web API controller Understanding action method return types Configuring the customer repository and Web API controller Specifying problem details Controlling XML serialization Documenting and testing web services 669 671 674 675 677 681 681 683 687 688 688 — --------------- ---------------------------------------------------------- [ xxii ]------------------------------------------------------- ----- ----------------- Testing GET requests using a browser Testing HTTP requests with the REST Client extension 688 690 Making GET requests using REST Client Making other requests using REST Client 690 692 Understanding Swagger Testing requests with Swagger UI Enabling HTTP logging Consuming web services using HTTP clients Understanding HttpCIient Configuring HTTP clients using HttpCIientFactory Getting customers as JSON in the controller Enabling Cross-Origin Resource Sharing Implementing advanced features for web services Implementing a Health Check API Implementing Open API analyzers and conventions Implementing transient fault handling Adding security HTTP headers Building web services using minimal APIs Building a weather service using minimal APIs Testing the minimal weather service Adding weather forecasts to the Northwind website home page Practicing and exploring Exercise 16.1 - Test your knowledge Exercise 16.2 - Practice creating and deleting customers with HttpCIient Exercise 16.3 - Explore topics Summary 693 694 700
702 702 702 703 705 707 708 709 709 710 711 712 714 714 716 716 717 717 717 Chapter 17: Building User Interfaces Using Blazor 719 Understanding Blazor JavaScript and friends Silverlight - C# and .NET using a plugin WebAssembly - a target for Blazor Understanding Blazor hosting models Understanding Blazor components What is the difference between Blazor and Razor? Comparing Blazor project templates Reviewing the Blazor Server project template Understanding CSS and JavaScript isolation 719 720 720 720 720 721 722 723 723 729 Understanding Blazor routing to page components How to define a routable page component How to navigate Blazor routes How to pass route parameters Understanding base component classes How to use the navigation link component with routes Running the Blazor Server project template Reviewing the Blazor WebAssembly project template Building components using Blazor Server 729 729 729 730 730 732 732 733 737 ֊[ xxiij ]--------------------------------------------------------- ------- ------ —----
Table of Contents Defining and testing a simple component Making the component a routable page component Getting entities into a component Abstracting a service for a Blazor component Defining forms using the EditForm component Building and using a customer form component Testing the customer form component Building components using Blazor WebAssembly Configuring the server for Blazor WebAssembly Configuring the client for Blazor WebAssembly Testing the Blazor WebAssembly components and service Improving Blazor WebAssembly apps Enabling Blazor WebAssembly ACT Exploring Progressive Web App support 737 738 739 742 745 746 749 750 751 754 757 758 759 760 762 Implementing offline support for PWAs Understanding the browser compatibility analyzer for Blazor WebAssembly Sharing Blazor components in a class library Interop with JavaScript Libraries of Blazor components Practicing and exploring Exercise 17.1 - Test your knowledge Exercise 17.2 - Practice by creating a times table component Exercise 17.3 - Practice by creating a country navigation item Exercise 17.4 - Explore topics Summary Epilogue Next steps on your C# and .NET learning journey Polishing your skills with design guidelines Books to take your learning further .NET MAUI delayed Next edition coming November 2022 Good luck! Index 762 763 765 767 767 768 768 768 769 769 771 771 771 772 773 773 773 775 Online Chapters_ Chapter 18: Building and Consuming Specialized Services (Available Online) Chapter 19: Building Mobile and Desktop Apps Using .NET MAUI (Available
Online)_ Chapter 20: Protecting Your Data and Applications (Available Online)_ Appendix A: Answers to the Test Your Knowledge Questions (Available Online) [ xxiv ] |
any_adam_object | 1 |
any_adam_object_boolean | 1 |
author | Price, Mark J. |
author_GND | (DE-588)1221555669 |
author_facet | Price, Mark J. |
author_role | aut |
author_sort | Price, Mark J. |
author_variant | m j p mj mjp |
building | Verbundindex |
bvnumber | BV047709564 |
classification_rvk | ST 253 ST 250 |
ctrlnum | (OCoLC)1304475223 (DE-599)BVBBV047709564 |
discipline | Informatik |
discipline_str_mv | Informatik |
edition | 6th edition |
format | Book |
fullrecord | <?xml version="1.0" encoding="UTF-8"?><collection xmlns="http://www.loc.gov/MARC21/slim"><record><leader>01627nam a22003851c 4500</leader><controlfield tag="001">BV047709564</controlfield><controlfield tag="003">DE-604</controlfield><controlfield tag="005">20220331 </controlfield><controlfield tag="007">t</controlfield><controlfield tag="008">220125s2021 a||| |||| 00||| eng d</controlfield><datafield tag="020" ind1=" " ind2=" "><subfield code="a">9781801077361</subfield><subfield code="9">978-1-80107-736-1</subfield></datafield><datafield tag="035" ind1=" " ind2=" "><subfield code="a">(OCoLC)1304475223</subfield></datafield><datafield tag="035" ind1=" " ind2=" "><subfield code="a">(DE-599)BVBBV047709564</subfield></datafield><datafield tag="040" ind1=" " ind2=" "><subfield code="a">DE-604</subfield><subfield code="b">ger</subfield><subfield code="e">rda</subfield></datafield><datafield tag="041" ind1="0" ind2=" "><subfield code="a">eng</subfield></datafield><datafield tag="049" ind1=" " ind2=" "><subfield code="a">DE-384</subfield><subfield code="a">DE-739</subfield></datafield><datafield tag="084" ind1=" " ind2=" "><subfield code="a">ST 253</subfield><subfield code="0">(DE-625)143628:</subfield><subfield code="2">rvk</subfield></datafield><datafield tag="084" ind1=" " ind2=" "><subfield code="a">ST 250</subfield><subfield code="0">(DE-625)143626:</subfield><subfield code="2">rvk</subfield></datafield><datafield tag="100" ind1="1" ind2=" "><subfield code="a">Price, Mark J.</subfield><subfield code="e">Verfasser</subfield><subfield code="0">(DE-588)1221555669</subfield><subfield code="4">aut</subfield></datafield><datafield tag="245" ind1="1" ind2="0"><subfield code="a">C# 10 and .NET 6 - Modern Cross-Platform Development</subfield><subfield code="b">build apps, websites, and services with ASP.NET Core 6, Blazor, and EF Core 6 using Visual Studio 2022 and Visual Studio Code</subfield><subfield code="c">Mark J. Price</subfield></datafield><datafield tag="250" ind1=" " ind2=" "><subfield code="a">6th edition</subfield></datafield><datafield tag="264" ind1=" " ind2="1"><subfield code="a">Birmingham</subfield><subfield code="b">Packt Publishing</subfield><subfield code="c">[2021]</subfield></datafield><datafield tag="300" ind1=" " ind2=" "><subfield code="a">xxx, 792 Seiten</subfield><subfield code="b">Illustrationen</subfield></datafield><datafield tag="336" ind1=" " ind2=" "><subfield code="b">txt</subfield><subfield code="2">rdacontent</subfield></datafield><datafield tag="337" ind1=" " ind2=" "><subfield code="b">n</subfield><subfield code="2">rdamedia</subfield></datafield><datafield tag="338" ind1=" " ind2=" "><subfield code="b">nc</subfield><subfield code="2">rdacarrier</subfield></datafield><datafield tag="490" ind1="0" ind2=" "><subfield code="a">Expert insight</subfield></datafield><datafield tag="650" ind1="0" ind2="7"><subfield code="a">ASP.NET</subfield><subfield code="0">(DE-588)4678758-6</subfield><subfield code="2">gnd</subfield><subfield code="9">rswk-swf</subfield></datafield><datafield tag="650" ind1="0" ind2="7"><subfield code="a">Programmiersprache</subfield><subfield code="0">(DE-588)4047409-4</subfield><subfield code="2">gnd</subfield><subfield code="9">rswk-swf</subfield></datafield><datafield tag="689" ind1="0" ind2="0"><subfield code="a">Programmiersprache</subfield><subfield code="0">(DE-588)4047409-4</subfield><subfield code="D">s</subfield></datafield><datafield tag="689" ind1="0" ind2="1"><subfield code="a">ASP.NET</subfield><subfield code="0">(DE-588)4678758-6</subfield><subfield code="D">s</subfield></datafield><datafield tag="689" ind1="0" ind2=" "><subfield code="5">DE-604</subfield></datafield><datafield tag="776" ind1="0" ind2="8"><subfield code="i">Erscheint auch als</subfield><subfield code="n">Online-Ausgabe</subfield></datafield><datafield tag="856" ind1="4" ind2="2"><subfield code="m">Digitalisierung UB Passau - ADAM Catalogue Enrichment</subfield><subfield code="q">application/pdf</subfield><subfield code="u">http://bvbr.bib-bvb.de:8991/F?func=service&doc_library=BVB01&local_base=BVB01&doc_number=033093365&sequence=000001&line_number=0001&func_code=DB_RECORDS&service_type=MEDIA</subfield><subfield code="3">Inhaltsverzeichnis</subfield></datafield><datafield tag="999" ind1=" " ind2=" "><subfield code="a">oai:aleph.bib-bvb.de:BVB01-033093365</subfield></datafield></record></collection> |
id | DE-604.BV047709564 |
illustrated | Illustrated |
index_date | 2024-07-03T19:00:14Z |
indexdate | 2024-07-10T09:19:47Z |
institution | BVB |
isbn | 9781801077361 |
language | English |
oai_aleph_id | oai:aleph.bib-bvb.de:BVB01-033093365 |
oclc_num | 1304475223 |
open_access_boolean | |
owner | DE-384 DE-739 |
owner_facet | DE-384 DE-739 |
physical | xxx, 792 Seiten Illustrationen |
publishDate | 2021 |
publishDateSearch | 2021 |
publishDateSort | 2021 |
publisher | Packt Publishing |
record_format | marc |
series2 | Expert insight |
spelling | Price, Mark J. Verfasser (DE-588)1221555669 aut C# 10 and .NET 6 - Modern Cross-Platform Development build apps, websites, and services with ASP.NET Core 6, Blazor, and EF Core 6 using Visual Studio 2022 and Visual Studio Code Mark J. Price 6th edition Birmingham Packt Publishing [2021] xxx, 792 Seiten Illustrationen txt rdacontent n rdamedia nc rdacarrier Expert insight ASP.NET (DE-588)4678758-6 gnd rswk-swf Programmiersprache (DE-588)4047409-4 gnd rswk-swf Programmiersprache (DE-588)4047409-4 s ASP.NET (DE-588)4678758-6 s DE-604 Erscheint auch als Online-Ausgabe Digitalisierung UB Passau - ADAM Catalogue Enrichment application/pdf http://bvbr.bib-bvb.de:8991/F?func=service&doc_library=BVB01&local_base=BVB01&doc_number=033093365&sequence=000001&line_number=0001&func_code=DB_RECORDS&service_type=MEDIA Inhaltsverzeichnis |
spellingShingle | Price, Mark J. C# 10 and .NET 6 - Modern Cross-Platform Development build apps, websites, and services with ASP.NET Core 6, Blazor, and EF Core 6 using Visual Studio 2022 and Visual Studio Code ASP.NET (DE-588)4678758-6 gnd Programmiersprache (DE-588)4047409-4 gnd |
subject_GND | (DE-588)4678758-6 (DE-588)4047409-4 |
title | C# 10 and .NET 6 - Modern Cross-Platform Development build apps, websites, and services with ASP.NET Core 6, Blazor, and EF Core 6 using Visual Studio 2022 and Visual Studio Code |
title_auth | C# 10 and .NET 6 - Modern Cross-Platform Development build apps, websites, and services with ASP.NET Core 6, Blazor, and EF Core 6 using Visual Studio 2022 and Visual Studio Code |
title_exact_search | C# 10 and .NET 6 - Modern Cross-Platform Development build apps, websites, and services with ASP.NET Core 6, Blazor, and EF Core 6 using Visual Studio 2022 and Visual Studio Code |
title_exact_search_txtP | C# 10 and .NET 6 - Modern Cross-Platform Development build apps, websites, and services with ASP.NET Core 6, Blazor, and EF Core 6 using Visual Studio 2022 and Visual Studio Code |
title_full | C# 10 and .NET 6 - Modern Cross-Platform Development build apps, websites, and services with ASP.NET Core 6, Blazor, and EF Core 6 using Visual Studio 2022 and Visual Studio Code Mark J. Price |
title_fullStr | C# 10 and .NET 6 - Modern Cross-Platform Development build apps, websites, and services with ASP.NET Core 6, Blazor, and EF Core 6 using Visual Studio 2022 and Visual Studio Code Mark J. Price |
title_full_unstemmed | C# 10 and .NET 6 - Modern Cross-Platform Development build apps, websites, and services with ASP.NET Core 6, Blazor, and EF Core 6 using Visual Studio 2022 and Visual Studio Code Mark J. Price |
title_short | C# 10 and .NET 6 - Modern Cross-Platform Development |
title_sort | c 10 and net 6 modern cross platform development build apps websites and services with asp net core 6 blazor and ef core 6 using visual studio 2022 and visual studio code |
title_sub | build apps, websites, and services with ASP.NET Core 6, Blazor, and EF Core 6 using Visual Studio 2022 and Visual Studio Code |
topic | ASP.NET (DE-588)4678758-6 gnd Programmiersprache (DE-588)4047409-4 gnd |
topic_facet | ASP.NET Programmiersprache |
url | http://bvbr.bib-bvb.de:8991/F?func=service&doc_library=BVB01&local_base=BVB01&doc_number=033093365&sequence=000001&line_number=0001&func_code=DB_RECORDS&service_type=MEDIA |
work_keys_str_mv | AT pricemarkj c10andnet6moderncrossplatformdevelopmentbuildappswebsitesandserviceswithaspnetcore6blazorandefcore6usingvisualstudio2022andvisualstudiocode |