Baru-baru ini, kami meningkatkan ASP.NET Core ke versi 2.1. Salah satu pencipta platform, kolega kami David Fowler, membagikan beberapa fitur berguna yang hanya diketahui sedikit orang. Selain itu, selain 9 fitur rahasia ASP.NET Core, di bawah potongan Anda juga akan menemukan daftar inovasi utama dengan semua tautan yang bermanfaat. Bergabunglah sekarang!

Versi 2.1 dari platform ASP.NET Core terbuka dirilis, dan pengembang David Fowler
tweeted beberapa fitur berguna yang hanya sedikit orang tahu tentang. Tentu saja, sekarang platform lebih cepat, tetapi ada juga sejumlah fitur baru dan praktik terbaik yang patut dipertimbangkan secara lebih rinci.
ASP.NET Core sekarang bekerja dengan model hosting baru. Aplikasi .NET membentuk dan
memulai host .
Tuan rumah bertanggung jawab untuk meluncurkan aplikasi dan mengelola siklus hidup mereka. Tujuan dari Generic Host adalah untuk memisahkan pipelining HTTP dari API host web agar dapat membuat lebih banyak skrip pada host. Perpesanan, latar belakang, dan tugas non-HTTP lainnya berfungsi lebih baik dengan fitur Host Generik end-to-end seperti konfigurasi, injeksi ketergantungan (DI), dan pencatatan.
Ini berarti bahwa sekarang untuk skrip tanpa hosting web, tidak hanya ada WebHost, tetapi juga Generik Host. Pada saat yang sama, pekerjaan akan senyaman dengan ASP.NET Core, tetapi Anda juga akan memiliki fitur-fitur baru, seperti DI, pencatatan dan konfigurasi. Kode contoh untuk Generic Host
dapat ditemukan di GitHub .
Dengannya, Anda dapat menjalankan operasi latar belakang yang lama baik di host universal maupun di aplikasi web Anda. ASP.NET Core 2.1
memperkenalkan dukungan untuk kelas dasar BackgroundService, yang sangat memudahkan pembuatan loop asinkron yang panjang. Kode contoh untuk Layanan Hosted juga ada
di GitHub .
Buat tugas latar belakang sementara yang sederhana:
public Task StartAsync(CancellationToken cancellationToken) { _logger.LogInformation("Timed Background Service is starting."); _timer = new Timer(DoWork, null, TimeSpan.Zero, TimeSpan.FromSeconds(5)); return Task.CompletedTask; }
mudah!
Anda sekarang dapat meng-host ASP.NET Core di dalam layanan Windows! Banyak pengguna telah meminta untuk menambahkan fitur ini. Anda tidak lagi membutuhkan IIS untuk menjadi tuan rumah apa pun yang Anda inginkan. Lihatlah
Microsoft.AspNetCore.Hosting.WindowsServices di NuGet dan
dokumentasi terperinci tentang hosting aplikasi ASP.NET Core Anda sendiri di Windows sebagai layanan Windows tanpa IIS.
public static void Main(string[] args) { var pathToExe = Process.GetCurrentProcess().MainModule.FileName; var pathToContentRoot = Path.GetDirectoryName(pathToExe); var host = WebHost.CreateDefaultBuilder(args) .UseContentRoot(pathToContentRoot) .UseStartup<Startup>() .Build(); host.RunAsService(); }
Seperti biasa, implementasi yang sederhana dan akurat menggunakan sumber di GitHub.
[assembly: HostingStartup(typeof(SampleStartups.StartupInjection))]
Ini akan menarik bagi Anda, pastikan untuk memperhatikan mereka. Anda dapat membuat paket yang digunakan sebagai alat bantu untuk kode sumber yang didistribusikan melalui sumber bersama. Antara satu sama lain, kami menyebutnya "paket sumber bersama". Mereka
digunakan dalam ASP.NET Core di mana-mana , ketika sesuatu harus dibagikan, tetapi itu tidak boleh diakses publik melalui API. Maka kode Anda akan digunakan, tetapi tidak akan ada dependensi pada paket akhir.
Mereka digunakan dalam CSPROJ
dengan cara ini . Perhatikan atribut
PrivateAssets :
<PackageReference Include="Microsoft.Extensions.ClosedGenericMatcher.Sources" PrivateAssets="All" Version="" /> <PackageReference Include="Microsoft.Extensions.ObjectMethodExecutor.Sources" PrivateAssets="All" Version="" />
Jika Anda perlu menggunakan metode dalam tipe melalui refleksi, dan metode ini bisa asinkron, fungsi
ObjectMethodExecutor yang dioptimalkan dan fleksibel, yang kami gunakan di mana-mana dalam basis kode inti ASP.NET, akan membantu Anda.
Tim menggunakan kode ini dalam MVC untuk memanggil metode pengontrol Anda. Mereka menggunakan kode ini di SignalR untuk memanggil metode hub. Ini bekerja dengan metode sinkron dan asinkron. Itu juga dapat bekerja dengan objek yang diharapkan khusus dan alur kerja asinkron F #.
Metode kecil dan sering diminta. Jika Anda tidak menyukai apa yang ditampilkan setelah memulai driver dotnet ketika Anda meng-host aplikasi web (mencetak informasi yang mengikat), maka Anda dapat menggunakan metode ekstensi SuppressStatusMessages yang baru.
WebHost.CreateDefaultBuilder(args) .SuppressStatusMessages(true) .UseStartup<Startup>();
Dalam versi 2.1, menjadi lebih mudah untuk mengkonfigurasi parameter yang memerlukan layanan. Sebelumnya, Anda harus membuat jenis yang diperoleh menggunakan IConfigureOptions, sekarang Anda bisa melakukan semua ini di ConfigureServices menggunakan AddOptions โนTOptionsโบ
public void ConfigureServicdes(IServiceCollection services) { services.AddOptions<MyOptions>() .Configure<IHostingEnvironment>((o,env) => { o.Path = env.WebRootPath; }); }
Biasanya tidak perlu mengkonfigurasi IHttpContext, tetapi banyak yang ingin tahu
bagaimana melakukan ini , dan beberapa percaya bahwa ini harus dilakukan secara otomatis. Ini tidak dicatat secara default, karena kehadirannya menyebabkan penurunan kinerja. Namun, dalam ASP.NET Core 2.1
, PR ditambahkan untuk metode ekstensi, yang
akan memfasilitasi proses jika Anda mau.
services.AddHttpContextAccessor ();
Jadi, ASP.NET Core 2.1
siap dirilis .
Fitur baru dalam versi ini:
Lihat
daftar perubahan dalam ASP.NET Core 2.1 di ASP.NET Core docs untuk mempelajari lebih lanjut tentang fitur-fitur ini. Daftar lengkap dari semua perubahan dalam versi baru disediakan dalam
catatan rilis .
Cobalah! Ikuti
kursus QuickStart dan Anda dapat membuat aplikasi web dasar dalam 10 menit.