Apa yang baru dalam ASP.NET Core 2.1

Artikel ini menyoroti perubahan paling signifikan dalam ASP.NET Core 2.1, dengan tautan ke dokumentasi yang relevan.

SignalR

SignalR telah ditulis ulang untuk ASP.NET Core 2.1.

ASP.NET Core SignalR mencakup sejumlah peningkatan:

  • Model peluasan skala yang disederhanakan.
  • Klien JavaScript baru tanpa dependensi jQuery.
  • Protokol biner ringkas baru berdasarkan MessagePack.
  • Dukungan untuk protokol kustom.
  • Model respons streaming baru.
  • Dukungan untuk klien berdasarkan WebSocket telanjang.

Untuk informasi selengkapnya, lihat ASP.NET Core SignalR.

Razor pustaka kelas

ASP.NET Core 2.1 memudahkan untuk membangun dan menyertakan RazorUI berbasis dalam pustaka dan membagikannya di beberapa proyek. SDK baru Razor memungkinkan pembuatan Razor file ke dalam proyek pustaka kelas yang dapat dimasukan ke dalam paket NuGet. Tampilan dan halaman dalam pustaka secara otomatis ditemukan dan dapat ditimpa oleh aplikasi. Dengan mengintegrasikan Razor kompilasi ke dalam build:

  • Waktu mulai aplikasi secara signifikan lebih cepat.
  • Pembaruan cepat untuk Razor tampilan dan halaman pada runtime masih tersedia sebagai bagian dari alur kerja pengembangan berulang.

Untuk informasi selengkapnya, lihat Membuat UI yang dapat digunakan kembali menggunakan Razor proyek Pustaka Kelas.

Identity Pustaka UI & perancah

ASP.NET Core 2.1 menyediakan ASP.NET Core Identity sebagai Razor Pustaka Kelas. Aplikasi yang menyertakan Identity dapat menerapkan perancah baru Identity untuk secara selektif menambahkan kode sumber yang terkandung dalam IdentityRazor Pustaka Kelas (RCL). Anda mungkin ingin membuat kode sumber sehingga Anda dapat mengubah kode dan mengubah perilaku. Misalnya, Anda dapat menginstruksikan perancah untuk menghasilkan kode yang digunakan dalam pendaftaran. Kode yang dihasilkan lebih diutamakan daripada kode yang sama dalam Identity RCL.

Aplikasi yang tidak menyertakan autentikasi dapat menerapkan Identity perancah untuk menambahkan paket RCLIdentity. Anda memiliki opsi untuk memilih Identity kode yang akan dibuat.

Untuk informasi selengkapnya, lihat Perancah Identity dalam proyek ASP.NET Core.

HTTPS

Dengan peningkatan fokus pada keamanan dan privasi, mengaktifkan HTTPS untuk aplikasi web penting. Penerapan HTTPS menjadi semakin ketat di web. Situs yang tidak menggunakan HTTPS dianggap tidak aman. Browser (Chromium, Mozilla) mulai memberlakukan bahwa fitur web harus digunakan dari konteks yang aman. GDPR memerlukan penggunaan HTTPS untuk melindungi privasi pengguna. Saat menggunakan HTTPS dalam produksi sangat penting, menggunakan HTTPS dalam pengembangan dapat membantu mencegah masalah dalam penyebaran (misalnya, tautan yang tidak aman). ASP.NET Core 2.1 mencakup sejumlah peningkatan yang memudahkan penggunaan HTTPS dalam pengembangan dan untuk mengonfigurasi HTTPS dalam produksi. Untuk informasi selengkapnya, lihat Memberlakukan HTTPS.

Aktif secara default

Untuk memfasilitasi pengembangan situs web yang aman, HTTPS sekarang diaktifkan secara default. Mulai dari 2.1, Kestrel mendengarkan https://localhost:5001 kapan sertifikat pengembangan lokal ada. Sertifikat pengembangan dibuat:

  • Sebagai bagian dari pengalaman eksekusi pertama .NET Core SDK, saat Anda menggunakan SDK untuk pertama kalinya.
  • Gunakan alat baru dev-certs secara manual.

Jalankan dotnet dev-certs https --trust untuk mempercayai sertifikat.

Pengalihan dan penerapan HTTPS

Aplikasi web biasanya perlu mendengarkan di HTTP dan HTTPS, tetapi kemudian mengalihkan semua lalu lintas HTTP ke HTTPS. Dalam 2.1, middleware pengalihan HTTPS khusus yang secara cerdas mengalihkan berdasarkan keberadaan konfigurasi atau port server terikat telah diperkenalkan.

Penggunaan HTTPS dapat diberlakukan lebih lanjut menggunakan HTTP Strict Transport Security Protocol (HSTS). HSTS menginstruksikan browser untuk selalu mengakses situs melalui HTTPS. ASP.NET Core 2.1 menambahkan middleware HSTS yang mendukung opsi untuk usia maks, subdomain, dan daftar pramuat HSTS.

Konfigurasi untuk produksi

Dalam produksi, HTTPS harus dikonfigurasi secara eksplisit. Di 2.1, skema konfigurasi default untuk mengonfigurasi HTTPS untuk Kestrel telah ditambahkan. Aplikasi dapat dikonfigurasi untuk digunakan:

  • Beberapa titik akhir termasuk URL. Untuk informasi selengkapnya, lihat Kestrel implementasi server web: Konfigurasi titik akhir.
  • Sertifikat yang digunakan untuk HTTPS baik dari file pada disk atau dari penyimpanan sertifikat.

GDPR

ASP.NET Core menyediakan API dan templat untuk membantu memenuhi beberapa persyaratan Peraturan Perlindungan Data Umum (GDPR) UE. Untuk informasi selengkapnya, lihat Dukungan GDPR di ASP.NET Core. Aplikasi sampel menunjukkan cara menggunakan dan memungkinkan Anda menguji sebagian besar titik ekstensi GDPR dan API yang ditambahkan ke templat ASP.NET Core 2.1.

Pengujian integrasi

Paket baru diperkenalkan yang menyederhanakan pembuatan dan eksekusi pengujian. Paket Microsoft.AspNetCore.Mvc.Testing menangani tugas berikut:

  • Menyalin file dependensi (*.deps) dari aplikasi yang diuji ke folder bin proyek pengujian.
  • Mengatur akar konten ke akar proyek aplikasi yang diuji sehingga file statis dan halaman/tampilan ditemukan saat pengujian dijalankan.
  • WebApplicationFactory<TEntryPoint> Menyediakan kelas untuk menyederhanakan bootstrapping aplikasi yang diuji dengan TestServer.

Pengujian berikut menggunakan xUnit untuk memeriksa apakah halaman Indeks dimuat dengan kode status keberhasilan dan dengan header Tipe Konten yang benar:

public class BasicTests
    : IClassFixture<WebApplicationFactory<RazorPagesProject.Startup>>
{
    private readonly HttpClient _client;

    public BasicTests(WebApplicationFactory<RazorPagesProject.Startup> factory)
    {
        _client = factory.CreateClient();
    }

    [Fact]
    public async Task GetHomePage()
    {
        // Act
        var response = await _client.GetAsync("/");

        // Assert
        response.EnsureSuccessStatusCode(); // Status Code 200-299
        Assert.Equal("text/html; charset=utf-8",
            response.Content.Headers.ContentType.ToString());
    }
}

Untuk informasi selengkapnya, lihat topik Pengujian integrasi.

[ApiController], ActionResult<T>

ASP.NET Core 2.1 menambahkan konvensi pemrograman baru yang memudahkan untuk membangun API web yang bersih dan deskriptif. ActionResult<T> adalah jenis baru yang ditambahkan untuk memungkinkan aplikasi mengembalikan jenis respons atau hasil tindakan lainnya (mirip dengan IActionResult), sambil masih menunjukkan jenis respons. Atribut [ApiController] juga telah ditambahkan sebagai cara untuk ikut serta dalam konvensi dan perilaku khusus API Web.

Untuk informasi selengkapnya, lihat Membangun API Web dengan ASP.NET Core.

IHttpClientFactory

ASP.NET Core 2.1 menyertakan layanan baru IHttpClientFactory yang memudahkan konfigurasi dan penggunaan instans HttpClient dalam aplikasi. HttpClient sudah memiliki konsep mendelegasikan penanganan yang dapat ditautkan bersama untuk permintaan HTTP keluar. Pabrik:

  • Membuat pendaftaran instans HttpClient per klien bernama lebih intuitif.
  • Menerapkan handler Polly yang memungkinkan kebijakan Polly digunakan untuk Retry, CircuitBreakers, dll.

Untuk informasi selengkapnya, lihat Memulai Permintaan HTTP.

Kestrel konfigurasi transportasi libuv

Dengan rilis ASP.NET Core 2.1, Kestreltransportasi default tidak lagi didasarkan pada Libuv tetapi sebaliknya berdasarkan soket terkelola. Untuk informasi selengkapnya, lihat Kestrel implementasi server web: Konfigurasi transportasi Libuv.

Penyusun host generik

Pembangun Host Generik (HostBuilder) telah diperkenalkan. Penyusun ini dapat digunakan untuk aplikasi yang tidak memproses permintaan HTTP (Olahpesan, tugas latar belakang, dll.).

Untuk informasi lebih lanjut, lihat Host Generik .NET.

Templat SPA yang diperbarui

Templat Aplikasi Halaman Tunggal untuk Angular dan React diperbarui untuk menggunakan struktur proyek standar dan sistem build untuk setiap kerangka kerja.

Templat Angular didasarkan pada Angular CLI, dan templat React didasarkan pada create-react-app.

Untuk informasi selengkapnya, lihat:

Razor Pencarian halaman untuk Razor aset

Dalam 2.1, Razor Halaman mencari Razor aset (seperti tata letak dan parsial) di direktori berikut dalam urutan yang tercantum:

  1. Folder Halaman Saat Ini.
  2. /Pages/Shared/
  3. /Views/Shared/

Razor Halaman dalam area

Razor Halaman sekarang mendukung area. Untuk melihat contoh area, buat aplikasi web Pages baru Razor dengan akun pengguna individual. Aplikasi Razor web Pages dengan akun pengguna individual mencakup /Area/Identity/Pages.

Versi kompatibilitas MVC

Metode ini SetCompatibilityVersion memungkinkan aplikasi untuk ikut serta atau menolak perubahan perilaku yang berpotensi melanggar yang diperkenalkan dalam ASP.NET Core MVC 2.1 atau yang lebih baru.

Untuk informasi selengkapnya, lihat Versi kompatibilitas untuk ASP.NET Core MVC.

Migrasi dari 2.0 ke 2.1

Lihat Migrasi dari ASP.NET Core 2.0 ke 2.1.

Informasi tambahan

Untuk daftar lengkap perubahan, lihat Catatan Rilis ASP.NET Core 2.1.