[ASP].NET Core Demystified. Miroslav Holec. Konzultant a lektor [ASP].NET Core.

Podobné dokumenty
Novinky v ASP.NET MVC6

NetBeans platforma. Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti

Praktické zkušenosti s Azure DevOps

Microsoft Azure Workshop

ASP.NET Web API. Tomáš Herceg Microsoft MVP (ASP.NET)

Diagnostika webových aplikací v Azure

1 - Úvod do platformy.net. IW5 - Programování v.net a C#

Efektivní vývoj mobilních aplikací na více platforem současně. Mgr. David Gešvindr MCT MSP MCPD MCITP

KIV/PIA 2013 Jan Tichava

Internet Information Services (IIS) 6.0

Novinky v Azure pro webové vývojáře

Obsah přednášky. Představení webu ASP.NET frameworky Relační databáze Objektově-relační mapování Entity framework

Novinky v oblasti SAP Mobility. Martin Zikmund, Presale Mobility Platforms Miroslav Řehoř, Account Executive

NOVINKY V JEE EJB 3.1. Zdeněk Troníček Fakulta informačních technologií ČVUT v Praze

Úvod do programovacích jazyků (Java)

Code Contracts. Robert Haken [MVP ASP.NET, MCT] Software architect, Owner at HAVIT, s.r.o. knowledge-base.havit.cz

Spring framework 2.0. Roman Pichlík CZJUG

Jakub Čermák Microsoft Student Partner

IoC/DI. Tomáš Herceg Microsoft MVP (ASP.NET)

Aplikace a sestavení Sestavení (assembly)

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

ISZR Referenční agent.net

Ope p r e a r čn č í s ys y té t m é y y Windo d w o s Stručný přehled

Základy jazyka C# Obsah přednášky. Architektura.NET Historie Vlastnosti jazyka C# Datové typy Příkazy Prostory jmen Třídy, rozhraní

Obsah přednášky 7. Základy programování (IZAPR) Přednáška 7. Parametry metod. Parametry, argumenty. Parametry metod.

SPECIFIKACE PŘEDMĚTU PLNĚNÍ

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

Další vlastnosti Springu Moduly Springu. Spring Framework. Pavel Mička. Pavel Mička Spring Framework 1/18

Nástroje a frameworky pro automatizovaný vývoj. Jaroslav Žáček jaroslav.zacek@osu.cz

Bc. David Gešvindr MSP MCSA MCTS MCITP MCPD

Připravil: Ing. Jiří Lýsek, Ph.D. Verze: Webové technologie

Platformy / technologie. Jaroslav Žáček

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

PLATFORMY / TECHNOLOGIE JAROSLAV ŽÁČEK

Architektura COM. Historie Component Object Model (COM) Komunikace s komponentami Rozhraní komponent COM komponenty v.net.

KMI / TMA Tvorba mobilních aplikací. 2. seminář ZS 2016/2017 Středa 13:15-15:45

Technologie Java Enterprise Edition. Přemek Brada, KIV ZČU

Úvod do Entity Frameworku

Maven. Aplikační programování v Javě (BI-APJ) - 2 Ing. Jiří Daněček Katedra softwarového inženýrství Fakulta informačních technologií ČVUT Praha

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

Správa a sledování SOA systémů v Oracle SOA Suite

3. Základy programovacího jazyka Java

Apache Cordova (PhoneGap 3)

Doxygen. Jakub Břečka

Michal Augustýn Microsoft Most Valuable Professional

Proč Angular JS framework?

KMI / TMA Tvorba mobilních aplikací

Windows 2008 R2 - úvod. Lumír Návrat

ASP.NET Core 1.0: OCHRANA CITLIVÝCH INFORMACÍ

Úvod do programovacích jazyků (Java)

Základy Guice Vazby Scopes. Google Guice. základní seznámení s frameworkem Google Guice

Historie, současnost a budoucnost ASP.NET

Připravil: Ing. Vít Ondroušek, Ph.D. Technologie.Net Framework

Využití JBoss Fuse ve skandinávské energetice

Jiří Kadavý Technický specialista pro školství Microsoft Česká republika

Programovací jazyk Úvod do programování v C#

Nástroje pro vývoj a publikaci mobilní aplikace v Qt. Martin Straka

Nástroje pro vývoj a publikaci mobilní aplikace v Qt. Martin Straka

Bakalářské. Vzdělání: Telefon: Ostrava. Bydliště: Ukázky práce: Správa a monitoring platformy provozované na AWS

Lukáš Kubis. MSP pro VŠB-TU Ostrava

WCF. IW5 - Programování v.net a C# WCF

Enterprise Java (BI-EJA) Technologie programování v jazyku Java (X36TJV)

Programování v Javě I. Leden 2008

Úvod Seznámení s předmětem Co je.net Vlastnosti.NET Konec. Programování v C# Úvodní slovo 1 / 25

Windows a real-time. Windows Embedded

Komponenty v.net. Obsah přednášky

Seznámení s prostředím dot.net Framework

RMI - Distribuované objekty v Javě

KTE / ZPE Informační technologie

ANT. Aplikační programování v Javě (BI-APJ) - 1 Ing. Jiří Daněček Katedra softwarového inženýrství Fakulta informačních technologií ČVUT Praha

Kubernetes Azure Service Fabric

Nové jazykové brány do Caché. Daniel Kutáč

Michal Verner, DAQUAS

Webové služby a XML. Obsah přednášky. Co jsou to webové služby. Co jsou to webové služby. Webové služby a XML

Programování v Javě I. Únor 2009

RMI Remote Method Invocation

Komponentově orientované webové frameworky. Jiří Stránský twitter.com/jistr

IRAE 07/08 Přednáška č. 2. atr1 atr2. atr1 atr2 -33

Microsoft Web Platform a Poskytovatelé služeb

Nastavení DCOM. Uživatelský manuál

IW3 MS SQL SERVER 2014

Kurz Databáze. Přechod na SQL server. Obsah. Vytvoření databáze. Lektor: Doc. Ing. Radim Farana, CSc.

Úvod do programování v jazyce Java

Cílem kapitoly je sezn{mit s vývojovými prostředími, používanými pro programov{ní v C#.

Vývoj software pro Linuxové distribuce. Installfest Praha,

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

HELIOS eserver BüroKomplet, s.r.o.

CineStar Černý Most Praha

Univerzita Palackého v Olomouci Radek Janoštík (Univerzita Palackého v Olomouci) Základy programování 4 - C# 3.4.

HMI * nad webovými technologiemi

Úvod. Únor Fakulta informačních technologií VUT. Radek Kočí Seminář Java Úvod 1/ 23

Testovací protokol USB Token Cryptomate

Programovací jazyk C# Úvod do programování v C#

Ember.js. Jan Kopřiva, Vojtěch Jasný

SIMATIC WinCC Novinky

Algoritmizace a programování

Střední škola pedagogická, hotelnictví a služeb, Litoměříce, příspěvková organizace

1 ÚVOD Merbon SCADA K čemu program slouží Požadavky na systém... 4

Transkript:

[ASP].NET Core 2.1-2.2 Demystified Miroslav Holec Konzultant a lektor [ASP].NET Core mirek@miroslavholec.cz www.miroslavholec.cz

Miroslav Holec Nezávislý konzultant a lektor [ASP].NET Core - školím ve firmách ASP.NET Core a RESTová API https://www.miroslavholec.cz - připravuji konferenci Dotnet Days 2019 https://www.dotnetdays.cz - píšu novinky Dotnet News https://www.dotnetnews.cz

Miroslav Holec Nezávislý konzultant a lektor [ASP].NET Core - školím ve firmách ASP.NET Core a RESTová API https://www.miroslavholec.cz - připravuji konferenci Dotnet Days 2019 https://www.dotnetdays.cz - píšu novinky Dotnet News https://www.dotnetnews.cz Praktické školení Stavíme RESTová API v ASP.NET Core https://odkaz.me/skapi 5. září 2019

Agenda Témata dnešního večera - Tooling a nástroje pro vývoj.net Core aplikací - NET Standard a tvorba NuGet balíčků - Global Tools - DI, Configuration & Logging - ASP.NET Core Lifecycle - Middlewares - Publikace a hostování aplikací - Diskuse

Aktuální vývojářský stack Pohled na současný vývojářský stack ASP.NET ASP.NET CORE.NET FRAMEWORK ASP.NET CORE.NET CORE WIN API NET STANDARD 2.0 LEGACY [ASP].NET CORE STACK CURRENT STACK v1.0 VS 2015 VS 2017 v1.1 VS 2015 VS 2017 v2.0 VS 2017 v2.1 VS 2017 v2.2 VS 2017 15.9 VS 2019 16.0 prev 1 2016/06 2016/11 2017/08 2018/05 2018/12 Supported to 2019/06/27 end of life

Pohled do budoucnosti Vývojářský stack pro.net Core 3.0 v3.0-rc v3.0 GA v3.1 LTS.NET 5.NET 6 LTS.NET 7.NET 8 LTS MINOR RELEASES 2019/7 2019/9 2019/11 2020/11 2021/11 2022/11 2023/11 cross-platform windows specific ASP.NET CORE 3.0 DESKTOP APPS.NET CORE 3.0 NET STANDARD 2.1 WINDOWS SPECIFIC API

SDK & RUNTIMES Prostředí pro vývoj aplikací v.net Core - runtime (typový systém, práce s assembly, GC, interop) - framework libraries (primitivní datové typy a základní utility) - CLI tools a kompilátory (roslyn a další utility pro vývojáře) - dotnet tool (práce s CLI nad vybraným runtime, spouštění aplikací apod.) NET Core Runtime = runtime + framework libraries NET Core SDK = všechno v jednom pro vývojáře NET Core Hosting Bundle = NET Core Runtime + ASP.NET Core Module

DOTNET & CLI TOOLS Správa.NET Core aplikací pomocí toolingu - CLI je multiplatformní sada nástrojů pro vývoj.net aplikací - instaluje se společně s SDK (na disku je více verzí) - komunikace pomocí IDE nebo nástroje dotnet - dotnet slouží mj. k řízení běhu FDD aplikací Příkazy: dotnet dotnet new --help dotnet new console dotnet new console --help

CSPROJ Moderní projektové soubory s podporou NuGet <Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <OutputType>Exe</OutputType> <TargetFramework>netcoreapp2.2</TargetFramework> </PropertyGroup> <ItemGroup> <PackageReference Include= Newtonsoft.Json" Version="2.2.0" /> </ItemGroup> <ItemGroup> <ProjectReference Include="..\NetStd.Lib\NetStd.Lib.csproj" />

CSPROJ & NUGET PACKAGES Moderní projektové soubory s podporou NuGet <Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <TargetFramework>netstandard2.0</TargetFramework> <GeneratePackageOnBuild>true</GeneratePackageOnBuild> <Version>1.0.1</Version> <Copyright>Miroslav Holec</Copyright> <Description>New great library</description> </PropertyGroup> </Project>

Dependency Injection Nativní podpora pro DI v.net Core dotnet add package Microsoft.Extensions.DependencyInjection - Kontejnerem je třída ServiceProvider (implementace IServiceProvider) - Vzniká zavoláním metody BuildServiceProvider() nad ServiceCollection ServiceProvider serviceprovider = new ServiceCollection().AddTransient<MyApp>().AddTransient<SmtpService>().BuildServiceProvider(); var application = serviceprovider.getservice<myapp>();

Konfigurace aplikace UCHOVÁNÍ KONFIGURACE V.NET CORE - veškerá konfigurace je založena na párech KLÍČ:HODNOTA } "SmtpServer": "Host": "valuexx", "Port": "valueyy" } [SmtpServer] Host = valuexx Port = valueyy KLÍČ HODNOTA SmtpServer:Host valuexx SmtpServer:Port valueyy

Konfigurace aplikace Různé zdroje konfigurace s podporou DI dotnet add package Microsoft.Extensions.Configuration - Veškerou konfiguraci zpřístupňuje třída IConfigurationRoot - Vzniká zavoláním metody Build() nad třídou ConfigurationBuilder IConfigurationRoot config = new ConfigurationBuilder().SetBasePath(Directory.GetCurrentDirectory()).AddIniFile("application.ini", true, true).build();

Konfigurace aplikace Návrhový vzor IOptions<T> dotnet add package Microsoft.Extensions.Options + Microsoft.Extensions.Options.ConfigurationExtensions ServiceProvider services = new ServiceCollection().Configure<Server>(configuration.GetSection("SmtpServer")).AddSingleton(configuration).BuildServiceProvider(); public class MyApp public MyApp(IOptions<Server> config) this.config = config.value;

Logování Plně rozšiřitelný mechanismus pro logování dotnet add package Microsoft.Extensions.Logging - Konfiguraci sestavuje LoggingBuilder, který je přístupný skrze extension metodu - Součástí registrace je podpora tzv. ILogger<T> patternu pro logování událostí - Logování probíhá do výstupů dle registrace (obvykle samostatné NuGet pckgs.) var servicecollection = new ServiceCollection().AddLogging(x => x.adddebug(); });

Logování Plně rozšiřitelný mechanismus pro logování public class MyApp private ILogger<MyApp> logger; public MyApp(ILogger<MyApp> logger) this.logger = logger; } } public void Run() logger.loginfo( message ); }

Shared Frameworks Falešné NuGet balíčky a metabalíčky - webový framework ASP.NET Core se skládá z více než stovky balíčků NuGet - pro zjednodušení existují metabalíčky, které sestavují stabilní konstelace balíčků - každý metabalíček reprezentuje zároveň shared framework (sada assemblies) - shared framework se instaluje společně s runtime a dll jsou již předkompilované - během publikace a hostování probíhá host roll forward <Project Sdk="Microsoft.NET.Sdk.Web"> <PropertyGroup> <TargetFramework>netcoreapp2.2</TargetFramework> </PropertyGroup> <ItemGroup> <PackageReference Include="Microsoft.AspNetCore.App" />

Inicializace webové aplikace (IWebHostBuilder) Webová aplikace v.net Core - hostování webové aplikace zajišťuje IWebHostBuilder (startup + lifecycle) - základním úkolem je konfigurace serveru a request pipeline - komplexní nastavení je skryto v metodě WebHost.CreateDefaultBuilder() - v základu se používá webový server Kestrel nebo IISHttpServer (pouze IIS) - lze použít webový server HTTP.sys v prostředí Windows public static void Main(string[] args) WebHost.CreateDefaultBuilder(args).UseStartup<Startup>().Build().Run(); }

Životní cyklus ASP.NET Core aplikace Vznik webové aplikace a souvislosti s.net Core Program.cs Startup.cs App Start Main() Configure Services() Configure() Build Middleware Pipeline HTTP Request Invocation My Middleware MVC Router Middleware MVC Request Lifecycle Middleware Pipeline

Middleware Pipeline Jednotný způsob odbavování HTTP požadavků Static Files Middleware Exception Middleware Authentication Middleware Router Middleware Request } } } MVC next(httpcontext) next(httpcontext) next(httpcontext) Response } } }

Publikace a hostování ASP.NET Core aplikací ASP.NET CORE HOSTING MODULE V2 HTTP Request Internet Information Services HTTP ASP.NET Core App dotnet run ASP.NET Core Module V2 HTTP ASP.NET Core App KESTREL port: 12345 ASP.NET Core Module V2 ASP.NET Core >= 2.2 IN-PROCESS HOSTING OUT-OF-PROCESS HOSTING <PropertyGroup> <AspNetCoreHostingModel>InProcess</AspNetCoreHostingModel> </PropertyGroup>

Publikace a hostování ASP.NET Core aplikací FDD, SCD SCD MODEL FDD (FDE) MODEL Microsoft.AspNetCore.App Microsoft.AspNetCore.App SHARED FRAMEWORK DEPLOY PACKAGE ASP.NET Core Runtime TARGET MACHINE NET Core Runtime

Shrnutí Co byste měli o [ASP].NET Core vědět - SDK & Runtimes + správa pomocí CLI - Nový csproj a tvorba NuGet balíčků a Global Tools - Obecné moduly DI, Configuration, Logging - Životní cyklus ASP.NET Core aplikace a výchozí šablona - Publikování aplikací v režimech SCD a FDD