Pelatihan
Modul
Menerapkan operasi HTTP di ASP.NET Razor Pages - Training
Menerapkan operasi HTTP di ASP.NET Razor Pages
Browser ini sudah tidak didukung.
Mutakhirkan ke Microsoft Edge untuk memanfaatkan fitur, pembaruan keamanan, dan dukungan teknis terkini.
Catatan
.NET Framework dilayankan secara independen dari pembaruan Windows dengan perbaikan bug keamanan dan keandalan. Secara umum, pembaruan keamanan dirilis triwulanan. .NET Framework akan terus disertakan dengan Windows, tanpa rencana untuk menghapusnya. Anda tidak perlu memigrasikan aplikasi .NET Framework Anda, tetapi untuk pengembangan baru, gunakan .NET 8 atau yang lebih baru.
Artikel ini merangkum fitur dan peningkatan baru utama dalam versi .NET Framework berikut:
Artikel ini tidak memberikan informasi komprehensif tentang setiap fitur baru dan dapat berubah. Untuk informasi umum tentang .NET Framework, lihat Memulai. Untuk platform yang didukung, lihat Persyaratan Sistem . Untuk tautan unduhan dan instruksi penginstalan, lihat Panduan Penginstalan .
Catatan
Tim .NET Framework juga merilis fitur secara terpisah, menggunakan NuGet, untuk memperluas dukungan platform dan menyertakan fungsionalitas baru, seperti koleksi yang tidak dapat diubah dan jenis vektor yang mendukung SIMD. Untuk informasi selengkapnya, lihat Pustaka Kelas Tambahan dan API dan .NET Framework dan Rilis di Luar Versi Reguler. Lihat daftar lengkap paket NuGet untuk .NET Framework.
.NET Framework 4.8.1 dibangun pada versi .NET Framework 4.x sebelumnya dengan menambahkan banyak perbaikan baru dan beberapa fitur baru sambil tetap menjadi produk yang sangat stabil.
Anda dapat mengunduh .NET Framework 4.8.1 dari lokasi berikut:
.NET Framework 4.8 dapat diinstal pada Windows 11, Windows 10 versi 21H2, Windows 10 versi 21H1, Windows 10 versi 20H2, dan platform server yang sesuai dimulai dengan Windows Server 2022. Anda dapat menginstal .NET Framework 4.8.1 dengan menggunakan penginstal web atau penginstal offline. Cara yang disarankan bagi sebagian besar pengguna adalah dengan menggunakan alat penginstal web.
Anda dapat menargetkan .NET Framework 4.8.1 di Visual Studio 2022 17.3 atau yang lebih baru dengan menginstal Paket Pengembang .NET Framework 4.8.1.
.NET Framework 4.8.1 memperkenalkan fitur baru di area berikut:
Peningkatan aksesibilitas, yang memungkinkan aplikasi untuk memberikan pengalaman yang sesuai bagi pengguna Teknologi Bantuan, adalah fokus utama dari .NET Framework 4.8.1. Untuk informasi tentang peningkatan aksesibilitas di .NET Framework 4.8.1, lihat Apa yang baru dalam aksesibilitas di .NET Framework.
.NET Framework 4.8.1 menambahkan dukungan Arm64 asli ke keluarga .NET Framework. Jadi, investasi Anda dalam ekosistem aplikasi dan pustaka .NET Framework yang luas sekarang dapat memanfaatkan manfaat menjalankan beban kerja secara asli di Arm64—yaitu performa yang lebih baik jika dibandingkan dengan menjalankan kode x64 yang ditiru di Arm64.
Microsoft berkomitmen untuk menyediakan produk dan platform yang dapat diakses oleh semua orang. .NET Framework 4.8.1 menawarkan dua platform pengembangan Windows UI, yang keduanya memberi pengembang dukungan yang diperlukan untuk membuat aplikasi yang dapat diakses. Selama beberapa rilis terakhir, Formulir Windows dan WPF telah menambahkan fitur baru dan memperbaiki banyak masalah keandalan yang terkait dengan aksesibilitas. Anda dapat membaca selengkapnya tentang detail apa yang diperbaiki atau ditambahkan di setiap rilis dengan mengunjungi Apa yang baru dalam aksesibilitas di .NET Framework.
Dalam rilis ini, Baik Windows Forms maupun WPF telah melakukan penyempurnaan pada penanganan tipsalat agar lebih mudah diakses. Dalam kedua kasus, tipsalat sekarang mematuhi panduan yang ditetapkan dalam konten WCAG2.1 pada panduan Hover atau Focus. Persyaratan untuk penjelasan alat adalah:
Di Windows Forms, dukungan ini hanya tersedia pada sistem operasi Windows 11 atau yang lebih baru. Windows Forms adalah pembungkus terkelola tipis di sekitar Windows API, dan perilaku tooltip baru hanya tersedia pada Windows 11. WPF tidak memiliki dependensi versi sistem operasi untuk tooltip yang aksesibel.
WPF telah menerapkan sebagian besar persyaratan untuk tooltip yang sesuai dengan WCAG2.1 dalam .NET Framework 4.8. Dalam rilis ini, WPF meningkatkan pengalaman dengan memastikan bahwa tooltip di jendela saat ini dapat dengan mudah ditutup dengan menggunakan tombol Esc , tombol Ctrl (sendirian), atau dengan kombinasi Ctrl Shift+F10+. Cakupan tombol escape dikurangi dalam rilis ini untuk diterapkan pada jendela saat ini saja. Sebelumnya diterapkan pada tooltip terbuka mana pun dalam aplikasi.
Windows Forms adalah lapisan/arsitektur Windows UI pertama yang dibuat untuk .NET Framework. Dengan demikian, awalnya dibuat untuk menggunakan teknologi aksesibilitas warisan, yang tidak memenuhi persyaratan aksesibilitas saat ini. Dalam rilis ini, Windows Forms telah mengatasi sejumlah masalah. Untuk daftar lengkap perubahan terkait aksesibilitas, kunjungi Apa yang baru dalam aksesibilitas di .NET Framework.
Sorotan dari peningkatan Windows Forms di .NET Framework 4.8.1 adalah:
Dukungan pola teks– Formulir Windows menambahkan dukungan untuk Pola Teks UIA. Pola ini memungkinkan teknologi bantuan untuk melintasi konten TextBox atau kontrol berbasis teks serupa huruf demi huruf. Ini memungkinkan teks dipilih dan diedit di dalam kontrol, dan teks baru disisipkan pada posisi kursor. Windows Forms menambahkan dukungan ini untuk TextBox, sel DataGridView, kontrol ComboBox, dan banyak lagi.
Mengatasi masalah kontras– Dalam beberapa kontrol, Windows Forms telah mengubah rasio kontras persegi panjang pilihan menjadi lebih gelap dan lebih terlihat.
Memperbaiki beberapa masalah DataGridView:
.NET Framework 4.8 dibangun pada versi .NET Framework 4.x sebelumnya dengan menambahkan banyak perbaikan baru dan beberapa fitur baru sambil tetap menjadi produk yang sangat stabil.
Anda dapat mengunduh .NET Framework 4.8 dari lokasi berikut:
.NET Framework 4.8 dapat diinstal pada Windows 10, Windows 8.1, Windows 7 SP1, dan platform server yang sesuai yang dimulai dengan Windows Server 2008 R2 SP1. Anda dapat menginstal .NET Framework 4.8 dengan menggunakan penginstal web atau penginstal offline. Cara yang disarankan bagi sebagian besar pengguna adalah dengan menggunakan alat penginstal web.
Anda dapat menargetkan .NET Framework 4.8 di Visual Studio 2012 atau yang lebih baru dengan menginstal Paket Pengembang .NET Framework 4.8.
.NET Framework 4.8 memperkenalkan fitur baru di area berikut:
Peningkatan aksesibilitas, yang memungkinkan aplikasi untuk memberikan pengalaman yang sesuai bagi pengguna Teknologi Bantuan, terus menjadi fokus utama .NET Framework 4.8. Untuk informasi tentang peningkatan aksesibilitas di .NET Framework 4.8, lihat Apa yang baru dalam aksesibilitas di .NET Framework.
Mengurangi dampak FIPS pada Kriptografi. Dalam versi .NET Framework sebelumnya, kelas penyedia kriptografi terkelola seperti SHA256Managed melemparkan CryptographicException ketika pustaka kriptografi sistem dikonfigurasi dalam "mode FIPS". Pengecualian ini dilemparkan karena versi terkelola dari kelas penyedia kriptografi, tidak seperti pustaka kriptografi sistem, belum menjalani sertifikasi FIPS (Standar Pemrosesan Informasi Federal) 140-2. Karena hanya sedikit pengembang yang memiliki mesin pengembangan mereka dalam mode FIPS, pengecualian sering terjadi dalam sistem produksi.
Secara default dalam aplikasi yang menargetkan .NET Framework 4.8, kelas kriptografi terkelola berikut tidak lagi melemparkan CryptographicException dalam hal ini:
Sebaliknya, kelas-kelas ini mengalihkan operasi kriptografi ke pustaka kriptografi sistem. Perubahan ini secara efektif menghapus perbedaan yang berpotensi membingungkan antara lingkungan pengembang dan lingkungan produksi dan membuat komponen asli dan komponen terkelola beroperasi di bawah kebijakan kriptografi yang sama. Aplikasi yang bergantung pada pengecualian ini dapat memulihkan perilaku sebelumnya dengan mengatur sakelar AppContext Switch.System.Security.Cryptography.UseLegacyFipsThrow
ke true
. Untuk informasi selengkapnya, lihat kelas kriptografi yang dikelola yang tidak menghasilkan CryptographyException dalam mode FIPS.
Penggunaan versi ZLib yang diperbarui
Dimulai dengan .NET Framework 4.5, rakitan clrcompression.dll menggunakan ZLib, pustaka eksternal asli untuk kompresi data, untuk mengimplementasikan algoritma deflate. Versi .NET Framework 4.8 clrcompression.dll diperbarui untuk menggunakan ZLib Versi 1.2.11, yang mencakup beberapa peningkatan dan perbaikan utama.
Pengenalan ServiceHealthBehavior
Titik akhir kesehatan banyak digunakan oleh alat orkestrasi untuk mengelola layanan berdasarkan status kesehatannya. Pemeriksaan kesehatan juga dapat digunakan oleh alat pemantauan untuk melacak dan memberikan pemberitahuan tentang ketersediaan dan performa layanan.
ServiceHealthBehavior adalah perilaku layanan WCF yang memperluas IServiceBehavior. Saat ditambahkan ke koleksi ServiceDescription.Behaviors, perilaku layanan melakukan hal berikut:
Mengembalikan status kesehatan layanan dengan kode respons HTTP. Anda dapat menentukan dalam string kueri kode status HTTP untuk permintaan pemeriksaan kesehatan HTTP/GET.
Menerbitkan informasi tentang kesehatan layanan. Detail khusus layanan, termasuk status layanan, jumlah pembatasan, dan kapasitas dapat ditampilkan dengan menggunakan permintaan HTTP/GET dengan string kueri ?health
. Kemudahan akses ke informasi tersebut penting ketika memecahkan masalah layanan WCF yang salah tingkah laku.
Ada dua cara untuk mengekspos titik akhir kesehatan dan menerbitkan informasi kesehatan layanan WCF:
Melalui kode. Misalnya:
ServiceHost host = new ServiceHost(typeof(Service1),
new Uri("http://contoso:81/Service1"));
ServiceHealthBehavior healthBehavior =
host.Description.Behaviors.Find<ServiceHealthBehavior>();
healthBehavior ??= new ServiceHealthBehavior();
host.Description.Behaviors.Add(healthBehavior);
Dim host As New ServiceHost(GetType(Service1),
New Uri("http://contoso:81/Service1"))
Dim healthBehavior As ServiceHealthBehavior =
host.Description.Behaviors.Find(Of ServiceHealthBehavior)()
If healthBehavior Is Nothing Then
healthBehavior = New ServiceHealthBehavior()
End If
host.Description.Behaviors.Add(healthBehavior)
Dengan menggunakan file konfigurasi. Misalnya:
<behaviors>
<serviceBehaviors>
<behavior name="DefaultBehavior">
<serviceHealth httpsGetEnabled="true"/>
</behavior>
</serviceBehaviors>
</behaviors>
Status kesehatan layanan dapat dikueri dengan menggunakan parameter kueri seperti OnServiceFailure
, OnDispatcherFailure
, OnListenerFailure
, OnThrottlePercentExceeded
), dan kode respons HTTP dapat ditentukan untuk setiap parameter kueri. Jika kode respons HTTP dihilangkan untuk parameter kueri, kode respons HTTP 503 digunakan secara default. Misalnya:
OnServiceFailure: https://contoso:81/Service1?health&OnServiceFailure=450
Kode status respons HTTP 450 dikembalikan ketika ServiceHost.State lebih besar dari CommunicationState.Opened.
Parameter dan contoh kueri:
OnDispatcherFailure: https://contoso:81/Service1?health&OnDispatcherFailure=455
Kode status respons HTTP 455 dikembalikan ketika status salah satu dispatcher kanal lebih besar dari CommunicationState.Opened.
OnListenerFailure: https://contoso:81/Service1?health&OnListenerFailure=465
Kode status respons HTTP 465 dikembalikan ketika status salah satu pendengar saluran lebih besar dari CommunicationState.Opened.
OnThrottlePercentExceeded: https://contoso:81/Service1?health&OnThrottlePercentExceeded= 70:350,95:500
Menentukan persentase {1 – 100} yang memicu respons dan kode respons HTTP -nya {200 – 599}. Dalam contoh ini:
Jika persentase lebih besar dari 95, kode respons HTTP 500 dikembalikan.
Jika persentasenya antara 70 dan 95, 350 dikembalikan.
Jika tidak, 200 dikembalikan.
Status kesehatan layanan dapat ditampilkan baik dalam HTML dengan menentukan string kueri seperti https://contoso:81/Service1?health
atau di XML dengan menentukan string kueri seperti https://contoso:81/Service1?health&Xml
. String kueri seperti https://contoso:81/Service1?health&NoContent
mengembalikan halaman HTML kosong.
peningkatan DPI Tinggi
Dalam .NET Framework 4.8, WPF menambahkan dukungan untuk Kesadaran DPI V2 Per-Monitor dan penskalaan DPI Mixed-Mode. Lihat Pengembangan Aplikasi Desktop DPI Tinggi di Windows untuk informasi tambahan tentang pengembangan DPI tinggi.
.NET Framework 4.8 meningkatkan dukungan untuk interoperatasi HWND dan Windows Forms yang dihosting di aplikasi WPF High-DPI pada platform yang mendukung penskalaan DPI Mixed-Mode (dimulai dengan Pembaruan Windows 10 April 2018). Ketika kontrol HWND atau Windows Forms yang dihosting dibuat sebagai Mixed-Mode jendela berskala DPI dengan memanggil SetThreadDpiHostingBehavior dan SetThreadDpiAwarenessContext, mereka dapat dihosting dalam aplikasi WPF V2 Per-Monitor dan berukuran dan diskalakan dengan tepat. Konten yang dihosting tersebut tidak dirender di DPI asli; sebaliknya, sistem operasi menskalakan konten yang dihosting ke ukuran yang sesuai. Dukungan untuk mode kesadaran DPI Per-Monitor v2 juga memungkinkan kontrol WPF ditempatkan (yaitu, dijadikan induk) dalam jendela bawaan sistem operasi dalam aplikasi dengan DPI tinggi.
Untuk mengaktifkan dukungan untuk penskalaan DPI Tinggi Mixed-Mode, Anda dapat mengatur AppContext berikut mengalihkan file konfigurasi aplikasi:
<runtime>
<AppContextSwitchOverrides value = "Switch.System.Windows.DoNotScaleForDpiChanges=false; Switch.System.Windows.DoNotUsePresentationDpiCapabilityTier2OrGreater=false"/>
</runtime>
Runtime dalam .NET Framework 4.8 mencakup perubahan dan peningkatan berikut:
Peningkatan pada kompilator JIT. Pengkompilasi Just-in-time (JIT) di .NET Framework 4.8 didasarkan pada kompilator JIT di .NET Core 2.1. Banyak pengoptimalan dan semua perbaikan bug yang dibuat pada kompilator JIT .NET Core 2.1 disertakan dalam kompilator JIT .NET Framework 4.8.
Penyempurnaan NGEN. Runtime telah meningkatkan manajemen memorinya untuk gambar Native Image Generator (NGEN) sehingga data yang dipetakan dari gambar NGEN tidak berada di dalam memori. Ini mengurangi area permukaan yang tersedia untuk serangan yang mencoba menjalankan kode arbitrer dengan memodifikasi memori yang akan dijalankan.
Pemindaian Antimalware untuk semua perakitan. Dalam versi .NET Framework sebelumnya, runtime memindai semua rakitan yang dimuat dari disk menggunakan Windows Defender atau perangkat lunak antimalware pihak ketiga. Namun, rakitan yang dimuat dari sumber lain, seperti dengan metode Assembly.Load(Byte[]), tidak dipindai dan berpotensi mengandung malware yang tidak terdeteksi. Dimulai dengan .NET Framework 4.8 yang berjalan pada Windows 10, runtime memicu pemindaian oleh solusi antimalware yang mengimplementasikan Antimalware Scan Interface (AMSI).
.NET Framework 4.7.2 menyertakan fitur baru di area berikut:
Fokus berkelanjutan dalam .NET Framework 4.7.2 adalah peningkatan aksesibilitas, yang memungkinkan aplikasi untuk memberikan pengalaman yang sesuai bagi pengguna Teknologi Bantuan. Untuk informasi tentang peningkatan aksesibilitas di .NET Framework 4.7.2, lihat Apa yang baru dalam aksesibilitas di .NET Framework.
.NET Framework 4.7.2 memiliki sejumlah besar peningkatan kriptografi, dukungan dekompresi yang lebih baik untuk arsip ZIP, dan API koleksi tambahan.
Overload baru untuk RSA.Create dan DSA.Create
Metode DSA.Create(DSAParameters) dan RSA.Create(RSAParameters) memungkinkan Anda menyediakan parameter kunci saat membuat instans kunci DSA atau RSA baru. Mereka memungkinkan Anda untuk mengganti kode seperti berikut:
// Before .NET Framework 4.7.2
using (RSA rsa = RSA.Create())
{
rsa.ImportParameters(rsaParameters);
// Other code to execute using the RSA instance.
}
' Before .NET Framework 4.7.2
Using rsa = RSA.Create()
rsa.ImportParameters(rsaParameters)
' Other code to execute using the rsa instance.
End Using
dengan kode seperti ini:
// Starting with .NET Framework 4.7.2
using (RSA rsa = RSA.Create(rsaParameters))
{
// Other code to execute using the rsa instance.
}
' Starting with .NET Framework 4.7.2
Using rsa = RSA.Create(rsaParameters)
' Other code to execute using the rsa instance.
End Using
Metode DSA.Create(Int32) dan RSA.Create(Int32) memungkinkan Anda menghasilkan kunci DSA atau RSA baru dengan ukuran kunci tertentu. Misalnya:
using (DSA dsa = DSA.Create(2048))
{
// Other code to execute using the dsa instance.
}
Using dsa = DSA.Create(2048)
' Other code to execute using the dsa instance.
End Using
Konstruktor Rfc2898DeriveBytes menerima sebuah nama algoritma hash
Kelas Rfc2898DeriveBytes memiliki tiga konstruktor baru dengan parameter HashAlgorithmName yang mengidentifikasi algoritma HMAC untuk digunakan saat mengambil kunci. Alih-alih menggunakan SHA-1, pengembang harus menggunakan HMAC berbasis SHA-2 seperti SHA-256, seperti yang ditunjukkan dalam contoh berikut:
private static byte[] DeriveKey(string password, out int iterations, out byte[] salt,
out HashAlgorithmName algorithm)
{
iterations = 100000;
algorithm = HashAlgorithmName.SHA256;
const int SaltSize = 32;
const int DerivedValueSize = 32;
using (Rfc2898DeriveBytes pbkdf2 = new Rfc2898DeriveBytes(password, SaltSize,
iterations, algorithm))
{
salt = pbkdf2.Salt;
return pbkdf2.GetBytes(DerivedValueSize);
}
}
Private Shared Function DeriveKey(password As String, ByRef iterations As Integer,
ByRef salt AS Byte(), ByRef algorithm As HashAlgorithmName) As Byte()
iterations = 100000
algorithm = HashAlgorithmName.SHA256
Const SaltSize As Integer = 32
Const DerivedValueSize As Integer = 32
Using pbkdf2 = New Rfc2898DeriveBytes(password, SaltSize, iterations, algorithm)
salt = pbkdf2.Salt
Return pbkdf2.GetBytes(DerivedValueSize)
End Using
End Function
dukungan untuk kunci sementara
Impor PFX dapat secara opsional memuat kunci privat langsung dari memori, melewati hard drive. Ketika bendera X509KeyStorageFlags.EphemeralKeySet baru ditentukan dalam konstruktor X509Certificate2 atau salah satu kelebihan metode X509Certificate2.Import, kunci privat akan dimuat sebagai kunci sementara. Ini mencegah kunci terlihat pada disk. Namun:
Karena kunci tidak disimpan ke penyimpanan disk, sertifikat yang dimuat dengan opsi ini bukan pilihan yang tepat untuk ditambahkan ke X509Store.
Kunci yang dimuat dengan cara ini hampir selalu dimuat melalui Windows CNG. Oleh karena itu, penelepon harus mengakses kunci privat dengan memanggil metode ekstensi, seperti sertifikasi . GetRSAPrivateKey(). Atribut X509Certificate2.PrivateKey tidak berfungsi.
Karena properti X509Certificate2.PrivateKey warisan tidak berfungsi dengan sertifikat, pengembang harus melakukan pengujian ketat sebelum beralih ke kunci sementara.
Pembuatan terprogram permintaan penandatanganan sertifikasi PKCS#10 dan sertifikat kunci publik X.509
Dimulai dengan .NET Framework 4.7.2, aplikasi dapat menghasilkan permintaan penandatanganan sertifikat (CSR), yang memungkinkan pembuatan permintaan sertifikat diintegrasikan ke dalam alat yang sudah ada. Ini sering berguna dalam skenario pengujian.
Untuk informasi selengkapnya dan contoh kode, lihat "Pembuatan terprogram permintaan penandatanganan sertifikasi PKCS#10 dan sertifikat kunci publik X.509" di Blog .NET.
anggota baru SignerInfo
Dimulai dengan .NET Framework 4.7.2, kelas SignerInfo mengekspos informasi selengkapnya tentang tanda tangan. Anda dapat mengambil nilai properti System.Security.Cryptography.Pkcs.SignerInfo.SignatureAlgorithm untuk menentukan algoritma tanda tangan yang digunakan oleh penanda tangan. SignerInfo.GetSignature dapat dipanggil untuk mendapatkan salinan tanda tangan kriptografi untuk penanda tangan ini.
Membiarkan aliran yang dibungkus terbuka setelah CryptoStream dibuang
Dimulai dengan .NET Framework 4.7.2, kelas CryptoStream memiliki konstruktor tambahan yang memungkinkan Dispose untuk tidak menutup aliran yang dibungkus. Untuk membiarkan aliran yang dibungkus terbuka setelah instans CryptoStream dibuang, panggil konstruktor CryptoStream baru sebagai berikut:
var cStream = new CryptoStream(stream, transform, mode, leaveOpen: true);
Dim cStream = New CryptoStream(stream, transform, mode, leaveOpen:=true)
Perubahan dekompresi dalam DeflateStream
Dimulai dengan .NET Framework 4.7.2, implementasi operasi dekompresi di kelas DeflateStream telah berubah untuk menggunakan API Windows asli secara default. Biasanya, ini menghasilkan peningkatan performa yang substansial.
Dukungan untuk dekompresi dengan menggunakan WINDOWS API diaktifkan secara default untuk aplikasi yang menargetkan .NET Framework 4.7.2. Aplikasi yang menargetkan versi .NET Framework sebelumnya tetapi berjalan di bawah .NET Framework 4.7.2 dapat ikut serta dalam perilaku ini dengan menambahkan sakelar AppContext berikut ke file konfigurasi aplikasi:
<AppContextSwitchOverrides value="Switch.System.IO.Compression.DoNotUseNativeZipLibraryForDecompression=false" />
API Kumpulan Tambahan
.NET Framework 4.7.2 menambahkan sejumlah API baru ke jenis SortedSet<T> dan HashSet<T>. Ini termasuk:
TryGetValue
metode, yang memperluas pola coba yang digunakan dalam jenis koleksi lain ke dua jenis ini. Metodenya adalah:
Enumerable.To*
metode ekstensi, yang mengonversi koleksi menjadi HashSet<T>:
Konstruktor HashSet<T> baru yang memungkinkan Anda mengatur kapasitas koleksi, yang menghasilkan manfaat performa ketika Anda mengetahui ukuran HashSet<T> terlebih dahulu:
Kelas ConcurrentDictionary<TKey,TValue> mencakup kelebihan beban baru metode AddOrUpdate dan GetOrAdd untuk mengambil nilai dari kamus atau menambahkannya jika tidak ditemukan, dan untuk menambahkan nilai ke kamus atau memperbaruinya jika sudah ada.
public TValue AddOrUpdate<TArg>(TKey key, Func<TKey, TArg, TValue> addValueFactory, Func<TKey, TValue, TArg, TValue> updateValueFactory, TArg factoryArgument)
public TValue GetOrAdd<TArg>(TKey key, Func<TKey, TArg, TValue> valueFactory, TArg factoryArgument)
Public AddOrUpdate(Of TArg)(key As TKey, addValueFactory As Func(Of TKey, TArg, TValue), updateValueFactory As Func(Of TKey, TValue, TArg, TValue), factoryArgument As TArg) As TValue
Public GetOrAdd(Of TArg)(key As TKey, valueFactory As Func(Of TKey, TArg, TValue), factoryArgument As TArg) As TValue
Dukungan untuk injeksi dependensi di Formulir Web
Injeksi Dependensi (DI) memisahkan objek dan dependensinya sehingga kode objek tidak lagi perlu diubah hanya karena dependensi telah berubah. Saat mengembangkan aplikasi ASP.NET yang menargetkan .NET Framework 4.7.2, Anda dapat:
Gunakan injeksi berbasis setter, berbasis antarmuka, dan berbasis konstruktor di modul dan handler , instans Halaman , dan kontrol pengguna proyek aplikasi web ASP.NET.
Gunakan injeksi berbasis setter dan injeksi berbasis antarmuka pada handler dan modul , instance Halaman , serta kontrol pengguna dalam proyek situs web ASP.NET.
Colokkan kerangka kerja injeksi dependensi yang berbeda.
dukungan untuk cookie situs yang sama
SameSite mencegah browser mengirim cookie bersama dengan permintaan lintas situs. .NET Framework 4.7.2 menambahkan properti HttpCookie.SameSite yang nilainya adalah anggota enumerasi System.Web.SameSiteMode. Jika nilainya SameSiteMode.Strict atau SameSiteMode.Lax, ASP.NET menambahkan atribut SameSite
ke header set-cookie. Dukungan SameSite berlaku untuk objek HttpCookie, serta untuk FormsAuthentication dan cookie System.Web.SessionState.
Anda dapat mengatur SameSite untuk objek HttpCookie sebagai berikut:
var c = new HttpCookie("secureCookie", "same origin");
c.SameSite = SameSiteMode.Lax;
Dim c As New HttpCookie("secureCookie", "same origin")
c.SameSite = SameSiteMode.Lax
Anda juga dapat mengonfigurasi cookie SameSite di tingkat aplikasi dengan memodifikasi file web.config:
<system.web>
<httpCookies sameSite="Strict" />
</system.web>
Anda dapat menambahkan SameSite untuk cookie FormsAuthentication dan System.Web.SessionState dengan memodifikasi file konfigurasi web:
<system.web>
<authentication mode="Forms">
<forms cookieSameSite="Lax">
<!-- ... -->
</forms>
</authentication>
<sessionState cookieSameSite="Lax"></sessionState>
</system.web>
Implementasi properti HttpClientHandler
.NET Framework 4.7.1 menambahkan delapan properti ke kelas System.Net.Http.HttpClientHandler. Namun, dua melemparkan PlatformNotSupportedException. .NET Framework 4.7.2 sekarang menyediakan implementasi untuk properti ini. Propertinya adalah:
Dukungan untuk Autentikasi Universal Azure Active Directory dan autentikasi Multifaktor
Meningkatnya tuntutan kepatuhan dan keamanan mengharuskan banyak pelanggan menggunakan autentikasi multifaktor (MFA). Selain itu, praktik terbaik saat ini mencegah termasuk kata sandi pengguna langsung dalam string koneksi. Untuk mendukung perubahan ini, .NET Framework 4.7.2 memperluas string koneksi SQLClient dengan menambahkan nilai baru, "Active Directory Interactive", untuk kata kunci "Autentikasi" yang ada untuk mendukung MFA dan Autentikasi Azure AD. Metode interaktif baru mendukung pengguna asli dan federasi Azure Active Directory serta pengguna tamu Azure Active Directory. Ketika metode ini digunakan, autentikasi MFA yang diberlakukan oleh Azure AD didukung untuk database SQL. Selain itu, proses autentikasi meminta kata sandi pengguna untuk mematuhi praktik terbaik keamanan.
Di versi .NET Framework sebelumnya, konektivitas SQL hanya mendukung opsi SqlAuthenticationMethod.ActiveDirectoryPassword dan SqlAuthenticationMethod.ActiveDirectoryIntegrated. Keduanya adalah bagian dari protokol ADAL non-interaktif, yang tidak mendukung MFA. Dengan opsi SqlAuthenticationMethod.ActiveDirectoryInteractive baru, konektivitas SQL mendukung MFA serta metode autentikasi yang ada (kata sandi dan autentikasi terintegrasi), yang memungkinkan pengguna memasukkan kata sandi pengguna secara interaktif tanpa menyimpan kata sandi dalam string koneksi.
Untuk informasi selengkapnya dan contohnya, lihat "SQL -- Dukungan Autentikasi Universal dan Multifaktor Azure AD" di Blog .NET.
Dukungan untuk Always Encrypted versi 2
NET Framework 4.7.2 menambahkan dukungan untuk Always Encrypted yang berbasis enklave. Versi asli Always Encrypted adalah teknologi enkripsi sisi klien di mana kunci enkripsi tidak pernah meninggalkan klien. Dalam Always Encrypted berbasis enklave, klien dapat secara opsional mengirim kunci enkripsi ke enklave aman, yang merupakan entitas komputasi aman yang dapat dianggap sebagai bagian dari SQL Server tetapi kode SQL Server tidak dapat diubah. Untuk mendukung Always Encrypted berbasis enklave, .NET Framework 4.7.2 menambahkan jenis dan anggota berikut ke namespace System.Data.SqlClient:
SqlConnectionStringBuilder.EnclaveAttestationUrl, yang menentukan Uri untuk Always Encrypted berbasis enklave.
SqlColumnEncryptionEnclaveProvider, yang merupakan kelas abstrak dari mana semua penyedia enklave berasal.
SqlEnclaveSession, yang merangkum status untuk sesi enklave tertentu.
SqlEnclaveAttestationParameters, yang menyediakan parameter pengesahan yang digunakan oleh SQL Server untuk mendapatkan informasi yang diperlukan untuk menjalankan Protokol Pengesahan tertentu.
File konfigurasi aplikasi kemudian menentukan implementasi konkret dari kelas System.Data.SqlClient.SqlColumnEncryptionEnclaveProvider abstrak yang menyediakan fungsionalitas untuk penyedia enklave. Misalnya:
<configuration>
<configSections>
<section name="SqlColumnEncryptionEnclaveProviders" type="System.Data.SqlClient.SqlColumnEncryptionEnclaveProviderConfigurationSection,System.Data,Version=4.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089"/>
</configSections>
<SqlColumnEncryptionEnclaveProviders>
<providers>
<add name="Azure" type="Microsoft.SqlServer.Management.AlwaysEncrypted.AzureEnclaveProvider,MyApp"/>
<add name="HGS" type="Microsoft.SqlServer.Management.AlwaysEncrypted.HGSEnclaveProvider,MyApp" />
</providers>
</SqlColumnEncryptionEnclaveProviders >
</configuration>
Alur dasar Always Encrypted berbasis enklave adalah:
Pengguna membuat koneksi Always Encrypted ke SQL Server yang mendukung fitur Always Encrypted berbasis enklave. Pengemudi menghubungi layanan pengesahan untuk memastikan bahwa terhubung ke enklave yang tepat.
Setelah enklave diverifikasi, driver membangun jalur aman dengan enklave aman yang dihosting di SQL Server.
Driver berbagi kunci enkripsi yang diotorisasi oleh klien dengan enklave aman selama durasi koneksi SQL.
Menemukan ResourceDictionaries dari Sumber
Dimulai dengan .NET Framework 4.7.2, asisten diagnostik dapat menemukan ResourceDictionaries yang telah dibuat dari Uri sumber tertentu. (Fitur ini untuk digunakan oleh asisten diagnostik, bukan oleh aplikasi produksi.) Asisten diagnostik seperti fasilitas "Edit dan Lanjutkan" Visual Studio memungkinkan penggunanya mengedit ResourceDictionary dengan niat bahwa perubahan diterapkan pada aplikasi yang sedang berjalan. Sebagai salah satu langkah untuk mencapai hal ini, kita perlu menemukan semua kamus sumber daya (ResourceDictionary) yang dibuat oleh aplikasi yang sedang berjalan dari kamus yang sedang diedit. Misalnya, aplikasi dapat mendeklarasikan ResourceDictionary yang kontennya disalin dari URI sumber tertentu:
<ResourceDictionary Source="MyRD.xaml" />
Asisten diagnostik yang mengedit markup asli di myRD.xaml dapat menggunakan fitur baru untuk menemukan kamus. Fitur ini diimplementasikan oleh metode statis baru, ResourceDictionaryDiagnostics.GetResourceDictionariesForSource. Asisten diagnostik memanggil metode baru menggunakan Uri absolut yang mengidentifikasi markup asli, seperti yang diilustrasikan oleh kode berikut:
IEnumerable<ResourceDictionary> dictionaries = ResourceDictionaryDiagnostics.GetResourceDictionariesForSource(new Uri("pack://application:,,,/MyApp;component/MyRD.xaml"));
Dim dictionaries As IEnumerable(Of ResourceDictionary) = ResourceDictionaryDiagnostics.GetResourceDictionariesForSource(New Uri("pack://application:,,,/MyApp;component/MyRD.xaml"))
Metode mengembalikan enumerable kosong kecuali jika VisualDiagnostics diaktifkan dan variabel lingkungan ENABLE_XAML_DIAGNOSTICS_SOURCE_INFO
diset.
Menemukan pemilik ResourceDictionary
Dimulai dengan .NET Framework 4.7.2, asisten diagnostik dapat menemukan pemilik ResourceDictionarytertentu . (Fitur ini untuk digunakan oleh asisten diagnostik dan bukan oleh aplikasi produksi.) Setiap kali perubahan dilakukan pada ResourceDictionary, WPF secara otomatis menemukan semua referensi DynamicResource yang mungkin terpengaruh oleh perubahan.
Asisten diagnostik seperti fasilitas "Edit-and-Continue" di Visual Studio mungkin ingin memperluas ini untuk menangani referensi StaticResource dan. Langkah pertama dalam proses ini adalah menemukan pemilik kamus; yaitu, untuk menemukan semua objek yang properti Resources
-nya mengacu pada kamus (baik secara langsung, atau tidak langsung melalui properti ResourceDictionary.MergedDictionaries). Tiga metode statis baru yang diterapkan pada kelas System.Windows.Diagnostics.ResourceDictionaryDiagnostics, satu untuk setiap jenis dasar yang memiliki properti Resources
, mendukung langkah ini:
Metode ini mengembalikan enumerable kosong kecuali VisualDiagnostics diaktifkan dan variabel lingkungan ENABLE_XAML_DIAGNOSTICS_SOURCE_INFO
diatur.
Menemukan referensi StaticResource
Asisten diagnostik sekarang dapat menerima pemberitahuan setiap kali referensi StaticResource diselesaikan. (Fitur ini untuk digunakan oleh asisten diagnostik, bukan oleh aplikasi produksi.) Asisten diagnostik seperti fasilitas "Edit dan Lanjutkan" Visual Studio mungkin ingin memperbarui semua penggunaan sumber daya saat nilainya dalam ResourceDictionary berubah. WPF melakukan ini secara otomatis untuk referensi
Pemberitahuan diimplementasikan oleh peristiwa ResourceDictionaryDiagnostics.StaticResourceResolved baru:
public static event EventHandler<StaticResourceResolvedEventArgs> StaticResourceResolved;
Public Shared Event StaticResourceResolved As EventHandler(Of StaticResourceResolvedEventArgs)
Kejadian ini dipicu setiap kali runtime menyelesaikan referensi StaticResource. Argumen StaticResourceResolvedEventArgs menjelaskan resolusi dan menunjukkan objek serta properti yang menjadi tempat referensi StaticResource dan menggunakan ResourceDictionary serta kunci untuk resolusi.
public class StaticResourceResolvedEventArgs : EventArgs
{
public Object TargetObject { get; }
public Object TargetProperty { get; }
public ResourceDictionary ResourceDictionary { get; }
public object ResourceKey { get; }
}
Public Class StaticResourceResolvedEventArgs : Inherits EventArgs
Public ReadOnly Property TargetObject As Object
Public ReadOnly Property TargetProperty As Object
Public ReadOnly Property ResourceDictionary As ResourceDictionary
Public ReadOnly Property ResourceKey As Object
End Class
Peristiwa tidak dinaikkan (dan aksesor add
-nya diabaikan) kecuali VisualDiagnostics diaktifkan dan variabel lingkungan ENABLE_XAML_DIAGNOSTICS_SOURCE_INFO
diatur.
Aplikasi sadar HDPI untuk Windows Forms, Windows Presentation Foundation (WPF), dan Visual Studio Tools for Office (VSTO) semuanya dapat disebarkan dengan menggunakan ClickOnce. Jika entri berikut ditemukan dalam manifes aplikasi, penyebaran akan berhasil di bawah .NET Framework 4.7.2:
<windowsSettings>
<dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true</dpiAware>
</windowsSettings>
Untuk aplikasi Windows Forms, solusi sebelumnya untuk mengatur kesadaran DPI dalam file konfigurasi aplikasi daripada manifes aplikasi tidak lagi diperlukan agar penyebaran ClickOnce berhasil.
.NET Framework 4.7.1 menyertakan fitur baru di area berikut:
Selain itu, fokus utama dalam .NET Framework 4.7.1 adalah peningkatan aksesibilitas, yang memungkinkan aplikasi untuk memberikan pengalaman yang sesuai bagi pengguna Teknologi Bantuan. Untuk informasi tentang peningkatan aksesibilitas di .NET Framework 4.7.1, lihat Apa yang baru dalam aksesibilitas di .NET Framework.
Dukungan untuk .NET Standard 2.0
.NET Standard mendefinisikan sekumpulan API yang harus tersedia pada setiap implementasi .NET yang mendukung versi standar tersebut. .NET Framework 4.7.1 sepenuhnya mendukung .NET Standard 2.0 dan menambahkan sekitar 200 API yang ditentukan dalam .NET Standard 2.0 dan hilang dari .NET Framework 4.6.1, 4.6.2, dan 4.7. (Perhatikan bahwa versi .NET Framework ini mendukung .NET Standard 2.0 hanya jika file dukungan .NET Standard tambahan juga disebarkan pada sistem target.) Untuk informasi selengkapnya, lihat "Dukungan BCL - .NET Standard 2.0" di .NET Framework 4.7.1 Runtime dan Compiler Features posting blog.
Dukungan untuk penyusun konfigurasi
Penyusun konfigurasi memungkinkan pengembang untuk menyuntikkan dan membangun pengaturan konfigurasi untuk aplikasi secara dinamis pada waktu proses. Penyusun konfigurasi kustom dapat digunakan untuk memodifikasi data yang ada di bagian konfigurasi atau untuk membangun bagian konfigurasi sepenuhnya dari awal. Tanpa penyusun konfigurasi, file .config statis, dan pengaturannya ditentukan beberapa waktu sebelum aplikasi diluncurkan.
Untuk membuat penyusun konfigurasi kustom, Anda mendapatkan penyusun dari kelas ConfigurationBuilder abstrak dan mengambil alih ConfigurationBuilder.ProcessConfigurationSection dan ConfigurationBuilder.ProcessRawXml. Anda juga menentukan pembangun dalam file .config Anda. Untuk informasi selengkapnya, lihat bagian "Pembuat Konfigurasi" dalam .NET Framework 4.7.1 ASP.NET dan Fitur Konfigurasi posting blog.
Deteksi fitur waktu jalan
Kelas System.Runtime.CompilerServices.RuntimeFeature menyediakan mekanisme untuk menentukan apakah fitur yang telah ditentukan sebelumnya didukung pada implementasi .NET tertentu pada waktu kompilasi atau run time. Pada waktu kompilasi, pengkompilasi dapat memeriksa apakah bidang tertentu ada untuk menentukan apakah fitur tersebut didukung; jika demikian, itu dapat memancarkan kode yang memanfaatkan fitur tersebut. Pada waktu eksekusi, aplikasi dapat memanggil metode RuntimeFeature.IsSupported sebelum menghasilkan kode pada waktu eksekusi. Untuk informasi selengkapnya, lihat Menambahkan metode pembantu untuk menjelaskan fitur yang didukung oleh runtime.
jenis tuple nilai dapat diserialisasikan
Dimulai dengan .NET Framework 4.7.1, System.ValueTuple dan jenis generik terkait ditandai sebagai Serializable, yang memungkinkan serialisasi biner. Ini harus membuat migrasi tipe Tuple, seperti Tuple<T1,T2,T3> dan Tuple<T1,T2,T3,T4>, ke tipe tuple nilai menjadi lebih mudah. Untuk informasi selengkapnya, lihat "Compiler -- ValueTuple is Serializable" di .NET Framework 4.7.1 Runtime dan Compiler Features postingan blog.
dukungan untuk referensi baca-saja
.NET Framework 4.7.1 menambahkan System.Runtime.CompilerServices.IsReadOnlyAttribute. Atribut ini digunakan oleh pengkompilasi bahasa untuk menandai anggota yang tipe pengembalian ref atau parameternya bersifat baca-saja. Untuk informasi selengkapnya, lihat "Compiler -- Dukungan untuk ReadOnlyReferences" di .NET Framework 4.7.1 Runtime dan Compiler Features posting blog. Untuk informasi tentang nilai pengembalian ref, lihat nilai pengembalian ref dan ref lokal dan nilai pengembalian ref (Visual Basic).
peningkatan performa pengumpulan sampah
Perubahan pengumpulan sampah (GC) di .NET Framework 4.7.1 meningkatkan performa keseluruhan, terutama untuk alokasi tumpukan objek besar (LOH). Dalam .NET Framework 4.7.1, kunci terpisah digunakan untuk alokasi tumpukan objek kecil (SOH) dan tumpukan objek besar (LOH), yang memungkinkan alokasi LOH terjadi ketika GC latar belakang sedang membersihkan SOH. Akibatnya, aplikasi yang membuat sejumlah besar alokasi LOH akan mengalami pengurangan perebutan kunci alokasi dan peningkatan performa. Untuk informasi selengkapnya, lihat bagian "Runtime -- Peningkatan Performa GC" di .NET Framework 4.7.1 Fitur Runtime dan Compiler posting blog.
dukungan SHA-2 untuk Message.HashAlgorithm
Di .NET Framework 4.7 dan versi yang lebih lama, properti Message.HashAlgorithm hanya mendukung nilai HashAlgorithm.Md5 dan HashAlgorithm.Sha. Dimulai dengan .NET Framework 4.7.1, HashAlgorithm.Sha256, HashAlgorithm.Sha384, dan HashAlgorithm.Sha512 juga didukung. Apakah nilai ini benar-benar digunakan tergantung pada MSMQ, karena instans Message itu sendiri tidak melakukan hashing tetapi hanya meneruskan nilai ke MSMQ. Untuk informasi selengkapnya, lihat bagian "Dukungan SHA-2 untuk Message.HashAlgorithm" di posting blog .NET Framework 4.7.1 ASP.NET dan fitur Konfigurasi .
langkah-langkah Eksekusi dalam aplikasi ASP.NET
ASP.NET memproses permintaan dalam alur yang telah ditentukan sebelumnya yang mencakup 23 peristiwa. ASP.NET menjalankan setiap penanganan aktivitas sebagai langkah eksekusi. Dalam versi ASP.NET hingga .NET Framework 4.7, ASP.NET tidak dapat mentransfer konteks eksekusi karena beralih antara utas native dan terkelola. Sebaliknya, ASP.NET secara selektif hanya mengalirkan HttpContext. Dimulai dengan .NET Framework 4.7.1, metode HttpApplication.OnExecuteRequestStep(Action<HttpContextBase,Action>) juga memungkinkan modul untuk memulihkan data sekitar. Fitur ini ditargetkan pada pustaka yang berkaitan dengan pelacakan, pembuatan profil, diagnostik, atau transaksi, misalnya, yang peduli tentang alur eksekusi aplikasi. Untuk informasi selengkapnya, lihat "Fitur Eksekusi Langkah ASP.NET" di dalam artikel blog .NET Framework 4.7.1 ASP.NET dan Fitur Konfigurasi.
Penguraian HttpCookie ASP.NET
.NET Framework 4.7.1 menyertakan metode baru, HttpCookie.TryParse, yang menyediakan cara standar untuk membuat objek HttpCookie dari string dan menetapkan nilai cookie secara akurat seperti tanggal dan jalur kedaluwarsa. Untuk informasi selengkapnya, lihat "penguraian HttpCookie ASP.NET" di .NET Framework 4.7.1 ASP.NET dan Fitur Konfigurasi posting blog.
opsi hash SHA-2 untuk kredensial autentikasi formulir ASP.NET
Di .NET Framework 4.7 dan versi yang lebih lama, ASP.NET mengizinkan pengembang untuk menyimpan kredensial pengguna dengan kata sandi yang di-hash dalam file konfigurasi menggunakan MD5 atau SHA1. Dimulai dengan .NET Framework 4.7.1, ASP.NET juga mendukung opsi hash SHA-2 aman baru seperti SHA256, SHA384, dan SHA512. SHA1 tetap menjadi default, dan algoritma hash non-default dapat ditentukan dalam file konfigurasi web.
Penting
Microsoft menyarankan agar Anda menggunakan alur autentikasi paling aman yang tersedia. Jika Anda menyambungkan ke Azure SQL, Identitas Terkelola untuk sumber daya Azure adalah metode autentikasi yang direkomendasikan.
.NET Framework 4.7 menyertakan fitur baru di area berikut:
Untuk daftar API baru yang ditambahkan ke .NET Framework 4.7, lihat Perubahan API .NET Framework 4.7 di GitHub. Untuk daftar peningkatan fitur dan perbaikan bug di .NET Framework 4.7, lihat .NET Framework 4.7 Daftar Perubahan di GitHub. Untuk informasi selengkapnya, lihat Mengumumkan .NET Framework 4.7 di blog .NET.
.NET Framework 4.7 meningkatkan serialisasi dengan DataContractJsonSerializer:
Fungsionalitas yang ditingkatkan dengan Kriptografi Kurva Eliptik (ECC)*
Dalam .NET Framework 4.7, metode ImportParameters(ECParameters)
ditambahkan ke kelas ECDsa dan ECDiffieHellman untuk memungkinkan objek mewakili kunci yang sudah dibuat. Metode ExportParameters(Boolean)
juga ditambahkan untuk mengekspor kunci menggunakan parameter kurva eksplisit.
.NET Framework 4.7 juga menambahkan dukungan untuk kurva tambahan (termasuk rangkaian kurva Brainpool), dan telah menambahkan definisi yang telah ditentukan sebelumnya untuk kemudahan pembuatan melalui metode pabrik Create dan Create baru.
Anda dapat melihat contoh peningkatan kriptografi .NET Framework 4.7 di GitHub.
Dukungan yang lebih baik untuk karakter kontrol menggunakan DataContractJsonSerializer
Di .NET Framework 4.7, kelas DataContractJsonSerializer menserialisasikan karakter kontrol sesuai dengan standar ECMAScript 6. Perilaku ini diaktifkan secara default untuk aplikasi yang menargetkan .NET Framework 4.7, dan merupakan fitur keikutsertaan untuk aplikasi yang berjalan di bawah .NET Framework 4.7 tetapi menargetkan versi .NET Framework sebelumnya. Untuk informasi selengkapnya, lihat bagian kompatibilitas Aplikasi
.NET Framework 4.7 menambahkan fitur terkait jaringan berikut:
Dukungan sistem operasi default untuk protokol TLS*
Tumpukan TLS, yang digunakan oleh komponen System.Net.Security.SslStream dan komponen lapisan atas seperti HTTP, FTP, dan SMTP, memungkinkan pengembang untuk menggunakan protokol TLS bawaan yang didukung oleh sistem operasi. Pengembang tidak perlu lagi membuat kode keras versi TLS.
Di .NET Framework 4.7, ASP.NET menyertakan fitur baru berikut:
Ekstensibilitas Cache Objek
Dimulai dengan .NET Framework 4.7, ASP.NET menyediakan serangkaian API baru yang memungkinkan para pengembang mengganti implementasi bawaan ASP.NET untuk caching objek di memori dan pemantauan memori. Pengembang sekarang dapat mengganti salah satu dari tiga komponen berikut jika implementasi ASP.NET tidak memadai:
Penyimpanan Cache Objek. Dengan menggunakan bagian konfigurasi penyedia cache baru, pengembang dapat menyambungkan implementasi baru cache objek untuk aplikasi ASP.NET dengan menggunakan antarmuka ICacheStoreProvider baru.
pemantauan memori. Pemantau memori bawaan di ASP.NET memberi tahu aplikasi ketika mereka sedang berjalan mendekati batas byte pribadi yang dikonfigurasi untuk proses, atau ketika komputer memiliki sedikit RAM fisik total yang tersedia. Ketika batas ini mendekati, pemberitahuan akan muncul. Untuk beberapa aplikasi, pemberitahuan diaktifkan terlalu dekat dengan batas yang dikonfigurasi untuk memungkinkan reaksi yang berguna. Pengembang sekarang dapat menulis monitor memori mereka sendiri untuk mengganti default dengan menggunakan properti ApplicationMonitors.MemoryMonitor.
Reaksi Batasan Memori. Secara default, ASP.NET mencoba memangkas cache objek dan secara berkala memanggil GC.Collect ketika batas proses byte privat sudah dekat. Untuk beberapa aplikasi, frekuensi panggilan ke GC.Collect atau jumlah cache yang dipangkas tidak efisien. Pengembang sekarang dapat mengganti atau melengkapi perilaku default dengan berlangganan implementasi IObserver ke monitor memori aplikasi.
Windows Communication Foundation (WCF) menambahkan fitur dan perubahan berikut:
Kemampuan untuk mengonfigurasi pengaturan keamanan pesan default ke TLS 1.1 atau TLS 1.2
Dimulai dengan .NET Framework 4.7, WCF memungkinkan Anda mengonfigurasi TLS 1.1 atau TLS 1.2 selain SSL 3.0 dan TLS 1.0 sebagai protokol keamanan pesan default. Ini adalah pengaturan keikutsertaan; untuk mengaktifkannya, Anda harus menambahkan entri berikut ke file konfigurasi aplikasi Anda:
<runtime>
<AppContextSwitchOverrides value="Switch.System.ServiceModel.DisableUsingServicePointManagerSecurityProtocols=false;Switch.System.Net.DontEnableSchUseStrongCrypto=false" />
</runtime>
Peningkatan keandalan aplikasi WCF dan serialisasi WCF
WCF mencakup sejumlah perubahan kode yang menghilangkan kondisi balapan, sehingga meningkatkan performa dan keandalan opsi serialisasi. Ini termasuk:
Di .NET Framework 4.7, Windows Forms meningkatkan dukungan untuk monitor DPI tinggi.
dukungan DPI Tinggi
Dimulai dengan aplikasi yang menargetkan .NET Framework 4.7, .NET Framework menampilkan dukungan DPI tinggi dan DPI dinamis untuk aplikasi Windows Forms. Dukungan DPI tinggi meningkatkan tata letak dan tampilan formulir dan kontrol pada monitor DPI tinggi. DPI dinamis mengubah tata letak dan tampilan formulir dan kontrol saat pengguna mengubah DPI atau menampilkan faktor skala aplikasi yang sedang berjalan.
Dukungan DPI tinggi adalah fitur opsional yang Anda konfigurasikan dengan mendefinisikan bagian <System.Windows.Forms.ConfigurationSection> di file konfigurasi aplikasi Anda. Untuk informasi selengkapnya tentang menambahkan dukungan DPI tinggi dan dukungan DPI dinamis ke aplikasi Windows Forms Anda, lihat Dukungan DPI Tinggi di Windows Forms.
Dalam .NET Framework 4.7, WPF menyertakan penyempurnaan berikut:
Dukungan untuk tumpukan sentuhan/stylus berdasarkan pada pesan Windows WM_POINTER
Anda sekarang memiliki opsi untuk menggunakan lapisan sentuhan/stylus yang berdasarkan pesan WM_POINTER sebagai pengganti Windows Ink Services Platform (WISP). Ini adalah fitur opsional yang dapat diaktifkan di .NET Framework. Untuk informasi selengkapnya, lihat bagian kompatibilitas aplikasi.
Implementasi baru untuk API pencetakan WPF
API pencetakan WPF di kelas System.Printing.PrintQueue memanggil Windows Print Document Package API alih-alih XPS Print API yang tidak digunakan lagi. Untuk dampak perubahan ini pada kompatibilitas aplikasi, lihat bagian kompatibilitas aplikasi.
.NET Framework 4.6.2 menyertakan fitur baru di area berikut:
Untuk daftar API baru yang ditambahkan ke .NET Framework 4.6.2, lihat Perubahan API .NET Framework 4.6.2 di GitHub. Untuk daftar peningkatan fitur dan perbaikan bug di .NET Framework 4.6.2, lihat .NET Framework 4.6.2 Daftar Perubahan di GitHub. Untuk informasi selengkapnya, lihat Mengumumkan .NET Framework 4.6.2 di blog .NET.
Di .NET Framework 4.6.2, ASP.NET menyertakan penyempurnaan berikut:
Peningkatan dukungan untuk pesan kesalahan yang dilokalkan dalam validator anotasi data
Validator anotasi data memungkinkan Anda melakukan validasi dengan menambahkan satu atau beberapa atribut ke properti kelas. Elemen ValidationAttribute.ErrorMessage atribut menentukan teks pesan kesalahan jika validasi gagal. Dimulai dengan .NET Framework 4.6.2, ASP.NET memudahkan untuk melokalisasi pesan kesalahan. Pesan kesalahan akan dilokalkan jika:
ValidationAttribute.ErrorMessage disediakan dalam atribut validasi.
File sumber daya disimpan di folder App_LocalResources.
Nama file sumber daya yang dilokalkan memiliki bentuk DataAnnotation.Localization.{
nama}.resx
, di mana nama adalah nama kebudayaan dengan format languageCode-
country/regionCode atau languageCode.
Nama kunci sumber daya adalah string yang ditetapkan ke atribut ValidationAttribute.ErrorMessage, dan nilainya adalah pesan kesalahan yang dilokalkan.
Misalnya, atribut anotasi data berikut menentukan pesan kesalahan budaya default untuk peringkat yang tidak valid.
public class RatingInfo
{
[Required(ErrorMessage = "The rating must be between 1 and 10.")]
[Display(Name = "Your Rating")]
public int Rating { get; set; }
}
Public Class RatingInfo
<Required(ErrorMessage = "The rating must be between 1 and 10.")>
<Display(Name = "Your Rating")>
Public Property Rating As Integer = 1
End Class
Anda kemudian dapat membuat file sumber daya, DataAnnotation.Localization.fr.resx, yang kuncinya adalah string pesan kesalahan dan yang nilainya adalah pesan kesalahan yang dilokalkan. File harus ditemukan di folder App.LocalResources
. Misalnya, berikut ini adalah kunci dan nilainya dalam pesan kesalahan bahasa Prancis (fr) yang dilokalkan:
Nama | Nilai |
---|---|
Peringkat harus antara 1 dan 10. | Nilai harus berada di antara 1 dan 10. |
Selain itu, pelokalan anotasi data dapat diperluas. Pengembang dapat menyambungkan penyedia pelokalan string mereka sendiri dengan menerapkan antarmuka IStringLocalizerProvider untuk menyimpan string pelokalan di suatu tempat selain dalam file sumber daya.
dukungan Asinkron dengan penyedia penyimpanan status sesi
ASP.NET sekarang memungkinkan metode pengembalian tugas digunakan dengan penyedia penyimpanan status sesi, sehingga memungkinkan aplikasi ASP.NET mendapatkan manfaat skalabilitas asinkron. Untuk mendukung operasi asinkron dengan penyedia penyimpanan status sesi, ASP.NET menyertakan antarmuka baru, System.Web.SessionState.ISessionStateModule, yang mewarisi dari IHttpModule dan memungkinkan pengembang untuk menerapkan modul status sesi dan penyedia penyimpanan sesi asinkron mereka sendiri. Antarmuka didefinisikan sebagai berikut:
public interface ISessionStateModule : IHttpModule {
void ReleaseSessionState(HttpContext context);
Task ReleaseSessionStateAsync(HttpContext context);
}
Public Interface ISessionStateModule : Inherits IHttpModule
Sub ReleaseSessionState(context As HttpContext)
Function ReleaseSessionStateAsync(context As HttpContext) As Task
End Interface
Selain itu, kelas SessionStateUtility mencakup dua metode baru, IsSessionStateReadOnly dan IsSessionStateRequired, yang dapat digunakan untuk mendukung operasi asinkron.
dukungan Asinkron untuk penyedia cache keluaran
Dimulai dengan .NET Framework 4.6.2, metode pengembalian tugas dapat digunakan dengan penyedia output-cache untuk memberikan manfaat skalabilitas asinkron. Penyedia yang menerapkan metode ini mengurangi pemblokiran utas di server web dan meningkatkan skalabilitas layanan ASP.NET.
API berikut telah ditambahkan untuk mendukung penyedia output-cache asinkron:
Kelas System.Web.Caching.OutputCacheProviderAsync, yang mewarisi dari System.Web.Caching.OutputCacheProvider dan memungkinkan pengembang untuk menerapkan penyedia output-cache asinkron.
Kelas OutputCacheUtility, yang menyediakan metode pembantu untuk mengonfigurasi cache output.
18 metode baru di kelas System.Web.HttpCachePolicy. Ini termasuk GetCacheability, GetCacheExtensions, GetETag, GetETagFromFileDependencies, GetMaxAge, GetMaxAge, GetNoStore, GetNoTransforms, GetOmitVaryStar, GetProxyMaxAge, GetRevalidation, GetUtcLastModified, GetVaryByCustom, HasSlidingExpiration, dan IsValidUntilExpires.
2 metode baru di kelas System.Web.HttpCacheVaryByContentEncodings: GetContentEncodings dan SetContentEncodings.
2 metode baru di kelas System.Web.HttpCacheVaryByHeaders: GetHeaders dan SetHeaders.
2 metode baru di kelas System.Web.HttpCacheVaryByParams: GetParams dan SetParams.
Di kelas System.Web.Caching.AggregateCacheDependency, metode GetFileDependencies.
Dalam CacheDependency, metode GetFileDependencies.
Karakter dalam .NET Framework 4.6.2 diklasifikasikan berdasarkan Unicode Standard, Versi 8.0.0. Dalam .NET Framework 4.6 dan .NET Framework 4.6.1, karakter diklasifikasikan berdasarkan kategori karakter Unicode 6.3.
Dukungan untuk Unicode 8.0 terbatas pada klasifikasi karakter oleh kelas CharUnicodeInfo dan untuk jenis dan metode yang mengandalkannya. Ini termasuk kelas StringInfo, metode Char.GetUnicodeCategory yang kelebihan beban, dan kelas karakter dikenali oleh mesin ekspresi reguler .NET Framework. Perbandingan dan pengurutan karakter serta string tidak terpengaruh oleh perubahan ini dan tetap mengandalkan sistem operasi yang mendasarinya atau, pada sistem Windows 7, pada data karakter yang disediakan oleh .NET Framework.
Untuk perubahan kategori karakter dari Unicode 6.0 ke Unicode 7.0, lihat The Unicode Standard, Version 7.0.0 di situs web Unicode Consortium. Untuk perubahan dari Unicode 7.0 ke Unicode 8.0, lihat The Unicode Standard, Version 8.0.0 di situs web Unicode Consortium.
Dukungan untuk sertifikat X509 yang berisi FIPS 186-3 DSA
.NET Framework 4.6.2 menambahkan dukungan untuk sertifikat DSA (Algoritma Tanda Tangan Digital) X509 yang kuncinya melebihi batas FIPS 186-2 1024-bit.
Selain mendukung ukuran kunci yang lebih besar dari FIPS 186-3, .NET Framework 4.6.2 memungkinkan tanda tangan komputasi dengan keluarga algoritma hash SHA-2 (SHA256, SHA384, dan SHA512). Dukungan FIPS 186-3 disediakan oleh kelas System.Security.Cryptography.DSACng baru.
Sesuai dengan perubahan terbaru pada kelas RSA di .NET Framework 4.6 dan kelas ECDsa di .NET Framework 4.6.1, kelas dasar abstrak DSA di .NET Framework 4.6.2 memiliki metode tambahan untuk memungkinkan penelepon menggunakan fungsionalitas ini tanpa transmisi. Anda dapat memanggil metode ekstensi DSACertificateExtensions.GetDSAPrivateKey untuk menandatangani data, seperti yang ditunjukkan contoh berikut.
public static byte[] SignDataDsaSha384(byte[] data, X509Certificate2 cert)
{
using (DSA dsa = cert.GetDSAPrivateKey())
{
return dsa.SignData(data, HashAlgorithmName.SHA384);
}
}
Public Shared Function SignDataDsaSha384(data As Byte(), cert As X509Certificate2) As Byte()
Using DSA As DSA = cert.GetDSAPrivateKey()
Return DSA.SignData(data, HashAlgorithmName.SHA384)
End Using
End Function
Dan Anda dapat memanggil metode ekstensi DSACertificateExtensions.GetDSAPublicKey untuk memverifikasi data yang ditandatangani, seperti yang ditunjukkan contoh berikut.
public static bool VerifyDataDsaSha384(byte[] data, byte[] signature, X509Certificate2 cert)
{
using (DSA dsa = cert.GetDSAPublicKey())
{
return dsa.VerifyData(data, signature, HashAlgorithmName.SHA384);
}
}
Public Shared Function VerifyDataDsaSha384(data As Byte(), signature As Byte(), cert As X509Certificate2) As Boolean
Using dsa As DSA = cert.GetDSAPublicKey()
Return dsa.VerifyData(data, signature, HashAlgorithmName.SHA384)
End Using
End Function
Kejelasan yang ditingkatkan untuk masukan ke rutinitas derivasi kunci ECDiffieHellman
.NET Framework 3.5 menambahkan dukungan untuk Eliptic Curve Diffie-Hellman Key Agreement dengan tiga rutinitas Key Derivation Function (KDF) yang berbeda. Input ke rutinitas, dan rutinitas itu sendiri, dikonfigurasi melalui properti pada objek ECDiffieHellmanCng. Tetapi karena tidak setiap rutin membaca setiap properti input, ada banyak ruang untuk kebingungan pada masa lalu pengembang.
Untuk mengatasi hal ini di .NET Framework 4.6.2, tiga metode berikut telah ditambahkan ke kelas dasar ECDiffieHellman untuk lebih jelas mewakili rutinitas KDF ini dan inputnya:
Metode ECDiffieHellman | Deskripsi |
---|---|
DeriveKeyFromHash(ECDiffieHellmanPublicKey, HashAlgorithmName, Byte[], Byte[]) | Mendapatkan materi kunci menggunakan rumus HASH(secretPrepend || x || secretAppend) HASH(secretPrepend OrElse x OrElse secretAppend) di mana x adalah hasil komputasi dari algoritma EC Diffie-Hellman. |
DeriveKeyFromHmac(ECDiffieHellmanPublicKey, HashAlgorithmName, Byte[], Byte[], Byte[]) | Mendapatkan materi kunci menggunakan rumus HMAC(hmacKey, secretPrepend || x || secretAppend) HMAC(hmacKey, secretPrepend OrElse x OrElse secretAppend) di mana x adalah hasil komputasi dari algoritma EC Diffie-Hellman. |
DeriveKeyTls(ECDiffieHellmanPublicKey, Byte[], Byte[]) | Menghasilkan bahan kunci menggunakan algoritma derivasi fungsi pseudo-random (PRF) TLS. |
Dukungan untuk enkripsi simetris kunci persisten
Pustaka kriptografi Windows (CNG) menambahkan dukungan untuk menyimpan kunci simetrik yang tersimpan dan menggunakan kunci simetrik yang disimpan pada perangkat keras, dan .NET Framework 4.6.2 memungkinkan pengembang untuk memanfaatkan fitur ini. Karena konsep nama kunci dan penyedia kunci khusus implementasi, penggunaan fitur ini memerlukan penggunaan konstruktor tipe implementasi konkret alih-alih pendekatan pabrik yang diinginkan (seperti memanggil Aes.Create
).
Dukungan enkripsi simetris kunci persisten ada untuk algoritma AES (AesCng) dan 3DES (TripleDESCng). Misalnya:
public static byte[] EncryptDataWithPersistedKey(byte[] data, byte[] iv)
{
using (Aes aes = new AesCng("AesDemoKey", CngProvider.MicrosoftSoftwareKeyStorageProvider))
{
aes.IV = iv;
// Using the zero-argument overload is required to make use of the persisted key
using (ICryptoTransform encryptor = aes.CreateEncryptor())
{
if (!encryptor.CanTransformMultipleBlocks)
{
throw new InvalidOperationException("This is a sample, this case wasn't handled...");
}
return encryptor.TransformFinalBlock(data, 0, data.Length);
}
}
}
Public Shared Function EncryptDataWithPersistedKey(data As Byte(), iv As Byte()) As Byte()
Using Aes As Aes = New AesCng("AesDemoKey", CngProvider.MicrosoftSoftwareKeyStorageProvider)
Aes.IV = iv
' Using the zero-argument overload Is required to make use of the persisted key
Using encryptor As ICryptoTransform = Aes.CreateEncryptor()
If Not encryptor.CanTransformMultipleBlocks Then
Throw New InvalidOperationException("This is a sample, this case wasn't handled...")
End If
Return encryptor.TransformFinalBlock(data, 0, data.Length)
End Using
End Using
End Function
Dukungan SignedXml untuk hashing SHA-2
.NET Framework 4.6.2 menambahkan dukungan ke kelas SignedXml untuk metode tanda tangan RSA-SHA256, RSA-SHA384, dan RSA-SHA512 PKCS#1, serta algoritma hash referensi SHA256, SHA384, dan SHA512.
Semua konstanta URI diekspos pada SignedXml:
Bidang SignedXml | Konstan |
---|---|
XmlDsigSHA256Url | "http://www.w3.org/2001/04/xmlenc#sha256" |
XmlDsigRSASHA256Url | "http://www.w3.org/2001/04/xmldsig-more#rsa-sha256" |
XmlDsigSHA384Url | "http://www.w3.org/2001/04/xmldsig-more#sha384" |
XmlDsigRSASHA384Url | "http://www.w3.org/2001/04/xmldsig-more#rsa-sha384" |
XmlDsigSHA512Url | "http://www.w3.org/2001/04/xmlenc#sha512" |
XmlDsigRSASHA512Url | "http://www.w3.org/2001/04/xmldsig-more#rsa-sha512" |
Setiap program yang telah mendaftarkan handler SignatureDescription kustom ke CryptoConfig untuk menambahkan dukungan untuk algoritma ini akan terus berfungsi seperti sebelumnya, tetapi karena sekarang ada default platform, pendaftaran CryptoConfig tidak lagi diperlukan.
Penyedia Data .NET Framework untuk SQL Server (System.Data.SqlClient) menyertakan fitur baru berikut dalam .NET Framework 4.6.2:
Pengelompokan koneksi dan batas waktu pada database Azure SQL
Ketika pengelompokan koneksi diaktifkan dan waktu habis atau kesalahan masuk lainnya terjadi, pengecualian di-cache, dan pengecualian yang di-cache dilemparkan pada upaya koneksi berikutnya selama 5 detik hingga 1 menit berikutnya. Untuk informasi selengkapnya, lihat Kumpulan Koneksi SQL Server (ADO.NET).
Perilaku ini tidak diinginkan saat menyambungkan ke Azure SQL Database, karena upaya koneksi dapat gagal dengan kesalahan sementara yang biasanya dipulihkan dengan cepat. Untuk mengoptimalkan pengalaman coba lagi koneksi dengan lebih baik, perilaku periode pemblokiran kumpulan koneksi dihapus saat koneksi ke Azure SQL Database gagal.
Penambahan kata kunci PoolBlockingPeriod
baru memungkinkan Anda memilih periode pemblokiran yang paling cocok untuk aplikasi Anda. Nilai meliputi:
Periode pemblokiran kumpulan koneksi untuk aplikasi yang tersambung ke Azure SQL Database dinonaktifkan, dan periode pemblokiran kumpulan koneksi untuk aplikasi yang terhubung ke instans SQL Server lainnya diaktifkan. Ini adalah nilai default. Jika nama titik akhir Server berakhir dengan salah satu hal berikut ini, nama tersebut dianggap sebagai Azure SQL Database:
.database.windows.net
.database.chinacloudapi.cn
.database.usgovcloudapi.net
.database.cloudapi.de
Periode pemblokiran kumpulan koneksi selalu diaktifkan.
Periode pemblokiran kumpulan koneksi selalu dinonaktifkan.
Penyempurnaan untuk Always Encrypted
SQLClient memperkenalkan dua penyempurnaan untuk Always Encrypted:
Untuk meningkatkan performa kueri berparameter terhadap kolom database terenkripsi, metadata enkripsi untuk parameter kueri sekarang di-cache. Dengan properti SqlConnection.ColumnEncryptionQueryMetadataCacheEnabled diatur ke true
(yang merupakan nilai default), jika kueri yang sama dipanggil beberapa kali, klien mengambil metadata parameter dari server hanya sekali.
Entri kunci enkripsi kolom dalam cache kunci sekarang dikeluarkan setelah interval waktu yang dapat dikonfigurasi, diatur menggunakan properti SqlConnection.ColumnEncryptionKeyCacheTtl.
Dalam .NET Framework 4.6.2, Windows Communication Foundation telah ditingkatkan di area berikut:
dukungan keamanan transportasi WCF untuk sertifikat yang disimpan menggunakan CNG
Keamanan transportasi WCF mendukung sertifikat yang disimpan menggunakan pustaka kriptografi Windows (CNG). Dalam .NET Framework 4.6.2, dukungan ini terbatas pada penggunaan sertifikat dengan kunci publik yang memiliki eksponen tidak lebih dari 32 bit panjangnya. Ketika aplikasi menargetkan .NET Framework 4.6.2, fitur ini aktif secara default.
Untuk aplikasi yang menargetkan .NET Framework 4.6.1 dan yang lebih lama tetapi berjalan pada .NET Framework 4.6.2, fitur ini dapat diaktifkan dengan menambahkan baris berikut ke bagian
<AppContextSwitchOverrides
value="Switch.System.IdentityModel.DisableCngCertificates=false"
/>
Ini juga dapat dilakukan secara terprogram dengan kode seperti berikut:
private const string DisableCngCertificates = @"Switch.System.IdentityModel.DisableCngCertificates";
AppContext.SetSwitch(disableCngCertificates, false);
Const DisableCngCertificates As String = "Switch.System.IdentityModel.DisableCngCertificates"
AppContext.SetSwitch(disableCngCertificates, False)
Dukungan yang lebih baik untuk beberapa aturan penyesuaian waktu musim panas oleh kelas DataContractJsonSerializer
Pelanggan dapat menggunakan pengaturan konfigurasi aplikasi untuk menentukan apakah kelas DataContractJsonSerializer mendukung beberapa aturan penyesuaian untuk satu zona waktu. Ini adalah fitur yang bisa diaktifkan. Untuk mengaktifkannya, tambahkan pengaturan berikut ke file app.config Anda:
<runtime>
<AppContextSwitchOverrides value="Switch.System.Runtime.Serialization.DoNotUseTimeZoneInfo=false" />
</runtime>
Saat fitur ini diaktifkan, objek DataContractJsonSerializer menggunakan jenis TimeZoneInfo alih-alih jenis TimeZone untuk mendeserialisasi data tanggal dan waktu. TimeZoneInfo mendukung beberapa aturan penyesuaian, yang memungkinkan untuk bekerja dengan data zona waktu historis; TimeZone tidak.
Untuk informasi selengkapnya tentang struktur TimeZoneInfo dan penyesuaian zona waktu, lihat Gambaran Umum Zona Waktu.
Kecocokan terbaik untuk NetNamedPipeBinding
WCF memiliki pengaturan aplikasi baru yang dapat diatur pada aplikasi klien untuk memastikan mereka selalu terhubung ke layanan yang mendengarkan di URI yang paling sesuai dengan yang mereka minta. Dengan pengaturan aplikasi ini diatur ke false
(default), klien yang menggunakan NetNamedPipeBinding dapat mencoba menyambungkan ke layanan yang mendengarkan pada URI yang merupakan substring dari URI yang diminta.
Misalnya, klien mencoba terhubung ke layanan yang mendengarkan di net.pipe://localhost/Service1
, tetapi layanan yang berbeda pada komputer yang berjalan dengan hak istimewa administrator mendengarkan di net.pipe://localhost
. Dengan pengaturan aplikasi ini diatur ke false
, klien akan mencoba terhubung ke layanan yang salah. Setelah mengatur pengaturan aplikasi ke true
, klien akan selalu terhubung ke layanan yang paling cocok.
Catatan
Klien yang menggunakan NetNamedPipeBinding menemukan layanan berdasarkan alamat dasar layanan (jika ada) daripada alamat titik akhir lengkap. Untuk memastikan pengaturan ini selalu berfungsi, layanan harus menggunakan alamat dasar yang unik.
Untuk mengaktifkan perubahan ini, tambahkan pengaturan aplikasi berikut ke file App.config atau Web.config aplikasi klien Anda:
<configuration>
<appSettings>
<add key="wcf:useBestMatchNamedPipeUri" value="true" />
</appSettings>
</configuration>
SSL 3.0 bukan protokol default
Saat menggunakan NetTcp dengan keamanan transportasi dan jenis sertifikat kredensial, SSL 3.0 tidak lagi menjadi protokol default yang digunakan untuk menegosiasikan koneksi yang aman. Dalam kebanyakan kasus, seharusnya tidak ada dampak pada aplikasi yang ada, karena TLS 1.0 disertakan dalam daftar protokol untuk NetTcp. Semua klien yang ada harus dapat menegosiasikan koneksi menggunakan setidaknya TLS 1.0. Jika Ssl3 diperlukan, gunakan salah satu mekanisme konfigurasi berikut untuk menambahkannya ke daftar protokol yang dinegosiasikan.
Properti TcpTransportSecurity.SslProtocols
Bagian <transport> dari bagian <netTcpBinding>
Bagian <sslStreamSecurity> pada bagian <customBinding>
Dalam .NET Framework 4.6.2, Windows Presentation Foundation telah ditingkatkan di area berikut:
Pengurutan Grup
Aplikasi yang menggunakan objek CollectionView untuk mengelompokkan data sekarang dapat secara eksplisit menyatakan cara mengurutkan grup. Pengurutan eksplisit mengatasi masalah pengurutan non-intuitif yang terjadi saat aplikasi secara dinamis menambahkan atau menghapus grup, atau ketika mengubah nilai properti item yang terlibat dalam pengelompokan. Ini juga dapat meningkatkan performa proses pembuatan grup dengan memindahkan perbandingan properti pengelompokan dari jenis koleksi lengkap ke jenis grup.
Untuk mendukung pengurutan grup, properti GroupDescription.SortDescriptions dan GroupDescription.CustomSort baru menjelaskan cara mengurutkan kumpulan grup yang dihasilkan oleh objek GroupDescription. Ini mirip dengan cara properti bernama sama ListCollectionView yang menjelaskan bagaimana mengurutkan item data.
Dua properti statis baru dari kelas PropertyGroupDescription, CompareNameAscending dan CompareNameDescending, dapat digunakan untuk kasus yang paling umum.
Misalnya, XAML berikut mengelompokkan data berdasarkan usia, mengurutkan grup usia dalam urutan naik, dan mengelompokkan item dalam setiap grup usia menurut nama belakang.
<GroupDescriptions>
<PropertyGroupDescription
PropertyName="Age"
CustomSort=
"{x:Static PropertyGroupDescription.CompareNamesAscending}"/>
</PropertyGroupDescription>
</GroupDescriptions>
<SortDescriptions>
<SortDescription PropertyName="LastName"/>
</SortDescriptions>
dukungan keyboard sentuh
Dukungan keyboard sentuh memungkinkan pelacakan fokus dalam aplikasi WPF dengan secara otomatis memanggil dan mematikan Keyboard sentuh di Windows 10 ketika input sentuhan diterima oleh kontrol yang dapat mengambil input tekstual.
Dalam versi .NET Framework sebelumnya, aplikasi WPF tidak dapat ikut serta dalam pelacakan fokus tanpa menonaktifkan dukungan gerakan pena/sentuh WPF. Akibatnya, aplikasi WPF harus memilih antara dukungan sentuh WPF penuh atau mengandalkan promosi mouse Windows.
DPI Per-Monitor
Untuk mendukung proliferasi lingkungan DPI tinggi dan hybrid-DPI baru-baru ini untuk aplikasi WPF, WPF di .NET Framework 4.6.2 memungkinkan kesadaran per monitor. Lihat sampel dan panduan pengembang di GitHub untuk informasi selengkapnya tentang cara mengaktifkan aplikasi WPF Anda untuk mengetahui DPI per monitor.
Dalam versi .NET Framework sebelumnya, aplikasi WPF sadar sistem-DPI. Dengan kata lain, UI aplikasi diskalakan oleh OS yang sesuai, tergantung pada DPI monitor tempat aplikasi dirender.
Untuk aplikasi yang berjalan di bawah .NET Framework 4.6.2, Anda dapat menonaktifkan perubahan DPI per monitor di aplikasi WPF dengan menambahkan pernyataan konfigurasi ke bagian
<runtime>
<AppContextSwitchOverrides value="Switch.System.Windows.DoNotScaleForDpiChanges=false"/>
</runtime>
Di .NET Framework 4.6.2, Windows Workflow Foundation telah ditingkatkan di area berikut:
Dukungan untuk ekspresi C# dan IntelliSense di Perancang WF yang Dihosting Ulang
Dimulai dengan .NET Framework 4.5, WF mendukung ekspresi C# di Visual Studio Designer dan dalam alur kerja kode. Perancang Alur Kerja yang Dihosting Ulang adalah fitur utama WF yang memungkinkan Perancang Alur Kerja berada dalam aplikasi di luar Visual Studio (misalnya, di WPF). Windows Workflow Foundation menyediakan kemampuan untuk mendukung ekspresi C# dan IntelliSense di Desainer Alur Kerja yang Dihosting Ulang. Untuk informasi selengkapnya, lihat blog Windows Workflow Foundation.
Availability of IntelliSense when a customer rebuilds a workflow project from Visual Studio
Dalam versi .NET Framework sebelum 4.6.2, WF Designer IntelliSense rusak ketika pelanggan membangun kembali proyek alur kerja dari Visual Studio. Meskipun build proyek berhasil, jenis alur kerja tidak ditemukan pada perancang, dan peringatan dari IntelliSense untuk jenis alur kerja yang hilang muncul di jendela Daftar Kesalahan. .NET Framework 4.6.2 mengatasi masalah ini dan membuat IntelliSense tersedia.
aplikasi Workflow V1 dengan Pelacakan Proses Kerja kini berjalan dalam mode FIPS
Mesin dengan Mode Kepatuhan FIPS diaktifkan kini dapat menjalankan aplikasi bergaya Versi 1 alur kerja dengan sukses, dengan pelacakan Alur Kerja aktif. Untuk mengaktifkan skenario ini, Anda harus membuat perubahan berikut pada file app.config Anda:
<add key="microsoft:WorkflowRuntime:FIPSRequired" value="true" />
Jika skenario ini tidak diaktifkan, menjalankan aplikasi terus menghasilkan pengecualian dengan pesan, "Implementasi ini bukan bagian dari algoritma kriptografi tervalidasi Windows Platform FIPS."
Peningkatan Workflow saat menggunakan Pembaruan Dinamis dengan Visual Studio Workflow Designer
Perancang Alur Kerja, Perancang Aktivitas Bagan Alur, dan Perancang Aktivitas Alur Kerja lainnya sekarang berhasil memuat dan menampilkan alur kerja yang telah disimpan setelah memanggil metode DynamicUpdateServices.PrepareForUpdate. Dalam versi .NET Framework sebelum .NET Framework 4.6.2, memuat file XAML di Visual Studio untuk alur kerja yang telah disimpan setelah memanggil DynamicUpdateServices.PrepareForUpdate dapat mengakibatkan masalah berikut:
Perancang Alur Kerja tidak dapat memuat file XAML dengan benar (ketika ViewStateData.Id berada di akhir baris).
Perancang Aktivitas Diagram Alur atau Perancang Aktivitas Alur Kerja lainnya dapat menampilkan semua objek di lokasi defaultnya dibandingkan dengan nilai properti terlampir.
ClickOnce telah diperbarui untuk mendukung TLS 1.1 dan TLS 1.2 selain protokol 1.0, yang sudah didukungnya. ClickOnce secara otomatis mendeteksi protokol mana yang diperlukan; tidak ada langkah tambahan dalam aplikasi ClickOnce yang diperlukan untuk mengaktifkan dukungan TLS 1.1 dan 1.2.
Windows sekarang menawarkan kemampuan untuk menghadirkan aplikasi desktop Windows yang ada, termasuk aplikasi WPF dan Windows Forms, ke Universal Windows Platform (UWP). Teknologi ini bertindak sebagai jembatan dengan memungkinkan Anda memigrasikan basis kode yang ada secara bertahap ke UWP, sehingga membawa aplikasi Anda ke semua perangkat Windows 10.
Aplikasi desktop yang dikonversi mendapatkan identitas aplikasi yang mirip dengan identitas aplikasi UWP, yang memungkinkan akses ke API UWP untuk mengaktifkan fitur seperti Live Tiles dan pemberitahuan. Aplikasi terus berperilaku seperti sebelumnya dan berjalan sebagai aplikasi kepercayaan penuh. Setelah aplikasi dikonversi, proses kontainer aplikasi dapat ditambahkan ke proses kepercayaan penuh yang ada untuk menambahkan antarmuka pengguna adaptif. Ketika semua fungsionalitas dipindahkan ke proses kontainer aplikasi, proses kepercayaan penuh dapat dihapus dan aplikasi UWP baru dapat tersedia untuk semua perangkat Windows 10.
API debugging tidak terkelola telah ditingkatkan di .NET Framework 4.6.2 untuk melakukan analisis tambahan ketika NullReferenceException dilemparkan sehingga dimungkinkan untuk menentukan variabel mana dalam satu baris kode sumber null
. Untuk mendukung skenario ini, API berikut telah ditambahkan ke API debugging yang tidak dikelola.
antarmuka ICorDebugCode4, antarmuka ICorDebugVariableHome, dan antarmuka ICorDebugVariableHomeEnum, yang mengekspos asal asli variabel terkelola. Ini memungkinkan debugger untuk melakukan beberapa analisis aliran kode ketika NullReferenceException terjadi dan bekerja mundur untuk menentukan variabel terkelola yang sesuai dengan lokasi asli yang null
.
Metode ICorDebugType2::GetTypeID menyediakan pemetaan untuk ICorDebugType ke COR_TYPEID, yang memungkinkan debugger untuk mendapatkan COR_TYPEID tanpa instans ICorDebugType. API yang ada pada COR_TYPEID kemudian dapat digunakan untuk menentukan tata letak kelas jenis.
.NET Framework 4.6.1 menyertakan fitur baru di area berikut:
Untuk informasi selengkapnya tentang .NET Framework 4.6.1, lihat topik berikut:
Kompatibilitas Aplikasi dalam 4.6.1
Perbedaan API .NET Framework (di GitHub)
.NET Framework 4.6 menambahkan dukungan RSACng untuk sertifikat X509. .NET Framework 4.6.1 menambahkan dukungan untuk sertifikat X509 ECDSA (Elliptic Curve Digital Signature Algorithm).
ECDSA menawarkan performa yang lebih baik dan merupakan algoritma kriptografi yang lebih aman daripada RSA, memberikan pilihan yang sangat baik di mana performa dan skalabilitas Transport Layer Security (TLS) menjadi perhatian. Implementasi .NET Framework membungkus panggilan ke fungsionalitas Windows yang ada.
Contoh kode berikut menunjukkan betapa mudahnya menghasilkan tanda tangan untuk aliran byte dengan menggunakan dukungan baru untuk sertifikat ECDSA X509 yang disertakan dalam .NET Framework 4.6.1.
using System;
using System.Security.Cryptography;
using System.Security.Cryptography.X509Certificates;
public class Net461Code
{
public static byte[] SignECDsaSha512(byte[] data, X509Certificate2 cert)
{
using (ECDsa privateKey = cert.GetECDsaPrivateKey())
{
return privateKey.SignData(data, HashAlgorithmName.SHA512);
}
}
public static byte[] SignECDsaSha512(byte[] data, ECDsa privateKey)
{
return privateKey.SignData(data, HashAlgorithmName.SHA512);
}
}
Imports System.Security.Cryptography
Imports System.Security.Cryptography.X509Certificates
Public Class Net461Code
Public Shared Function SignECDsaSha512(data As Byte(), cert As X509Certificate2) As Byte()
Using privateKey As ECDsa = cert.GetECDsaPrivateKey()
Return privateKey.SignData(data, HashAlgorithmName.SHA512)
End Using
End Function
Public Shared Function SignECDsaSha512(data As Byte, privateKey As ECDsa) As Byte()
Return privateKey.SignData(data, HashAlgorithmName.SHA512)
End Function
End Class
Ini menawarkan perbedaan mencolok dengan kode yang diperlukan untuk penandatanganan di .NET Framework 4.6.
using System;
using System.Security.Cryptography;
using System.Security.Cryptography.X509Certificates;
public class Net46Code
{
public static byte[] SignECDsaSha512(byte[] data, X509Certificate2 cert)
{
// This would require using cert.Handle and a series of p/invokes to get at the
// underlying key, then passing that to a CngKey object, and passing that to
// new ECDsa(CngKey). It's a lot of work.
throw new Exception("That's a lot of work...");
}
public static byte[] SignECDsaSha512(byte[] data, ECDsa privateKey)
{
// This way works, but SignData probably better matches what you want.
using (SHA512 hasher = SHA512.Create())
{
byte[] signature1 = privateKey.SignHash(hasher.ComputeHash(data));
}
// This might not be the ECDsa you got!
ECDsaCng ecDsaCng = (ECDsaCng)privateKey;
ecDsaCng.HashAlgorithm = CngAlgorithm.Sha512;
return ecDsaCng.SignData(data);
}
}
Imports System.Security.Cryptography
Imports System.Security.Cryptography.X509Certificates
Public Class Net46Code
Public Shared Function SignECDsaSha512(data As Byte(), cert As X509Certificate2) As Byte()
' This would require using cert.Handle and a series of p/invokes to get at the
' underlying key, then passing that to a CngKey object, and passing that to
' new ECDsa(CngKey). It's a lot of work.
Throw New Exception("That's a lot of work...")
End Function
Public Shared Function SignECDsaSha512(data As Byte(), privateKey As ECDsa) As Byte()
' This way works, but SignData probably better matches what you want.
Using hasher As SHA512 = SHA512.Create()
Dim signature1 As Byte() = privateKey.SignHash(hasher.ComputeHash(data))
End Using
' This might not be the ECDsa you got!
Dim ecDsaCng As ECDsaCng = CType(privateKey, ECDsaCng)
ecDsaCng.HashAlgorithm = CngAlgorithm.Sha512
Return ecDsaCng.SignData(data)
End Function
End Class
Berikut ini telah ditambahkan ke ADO.NET:
dukungan "Always Encrypted" untuk kunci yang dilindungi perangkat keras
ADO.NET sekarang mendukung penyimpanan kunci master kolom Always Encrypted secara asli dalam Modul Keamanan Perangkat Keras (HSM). Dengan dukungan ini, pelanggan dapat memanfaatkan kunci asimetris yang disimpan di HSM tanpa harus menulis penyedia penyimpanan kunci master kolom kustom dan mendaftarkannya dalam aplikasi.
Pelanggan perlu menginstal penyedia CSP yang disediakan vendor HSM atau penyedia penyimpanan kunci CNG di server aplikasi atau komputer klien untuk mengakses data Always Encrypted yang dilindungi dengan kunci master kolom yang disimpan dalam HSM.
Perilaku koneksi yang ditingkatkan untuk AlwaysOn MultiSubnetFailover
SqlClient sekarang secara otomatis menyediakan koneksi yang lebih cepat ke Grup Ketersediaan AlwaysOn (AG). Ini secara transparan mendeteksi apakah aplikasi Anda terhubung ke grup ketersediaan AlwaysOn (AG) pada subnet yang berbeda dan dengan cepat menemukan server aktif saat ini dan menyediakan koneksi ke server. Sebelum rilis ini, aplikasi harus mengatur string koneksi untuk menyertakan "MultisubnetFailover=true"
untuk menunjukkan bahwa aplikasi terhubung ke Grup Ketersediaan AlwaysOn. Tanpa mengatur kata kunci koneksi ke true
, aplikasi mungkin mengalami batas waktu saat menyambungkan ke Grup Ketersediaan AlwaysOn. Dengan rilis ini, aplikasi tidak tidak perlu mengatur MultiSubnetFailover ke true
lagi. Untuk informasi selengkapnya tentang dukungan SqlClient untuk Grup Ketersediaan AlwaysOn, lihat Dukungan SqlClient untuk Ketersediaan Tinggi, Pemulihan Bencana.
Windows Presentation Foundation mencakup sejumlah peningkatan dan perubahan.
Peningkatan performa
Penundaan dalam memicu peristiwa sentuhan telah diperbaiki di .NET Framework 4.6.1. Selain itu, mengetik dengan kontrol RichTextBox tidak lagi memblokir utas pemrosesan selama input cepat.
Penyempurnaan pemeriksaan ejaan
Pemeriksa ejaan di WPF telah diperbarui pada Windows 8.1 dan versi yang lebih baru untuk memanfaatkan dukungan sistem operasi untuk memeriksa ejaan bahasa tambahan. Tidak ada perubahan fungsionalitas pada versi Windows sebelum Windows 8.1.
Seperti versi .NET Framework sebelumnya, bahasa untuk kontrol TextBox atau blok RichTextBox terdeteksi dengan mencari informasi dalam urutan berikut:
xml:lang
, jika ada.
Bahasa input saat ini.
Budaya saat ini.
Untuk informasi selengkapnya tentang dukungan bahasa di WPF, lihat posting blog WPF di fitur .NET Framework 4.6.1.
Dukungan tambahan untuk kamus kustom per pengguna
Dalam .NET Framework 4.6.1, WPF mengenali kamus kustom yang terdaftar secara global. Kemampuan ini tersedia selain kemampuan untuk mendaftarkannya per kontrol.
Dalam versi sebelumnya dari WPF, kamus kustom tidak mengenali daftar Kata yang Dikecualikan dan Koreksi Otomatis. Mereka didukung pada Windows 8.1 dan Windows 10 melalui penggunaan file yang dapat ditempatkan di bawah direktori %AppData%\Microsoft\Spelling\<language tag>
. Aturan berikut berlaku untuk file-file ini:
File harus memiliki ekstensi .dic (untuk kata tambahan), .exc (untuk kata yang dikecualikan), atau .acl (untuk Koreksi Otomatis).
File harus UTF-16 LE plaintext yang dimulai dengan Byte Order Mark (BOM).
Setiap baris harus terdiri dari kata (dalam daftar kata yang ditambahkan dan dikecualikan), atau pasangan koreksi otomatis dengan kata yang dipisahkan oleh bilah vertikal ("|") (dalam daftar kata Koreksi Otomatis).
File-file ini dianggap baca-saja dan tidak dimodifikasi oleh sistem.
Catatan
Format file baru ini tidak didukung langsung oleh API pemeriksaan ejaan WPF, dan kamus kustom yang disediakan ke WPF dalam aplikasi harus terus menggunakan file .lex.
Sampel
Ada sejumlah sampel WPF pada repositori GitHub Microsoft/WPF-Samples. Bantu kami meningkatkan sampel dengan mengirimkan pull request atau membuka isu GitHub .
ekstensi DirectX
WPF mencakup paket NuGet
Metode Transaction.EnlistPromotableSinglePhase sekarang dapat menggunakan manajer transaksi terdistribusi selain MSDTC untuk mempromosikan transaksi. Anda melakukan ini dengan menentukan pengidentifikasi GUID promotor transaksi ke overload Transaction.EnlistPromotableSinglePhase(IPromotableSinglePhaseNotification, Guid) baru. Jika operasi ini berhasil, ada batasan yang ditempatkan pada kemampuan transaksi. Setelah promotor transaksi non-MSDTC terdaftar, metode berikut melemparkan TransactionPromotionException karena metode ini memerlukan promosi ke MSDTC:
Setelah promotor transaksi non-MSDTC terdaftar, itu harus digunakan untuk pendaftaran tahan lama di masa depan dengan menggunakan protokol yang ditentukannya. Guid promotor transaksi dapat diperoleh dengan menggunakan properti PromoterType. Ketika transaksi dipromosikan, promotor transaksi menyediakan array Byte yang mewakili token yang dipromosikan. Aplikasi dapat memperoleh token yang dipromosikan untuk transaksi non-MSDTC yang dipromosikan dengan metode GetPromotedToken.
Pengguna fungsi overload baru Transaction.EnlistPromotableSinglePhase(IPromotableSinglePhaseNotification, Guid) harus mengikuti urutan panggilan tertentu agar operasi promosi dapat diselesaikan dengan sukses. Aturan ini didokumenkan dalam dokumentasi metode.
API pembuatan profil yang tidak dikelola telah ditingkatkan sebagai berikut:
Dukungan yang lebih baik untuk mengakses PDB di antarmuka
Dalam ASP.NET Core, menjadi jauh lebih umum bagi rakitan untuk dikompilasi dalam memori oleh Roslyn. Untuk pengembang yang membuat alat pembuatan profil, ini berarti bahwa PDB yang secara historis diserialisasikan pada disk mungkin tidak lagi ada. Alat profiler sering menggunakan PDB untuk memetakan kode kembali ke baris sumber untuk tugas seperti cakupan kode atau analisis performa baris demi baris. Antarmuka
Instrumentasi yang lebih baik dengan antarmuka ICorProfiler.
Profiler yang menggunakan fungsionalitas ReJit API ICorProfiler
untuk instrumentasi dinamis sekarang dapat memodifikasi beberapa metadata. Sebelumnya alat tersebut dapat melengkapi IL kapan saja, tetapi metadata hanya dapat dimodifikasi pada waktu pemuatan modul. Karena IL mengacu pada metadata, ini membatasi jenis instrumentasi yang dapat dilakukan. Kami telah mengurangi beberapa batasan tersebut dengan menambahkan metode ICorProfilerInfo7::ApplyMetaData untuk mendukung subset pengeditan metadata setelah modul dimuat, khususnya dengan menambahkan catatan AssemblyRef
baru, TypeRef
, TypeSpec
, MemberRef
, MemberSpec
, dan UserString
. Perubahan ini memungkinkan jangkauan instrumentasi secara langsung yang jauh lebih luas.
Pelacakan peristiwa lintas komputer memungkinkan pelanggan untuk membuat profil program di Komputer A dan melihat data pembuatan profil dengan pemetaan baris sumber di Komputer B. Menggunakan versi .NET Framework sebelumnya, pengguna akan menyalin semua modul dan gambar asli dari komputer yang diprofilkan ke mesin analisis yang berisi IL PDB untuk membuat pemetaan sumber ke asli. Meskipun proses ini mungkin berfungsi dengan baik ketika file relatif kecil, seperti untuk aplikasi telepon, file bisa sangat besar pada sistem desktop dan membutuhkan waktu yang signifikan untuk menyalin.
Dengan PDB Ngen, NGen dapat membuat PDB yang berisi pemetaan IL-ke-native tanpa ketergantungan pada PDB IL. Dalam skenario pelacakan peristiwa lintas mesin kami, semua yang dibutuhkan adalah menyalin PDB native image yang dihasilkan oleh Mesin A ke Mesin B dan menggunakan API Akses Antarmuka Debug untuk membaca pemetaan sumberto-IL IL PDB dan pemetaan IL-to-native dari PDB native image. Menggabungkan kedua pemetaan menyediakan pemetaan sumber ke asli. Karena PDB gambar asli jauh lebih kecil dari semua modul dan gambar asli, proses penyalinan dari Mesin A ke Mesin B jauh lebih cepat.
.NET 2015 memperkenalkan .NET Framework 4.6 dan .NET Core. Beberapa fitur baru berlaku untuk keduanya, dan fitur lain khusus untuk .NET Framework 4.6 atau .NET Core.
ASP.NET Core
.NET 2015 mencakup ASP.NET Core, yang merupakan implementasi .NET yang ramping untuk membangun aplikasi berbasis cloud modern. ASP.NET Core bersifat modular sehingga Anda hanya dapat menyertakan fitur-fitur yang diperlukan dalam aplikasi Anda. Ini dapat dihosting di IIS atau dihost sendiri dalam proses kustom, dan Anda dapat menjalankan aplikasi dengan versi .NET Framework yang berbeda di server yang sama. Ini termasuk sistem konfigurasi lingkungan baru yang dirancang untuk penyebaran cloud.
MVC, API Web, dan Halaman Web disatukan ke dalam satu kerangka kerja yang disebut MVC 6. Anda membuat aplikasi ASP.NET Core melalui alat di Visual Studio 2015 atau yang lebih baru. Aplikasi Anda yang ada akan bekerja pada .NET Framework baru; namun untuk membuat aplikasi yang menggunakan MVC 6 atau SignalR 3, Anda harus menggunakan sistem proyek di Visual Studio 2015 atau yang lebih baru.
Untuk informasi, lihat ASP.NET Core.
Pembaruan ASP.NET
API Berbasis Tugas untuk Pemrosesan Respons Asinkron
ASP.NET sekarang menyediakan API berbasis tugas sederhana untuk pembilasan respons asinkron, HttpResponse.FlushAsync, yang memungkinkan respons dibersihkan secara asinkron dengan menggunakan dukungan async/await
bahasa Anda.
pengikatan Model mendukung metode pengembalian tugas
Di .NET Framework 4.5, ASP.NET menambahkan fitur Pengikatan Model yang memungkinkan pendekatan yang dapat diperluas dan berfokus pada kode untuk operasi data berbasis CRUD di halaman Formulir Web dan kontrol pengguna. Sistem Binding Model sekarang mendukung metode pengikatan model yang mengembalikan Task. Fitur ini memungkinkan pengembang Formulir Web untuk mendapatkan manfaat skalabilitas asinkron dengan kemudahan sistem pengikatan data saat menggunakan versi ORM yang lebih baru, termasuk Kerangka Kerja Entitas.
Pengikatan model asinkron dikendalikan oleh pengaturan konfigurasi aspnet:EnableAsyncModelBinding
.
<appSettings>
<add key=" aspnet:EnableAsyncModelBinding" value="true|false" />
</appSettings>
Pada aplikasi yang ditargetkan pada .NET Framework 4.6, secara default diatur ke true
. Pada aplikasi yang berjalan di .NET Framework 4.6 dan menargetkan versi .NET Framework yang lebih lama, nilai default-nya adalah false
. Ini dapat diaktifkan dengan mengatur pengaturan konfigurasi ke true
.
Dukungan HTTP/2 (Windows 10)
HTTP/2 adalah versi baru protokol HTTP yang menyediakan pemanfaatan koneksi yang jauh lebih baik (lebih sedikit perjalanan pulang-pergi antara klien dan server), menghasilkan pemuatan halaman web latensi yang lebih rendah untuk pengguna. Halaman web (dibandingkan dengan layanan) mendapat manfaat paling banyak dari HTTP/2, karena protokol mengoptimalkan beberapa artefak yang diminta sebagai bagian dari satu pengalaman. Dukungan HTTP/2 telah ditambahkan ke ASP.NET di .NET Framework 4.6. Karena fungsionalitas jaringan ada di beberapa lapisan, fitur baru diperlukan di Windows, di IIS, dan di ASP.NET untuk mengaktifkan HTTP/2. Anda harus berjalan pada Windows 10 untuk menggunakan HTTP/2 dengan ASP.NET.
HTTP/2 juga didukung dan aktif secara default untuk aplikasi Windows 10 Universal Windows Platform (UWP) yang menggunakan API System.Net.Http.HttpClient.
Untuk menyediakan cara untuk menggunakan fitur PUSH_PROMISE dalam aplikasi ASP.NET, metode baru dengan dua kelebihan beban, PushPromise(String) dan PushPromise(String, String, NameValueCollection), telah ditambahkan ke kelas HttpResponse.
Catatan
Meskipun ASP.NET Core mendukung HTTP/2, dukungan untuk fitur PUSH PROMISE belum ditambahkan.
Browser dan server web (IIS di Windows) melakukan semua pekerjaan. Anda tidak perlu melakukan tugas berat untuk pengguna Anda.
Sebagian besar browser utama mendukung http/2, jadi kemungkinan pengguna Anda akan mendapat manfaat dari dukungan HTTP/2 jika server Anda mendukungnya.
Dukungan untuk Protokol Pengikatan Token
Microsoft dan Google telah berkolaborasi pada pendekatan baru untuk autentikasi, yang disebut Protokol Pengikatan Token . Premisnya adalah bahwa token autentikasi (di cache browser Anda) dapat dicuri dan digunakan oleh penjahat untuk mengakses sumber daya yang aman (misalnya, rekening bank Anda) tanpa memerlukan kata sandi Anda atau pengetahuan istimewa lainnya. Protokol baru bertujuan untuk mengurangi masalah ini.
Protokol Pengikatan Token akan diterapkan di Windows 10 sebagai fitur browser. ASP.NET aplikasi akan berpartisipasi dalam protokol, sehingga token autentikasi divalidasi agar sah. Klien dan implementasi server menetapkan perlindungan end-to-end yang ditentukan oleh protokol.
Algoritma hash string acak
Di .NET Framework 4.5, diperkenalkan algoritma hash string acak . Namun, itu tidak didukung oleh ASP.NET karena beberapa fitur ASP.NET tergantung pada kode hash yang stabil. Di .NET Framework 4.6, algoritma hash string acak sekarang didukung. Untuk mengaktifkan fitur ini, gunakan pengaturan konfigurasi aspnet:UseRandomizedStringHashAlgorithm
.
<appSettings>
<add key="aspnet:UseRandomizedStringHashAlgorithm" value="true|false" />
</appSettings>
ADO.NET
ADO .NET sekarang mendukung fitur Always Encrypted yang tersedia di SQL Server 2016. Dengan Always Encrypted, SQL Server dapat melakukan operasi pada data terenkripsi, dan yang terbaik dari semua kunci enkripsi berada dengan aplikasi di dalam lingkungan tepercaya pelanggan dan bukan di server. Always Encrypted mengamankan data pelanggan sehingga DBA tidak memiliki akses ke data teks biasa. Enkripsi dan dekripsi data terjadi secara transparan di tingkat driver, meminimalkan perubahan yang harus dilakukan pada aplikasi yang ada. Untuk detailnya, lihat Always Encrypted (Mesin Database) dan Always Encrypted (pengembangan klien).
Pengkompilasi JIT 64-bit untuk kode terkelola
.NET Framework 4.6 memiliki versi baru pengkompilasi JIT 64-bit (awalnya bernama kode RyuJIT). Kompiler 64-bit baru memberikan peningkatan performa yang signifikan atas kompilator JIT 64-bit yang lebih lama. Pengkompilasi 64-bit baru diaktifkan untuk proses 64-bit yang berjalan di atas .NET Framework 4.6. Aplikasi Anda akan berjalan dalam proses 64-bit jika dikompilasi sebagai 64-bit atau AnyCPU dan berjalan pada sistem operasi 64-bit. Meskipun perhatian telah diberikan untuk membuat transisi ke kompilator baru setransparan mungkin, perubahan perilaku tetap mungkin terjadi.
Kompiler JIT 64-bit baru juga menyertakan fitur akselerasi SIMD perangkat keras ketika digabungkan dengan jenis berkemampuan SIMD di namespace System.Numerics, yang dapat menghasilkan peningkatan performa yang baik.
penyempurnaan pemuat Rakitan
Pemuat rakitan sekarang menggunakan memori lebih efisien dengan membongkar rakitan IL setelah gambar NGEN yang sesuai dimuat. Perubahan ini mengurangi memori virtual, yang sangat bermanfaat untuk aplikasi besar 32-bit (seperti Visual Studio), dan juga menghemat memori fisik.
perubahan pustaka kelas dasar
Banyak API baru telah ditambahkan ke .NET Framework 4.6 untuk mengaktifkan skenario utama. Ini termasuk perubahan dan penambahan berikut:
implementasi IReadOnlyCollection<T>
Koleksi tambahan menerapkan IReadOnlyCollection<T> seperti Queue<T> dan Stack<T>.
CultureInfo.CurrentCulture and CultureInfo.CurrentUICulture
Properti CultureInfo.CurrentCulture dan CultureInfo.CurrentUICulture sekarang menjadi baca-tulis daripada hanya baca. Jika Anda menetapkan objek CultureInfo baru ke properti ini, budaya utas saat ini yang ditentukan oleh properti Thread.CurrentThread.CurrentCulture
dan budaya utas UI saat ini yang ditentukan oleh properti Thread.CurrentThread.CurrentUICulture
juga berubah.
Peningkatan pengumpulan sampah (GC)
Kelas GC sekarang mencakup metode TryStartNoGCRegion dan EndNoGCRegion yang memungkinkan Anda melarang pengumpulan sampah selama eksekusi jalur kritis.
Kelebihan baru dari metode GC.Collect(Int32, GCCollectionMode, Boolean, Boolean) memungkinkan Anda untuk mengontrol apakah tumpukan objek kecil dan tumpukan objek besar disapu dan dikompresi atau disapu saja.
jenis yang diaktifkan oleh SIMD
Namespace System.Numerics sekarang menyertakan sejumlah jenis berkemampuan SIMD, seperti Matrix3x2, Matrix4x4, Plane, Quaternion, Vector2, Vector3, dan Vector4.
Karena pengkompilasi JIT 64-bit baru juga menyertakan fitur akselerasi SIMD perangkat keras, ada peningkatan performa yang sangat signifikan saat menggunakan jenis berkemampuan SIMD dengan pengkompilasi JIT 64-bit baru.
pembaruan kriptografi
API System.Security.Cryptography sedang diperbarui untuk mendukung API kriptografi CNG Windows . Versi sebelumnya dari .NET Framework telah sepenuhnya bergantung pada versi api Kriptografi Windows yang lebih lama sebagai dasar untuk implementasi System.Security.Cryptography. Kami telah memiliki permintaan untuk mendukung API CNG, karena mendukung algoritma kriptografi modern, yang penting untuk kategori aplikasi tertentu.
.NET Framework 4.6 mencakup penyempurnaan baru berikut untuk mendukung API kriptografi Windows CNG:
Serangkaian metode ekstensi untuk Sertifikat X509, System.Security.Cryptography.X509Certificates.RSACertificateExtensions.GetRSAPublicKey(System.Security.Cryptography.X509Certificates.X509Certificate2)
dan System.Security.Cryptography.X509Certificates.RSACertificateExtensions.GetRSAPrivateKey(System.Security.Cryptography.X509Certificates.X509Certificate2)
, yang mengembalikan implementasi berbasis CNG daripada implementasi berbasis CAPI jika memungkinkan. (Beberapa kartu pintar, dll., masih memerlukan CAPI, dan API menangani mekanisme pengganti).
Kelas System.Security.Cryptography.RSACng, yang menyediakan implementasi CNG dari algoritma RSA.
Penyempurnaan pada API RSA sehingga tindakan umum tidak lagi memerlukan transmisi. Misalnya, mengenkripsi data menggunakan objek X509Certificate2 memerlukan kode seperti berikut ini di versi .NET Framework sebelumnya.
RSACryptoServiceProvider rsa = (RSACryptoServiceProvider)cert.PrivateKey;
byte[] oaepEncrypted = rsa.Encrypt(data, true);
byte[] pkcs1Encrypted = rsa.Encrypt(data, false);
Dim rsa As RSACryptoServiceProvider = CType(cert.PrivateKey, RSACryptoServiceProvider)
Dim oaepEncrypted() As Byte = rsa.Encrypt(data, True)
Dim pkcs1Encrypted() As Byte = rsa.Encrypt(data, False)
Kode yang menggunakan API kriptografi baru di .NET Framework 4.6 dapat ditulis ulang sebagai berikut untuk menghindari pemeran.
RSA rsa = cert.GetRSAPrivateKey();
if (rsa == null)
throw new InvalidOperationException("An RSA certificate was expected");
byte[] oaepEncrypted = rsa.Encrypt(data, RSAEncryptionPadding.OaepSHA1);
byte[] pkcs1Encrypted = rsa.Encrypt(data, RSAEncryptionPadding.Pkcs1);
Dim rsa As RSA = cert.GetRSAPrivateKey()
If rsa Is Nothing Then
Throw New InvalidOperationException("An RSA certificate was expected")
End If
Dim oaepEncrypted() As Byte = rsa.Encrypt(data, RSAEncryptionPadding.OaepSHA1)
Dim pkcs1Encrypted() As Byte = rsa.Encrypt(data, RSAEncryptionPadding.Pkcs1)
Dukungan untuk mengonversi tanggal dan waktu ke atau dari waktu Unix
Metode baru berikut telah ditambahkan ke struktur DateTimeOffset untuk mendukung konversi nilai tanggal dan waktu ke atau dari waktu Unix:
sakelar Kompatibilitas
Kelas AppContext menambahkan fitur kompatibilitas baru yang memungkinkan penulis pustaka untuk menyediakan mekanisme penolakan seragam untuk fungsionalitas baru bagi pengguna mereka. Ini menetapkan kontrak yang digabungkan secara longgar antara komponen untuk mengkomunikasikan permintaan penolakan. Kemampuan ini biasanya penting ketika perubahan dilakukan pada fungsionalitas yang ada. Sebaliknya, sudah ada persetujuan implisit untuk fungsionalitas baru.
Dengan AppContext, pustaka menentukan dan mengekspos sakelar kompatibilitas. Kode yang bergantung padanya dapat mengatur sakelar tersebut untuk mengubah perilaku pustaka. Secara bawaan, pustaka menyediakan fungsionalitas baru, dan mereka hanya mengubahnya (yaitu, mereka menyediakan fungsionalitas sebelumnya) jika sakelar diatur.
Aplikasi (atau pustaka) dapat mendeklarasikan nilai sakelar (yang selalu merupakan nilai Boolean) yang ditentukan pustaka dependen. Sakelar selalu secara implisit false
. Mengatur tombol ke true
mengaktifkannya. Secara eksplisit mengatur pengalihan ke false
menyediakan perilaku baru.
AppContext.SetSwitch("Switch.AmazingLib.ThrowOnException", true);
AppContext.SetSwitch("Switch.AmazingLib.ThrowOnException", True)
Pustaka harus memeriksa apakah konsumen telah mendeklarasikan nilai sakelar dan kemudian mengambil tindakan yang tepat.
if (!AppContext.TryGetSwitch("Switch.AmazingLib.ThrowOnException", out shouldThrow))
{
// This is the case where the switch value was not set by the application.
// The library can choose to get the value of shouldThrow by other means.
// If no overrides nor default values are specified, the value should be 'false'.
// A false value implies the latest behavior.
}
// The library can use the value of shouldThrow to throw exceptions or not.
if (shouldThrow)
{
// old code
}
else
{
// new code
}
If Not AppContext.TryGetSwitch("Switch.AmazingLib.ThrowOnException", shouldThrow) Then
' This is the case where the switch value was not set by the application.
' The library can choose to get the value of shouldThrow by other means.
' If no overrides nor default values are specified, the value should be 'false'.
' A false value implies the latest behavior.
End If
' The library can use the value of shouldThrow to throw exceptions or not.
If shouldThrow Then
' old code
Else
' new code
End If
Sebaiknya menggunakan format yang konsisten untuk sakelar, karena mereka adalah kontrak formal yang diekspose oleh pustaka. Berikut ini adalah dua format yang jelas.
Switch.namespace.switchname
Beralih. pustaka. switchname
Perubahan pada pola asinkron berbasis tugas (TAP)
Untuk aplikasi yang menargetkan .NET Framework 4.6, objek Task dan Task<TResult> mewarisi kultur dan kultur UI dari utas pemanggil. Perilaku aplikasi yang menargetkan versi .NET Framework sebelumnya, atau yang tidak menargetkan versi .NET Framework tertentu, tidak terpengaruh. Untuk informasi selengkapnya, lihat bagian "Budaya dan operasi asinkron berbasis tugas" dari topik kelas CultureInfo.
Kelas System.Threading.AsyncLocal<T> memungkinkan Anda untuk mewakili data sekitar yang lokal ke alur kontrol asinkron tertentu, seperti metode async
. Ini dapat digunakan untuk menyimpan data antar utas. Anda juga dapat menentukan metode callback yang akan diberi tahu setiap kali data sekitar berubah, baik karena properti AsyncLocal<T>.Value diubah secara eksplisit atau karena utas mengalami transisi konteks.
Tiga metode kenyamanan, Task.CompletedTask, Task.FromCanceled, dan Task.FromException, telah ditambahkan ke pola asinkron berbasis tugas (TAP) untuk mengembalikan tugas yang diselesaikan dalam keadaan tertentu.
Kelas NamedPipeClientStream sekarang mendukung komunikasi asinkron dengan ConnectAsyncbarunya. Metode.
EventSource sekarang mendukung penulisan ke log Peristiwa
Anda sekarang dapat menggunakan kelas EventSource untuk mencatat pesan administratif atau operasional ke log peristiwa, selain sesi ETW yang ada yang dibuat pada komputer. Di masa lalu, Anda harus menggunakan paket NuGet Microsoft.Diagnostics.Tracing.EventSource untuk fungsionalitas ini. Fungsionalitas ini sekarang dibangun ke dalam .NET Framework 4.6.
Paket NuGet dan .NET Framework 4.6 telah diperbarui dengan fitur-fitur berikut:
peristiwa dinamis
Memungkinkan event yang ditentukan "secara langsung" tanpa membuat metode event.
Muatan beragam
Memungkinkan kelas dan array yang memiliki atribut khusus serta tipe primitif untuk diteruskan sebagai payload.
Pelacakan aktivitas
Memungkinkan acara Mulai dan Hentikan untuk menandai acara di antara mereka dengan ID yang mewakili semua aktivitas yang sedang aktif.
Untuk mendukung fitur-fitur ini, metode Write yang kelebihan beban telah ditambahkan ke kelas EventSource.
Windows Presentation Foundation (WPF)
peningkatan HDPI
Dukungan HDPI di WPF sekarang lebih baik di .NET Framework 4.6. Perubahan telah dilakukan pada pembulatan tata letak untuk mengurangi kejadian terpotong pada kontrol yang memiliki batas. Secara bawaan, fitur ini aktif hanya jika TargetFrameworkAttribute Anda diatur ke .NET Framework 4.6. Aplikasi yang menargetkan versi kerangka kerja sebelumnya tetapi berjalan pada .NET Framework 4.6 dapat ikut serta dalam perilaku baru dengan menambahkan baris berikut ke bagian
<AppContextSwitchOverrides
value="Switch.MS.Internal.DoNotApplyLayoutRoundingToMarginsAndBorderThickness=false"
/>
Jendela WPF yang meliputi beberapa monitor dengan pengaturan DPI yang berbeda (penyiapan Multi-DPI) sekarang sepenuhnya dirender tanpa daerah yang tidak muncul. Anda dapat menolak perilaku ini dengan menambahkan baris berikut ke bagian <appSettings>
file app.config untuk menonaktifkan perilaku baru ini:
<add key="EnableMultiMonitorDisplayClipping" value="true"/>
Dukungan untuk memuat kursor yang tepat secara otomatis berdasarkan pengaturan DPI telah ditambahkan ke System.Windows.Input.Cursor.
Touch lebih baik
Laporan pelanggan tentang Connect bahwa sentuhan menghasilkan perilaku yang tidak dapat diprediksi telah ditangani dalam .NET Framework 4.6. Ambang batas tap ganda untuk aplikasi Windows Store dan aplikasi WPF sekarang sama di Windows 8.1 ke atas.
Dukungan jendela anak transparan
WPF di .NET Framework 4.6 mendukung jendela anak transparan di Windows 8.1 ke atas. Ini memungkinkan Anda untuk membuat jendela anak yang transparan dan non-persegi panjang di dalam jendela tingkat atas Anda. Anda dapat mengaktifkan fitur ini dengan mengatur properti HwndSourceParameters.UsesPerPixelTransparency ke true
.
Windows Communication Foundation (WCF)
dukungan SSL
WCF sekarang mendukung TLS 1.1 dan TLS 1.2 versi SSL, selain SSL 3.0 dan TLS 1.0, saat menggunakan NetTcp dengan keamanan transportasi dan autentikasi klien. Sekarang dimungkinkan untuk memilih protokol mana yang akan digunakan, atau menonaktifkan protokol lama yang kurang aman. Ini dapat dilakukan baik dengan mengatur properti SslProtocols atau dengan menambahkan yang berikut ini ke file konfigurasi.
<netTcpBinding>
<binding>
<security mode= "None|Transport|Message|TransportWithMessageCredential" >
<transport clientCredentialType="None|Windows|Certificate"
protectionLevel="None|Sign|EncryptAndSign"
sslProtocols="Ssl3|Tls1|Tls11|Tls12">
</transport>
</security>
</binding>
</netTcpBinding>
Mengirim pesan menggunakan koneksi HTTP yang berbeda
WCF sekarang memungkinkan pengguna untuk memastikan pesan tertentu dikirim menggunakan koneksi HTTP yang mendasar yang berbeda. Ada dua cara untuk melakukan ini:
Menggunakan awalan nama grup koneksi
Pengguna dapat menentukan string yang akan digunakan WCF sebagai awalan untuk nama grup koneksi. Dua pesan dengan awalan yang berbeda dikirim menggunakan koneksi HTTP yang mendasarinya berbeda. Anda menetapkan awalan dengan menambahkan pasangan kunci/nilai ke properti Message.Properties dari pesan. Kuncinya adalah "HttpTransportConnectionGroupNamePrefix"; nilai adalah awalan yang diinginkan.
Menggunakan fabrikasi saluran yang berbeda
Pengguna juga dapat mengaktifkan fitur yang memastikan bahwa pesan yang dikirim menggunakan saluran yang dibuat oleh pabrik saluran yang berbeda akan menggunakan koneksi HTTP yang mendasar yang berbeda. Untuk mengaktifkan fitur ini, pengguna harus mengatur appSetting
berikut ke true
:
<appSettings>
<add key="wcf:httpTransportBinding:useUniqueConnectionPoolPerFactory" value="true" />
</appSettings>
Windows Workflow Foundation (WWF)
Anda sekarang dapat menentukan jumlah detik layanan alur kerja akan menahan permintaan operasi yang tidak sesuai urutan ketika ada bookmark "non-protokol" yang tertunda sebelum permintaan tersebut kedaluwarsa. Bookmark "non-protokol" adalah penanda yang tidak terkait dengan aktivitas Menerima yang belum diselesaikan. Beberapa aktivitas membuat marka buku non-protokol dalam implementasinya, sehingga mungkin tidak jelas bahwa marka buku non-protokol ada. Ini termasuk Status dan Pilihan. Jadi, jika Anda memiliki layanan alur kerja yang diimplementasikan dengan mesin status atau berisi aktivitas Pick, kemungkinan besar Anda akan memiliki marka buku non-protokol. Anda menentukan interval dengan menambahkan baris seperti berikut ini ke bagian appSettings
file app.config Anda:
<add key="microsoft:WorkflowServices:FilterResumeTimeoutInSeconds" value="60"/>
Nilai defaultnya adalah 60 detik. Jika value
diatur ke 0, permintaan yang tidak sesuai urutan segera ditolak dengan kesalahan dan pesan teks seperti berikut:
Operation 'Request3|{http://tempuri.org/}IService' on service instance with identifier '2b0667b6-09c8-4093-9d02-f6c67d534292' cannot be performed at this time. Please ensure that the operations are performed in the correct order and that the binding in use provides ordered delivery guarantees.
Ini adalah pesan yang sama yang Anda terima jika pesan operasi yang tidak sesuai urutan diterima dan tidak ada penanda buku non-protokol.
Jika nilai elemen FilterResumeTimeoutInSeconds
tidak sama dengan nol, ada bookmark non-standar, dan interval batas waktu mencapai batasnya, operasi gagal dengan pesan waktu habis.
Transaksi
Anda sekarang dapat menyertakan pengidentifikasi transaksi terdistribusi untuk transaksi yang telah menyebabkan pengecualian yang berasal dari TransactionException dilemparkan. Anda melakukan ini dengan menambahkan kunci berikut ke bagian appSettings
file app.config Anda:
<add key="Transactions:IncludeDistributedTransactionIdInExceptionMessage" value="true"/>
Nilai defaultnya adalah false
.
Jaringan
Penggunaan kembali soket
Windows 10 mencakup algoritma jaringan skalabilitas tinggi baru yang memanfaatkan sumber daya komputer dengan lebih baik dengan menggunakan kembali port lokal untuk koneksi TCP keluar. .NET Framework 4.6 mendukung algoritma baru, memungkinkan aplikasi .NET untuk memanfaatkan perilaku baru. Di versi Windows sebelumnya, ada batas koneksi bersamaan buatan (biasanya 16.384, ukuran default rentang port dinamis), yang dapat membatasi skalabilitas layanan dengan menyebabkan kelelahan port saat dimuat.
Di .NET Framework 4.6, dua API telah ditambahkan untuk mengaktifkan penggunaan kembali port, yang secara efektif menghapus batas 64 KB pada koneksi bersamaan:
Nilai dari enumerasi System.Net.Sockets.SocketOptionName.
Properti ServicePointManager.ReusePort.
Secara standar, properti ServicePointManager.ReusePort adalah false
, kecuali nilai dari kunci registri HWRPortReuseOnSocketBind
HKLM\SOFTWARE\Microsoft\.NETFramework\v4.0.30319
disetel ke 0x1. Untuk mengaktifkan penggunaan kembali port lokal pada koneksi HTTP, atur properti ServicePointManager.ReusePort ke true
. Ini menyebabkan semua koneksi soket TCP keluar dari HttpClient dan HttpWebRequest menggunakan opsi soket Windows 10 baru, SO_REUSE_UNICASTPORT, yang memungkinkan penggunaan kembali port lokal.
Pengembang yang menulis aplikasi khusus soket dapat menentukan opsi System.Net.Sockets.SocketOptionName saat memanggil metode seperti Socket.SetSocketOption sehingga soket keluar menggunakan kembali port lokal selama pengikatan.
dukungan untuk nama domain internasional dan PunyCode
Properti baru, IdnHost, telah ditambahkan ke kelas Uri untuk mendukung nama domain internasional dan PunyCode dengan lebih baik.
Mengubah ukuran pada kontrol Windows Forms.
Fitur ini telah diperluas dalam .NET Framework 4.6 untuk menyertakan jenis DomainUpDown, NumericUpDown, DataGridViewComboBoxColumn, DataGridViewColumn dan ToolStripSplitButton dan persegi panjang yang ditentukan oleh properti Bounds yang digunakan saat menggambar UITypeEditor.
Ini adalah fitur pilihan untuk ikut serta. Untuk mengaktifkannya, atur elemen EnableWindowsFormsHighDpiAutoResizing
ke true
dalam file konfigurasi aplikasi (app.config):
<appSettings>
<add key="EnableWindowsFormsHighDpiAutoResizing" value="true" />
</appSettings>
Dukungan untuk penyandian halaman kode
.NET Core terutama mendukung pengodean Unicode dan secara default menyediakan dukungan terbatas untuk pengodean halaman kode. Anda dapat menambahkan dukungan untuk pengodean halaman kode yang tersedia di .NET Framework tetapi tidak didukung di .NET Core dengan mendaftarkan pengodean halaman kode dengan metode Encoding.RegisterProvider. Untuk informasi selengkapnya, lihat System.Text.CodePagesEncodingProvider.
.NET Native
Aplikasi Universal Windows Platform (UWP) yang ditulis dalam C# atau Visual Basic dapat memanfaatkan teknologi baru yang mengkompilasi aplikasi ke kode asli daripada IL. Teknologi ini menghasilkan aplikasi yang memiliki waktu mulai dan eksekusi yang lebih cepat. Untuk informasi selengkapnya, lihat Mengkompilasi Aplikasi dengan .NET Native. Untuk gambaran umum .NET Native yang memeriksa perbedaannya dari kompilasi JIT dan NGEN dan apa artinya untuk kode Anda, lihat .NET Native dan Kompilasi.
Aplikasi Anda dikompilasi ke kode asli secara default saat Anda mengkompilasinya dengan Visual Studio 2015 atau yang lebih baru. Untuk informasi lebih lanjut, lihat Memulai dengan .NET Native.
Untuk mendukung penelusuran kesalahan aplikasi .NET Native, sejumlah antarmuka dan enumerasi baru telah ditambahkan ke API debugging yang tidak dikelola. Untuk informasi selengkapnya, lihat topik Debugging (Referensi API yang Tidak Dikelola).
paket .NET Framework sumber terbuka
Paket .NET Core seperti koleksi yang tidak dapat diubah, API SIMD , dan API jaringan seperti yang ditemukan di namespace System.Net.Http sekarang tersedia sebagai paket sumber terbuka di GitHub. Untuk mengakses kode, lihat .NET di GitHub. Untuk informasi selengkapnya dan cara berkontribusi pada paket ini, lihat Pengantar .NET, Halaman Beranda .NET di GitHub.
API baru untuk aplikasi ASP.NET. Metode HttpResponse.AddOnSendingHeaders dan HttpResponseBase.AddOnSendingHeaders baru memungkinkan Anda memeriksa dan memodifikasi header respons dan kode status saat respons sedang dikirimkan ke aplikasi klien. Pertimbangkan untuk menggunakan metode ini alih-alih peristiwa PreSendRequestHeaders dan PreSendRequestContent; mereka lebih efisien dan dapat diandalkan.
Metode HostingEnvironment.QueueBackgroundWorkItem memungkinkan Anda menjadwalkan item kerja latar belakang kecil. ASP.NET melacak item-item ini dan mencegah IIS menghentikan proses pekerja secara tiba-tiba hingga semua item kerja latar belakang selesai. Metode ini tidak dapat dipanggil di luar domain aplikasi terkelola ASP.NET.
Properti HttpResponse.HeadersWritten dan HttpResponseBase.HeadersWritten baru mengembalikan nilai Boolean yang menunjukkan apakah header respons telah ditulis. Anda dapat menggunakan properti ini untuk memastikan bahwa panggilan ke API seperti HttpResponse.StatusCode (yang melemparkan pengecualian jika header telah ditulis) akan berhasil.
Mengubah ukuran pada kontrol Formulir Windows Fitur ini telah diperluas. Anda sekarang dapat menggunakan pengaturan DPI sistem untuk mengubah ukuran komponen kontrol tambahan berikut (misalnya, panah turun bawah dalam kotak kombo):
Ini adalah fitur opsional. Untuk mengaktifkannya, atur elemen EnableWindowsFormsHighDpiAutoResizing
ke true
dalam file konfigurasi aplikasi (app.config):
<appSettings>
<add key="EnableWindowsFormsHighDpiAutoResizing" value="true" />
</appSettings>
Fitur alur kerja baru. Manajer sumber daya yang menggunakan metode EnlistPromotableSinglePhase (dan karena itu menerapkan antarmuka IPromotableSinglePhaseNotification) dapat menggunakan metode Transaction.PromoteAndEnlistDurable baru untuk meminta hal berikut:
Promosikan transaksi ke transaksi Koordinator Transaksi Terdistribusi Microsoft (MSDTC).
Ganti IPromotableSinglePhaseNotification dengan ISinglePhaseNotification, yang merupakan pendaftaran tahan lama yang mendukung komitmen fase tunggal.
Ini dapat dilakukan dalam domain aplikasi yang sama, dan tidak memerlukan kode tambahan yang tidak dikelola untuk berinteraksi dengan MSDTC untuk melakukan promosi. Metode baru hanya dapat dipanggil ketika ada panggilan yang belum terselesaikan dari System.Transactions ke metode IPromotableSinglePhaseNotificationPromote
yang diterapkan oleh pendaftaran yang bisa dinaikkan.
Penyempurnaan pembuatan profil. API pembuatan profil baru yang tidak dikelola berikut memberikan pembuatan profil yang lebih kuat:
Implementasi ICorProfiler
sebelumnya mendukung pemuatan rakitan dependen yang malas. API pembuatan profil baru memerlukan rakitan dependen yang disuntikkan oleh profiler agar dapat segera dimuat, alih-alih dimuat setelah aplikasi sepenuhnya diinisialisasi. Perubahan ini tidak memengaruhi pengguna API ICorProfiler
yang ada.
Peningkatan proses debugging. API debugging baru yang tidak dikelola berikut ini menyediakan integrasi yang lebih baik dengan profiler. Sekarang Anda dapat mengakses metadata yang dimasukkan oleh profiler, serta variabel lokal dan kode yang dihasilkan oleh permintaan ReJIT dari pengkompilasi, saat men-debug dump.
Perubahan pelacakan peristiwa. .NET Framework 4.5.2 memungkinkan pelacakan aktivitas berbasis Event Tracing for Windows (ETW) di luar proses aplikasi untuk cakupan yang lebih luas. Ini memungkinkan vendor Advanced Power Management (APM) menyediakan alat ringan yang secara akurat melacak biaya permintaan dan aktivitas individual yang melintasi utas. Peristiwa ini dimunculkan hanya ketika pengontrol ETW mengaktifkannya; oleh karena itu, perubahan tidak memengaruhi kode atau kode ETW yang ditulis sebelumnya yang berjalan dengan ETW dinonaktifkan.
Mempromosikan transaksi dan mengonversinya ke pencatatan yang permanen
Transaction.PromoteAndEnlistDurable adalah API baru yang ditambahkan ke .NET Framework 4.5.2 dan 4.6:
[System.Security.Permissions.PermissionSetAttribute(System.Security.Permissions.SecurityAction.LinkDemand, Name = "FullTrust")]
public Enlistment PromoteAndEnlistDurable(Guid resourceManagerIdentifier,
IPromotableSinglePhaseNotification promotableNotification,
ISinglePhaseNotification enlistmentNotification,
EnlistmentOptions enlistmentOptions)
<System.Security.Permissions.PermissionSetAttribute(System.Security.Permissions.SecurityAction.LinkDemand, Name:="FullTrust")>
public Function PromoteAndEnlistDurable(resourceManagerIdentifier As Guid,
promotableNotification As IPromotableSinglePhaseNotification,
enlistmentNotification As ISinglePhaseNotification,
enlistmentOptions As EnlistmentOptions) As Enlistment
Metode ini dapat digunakan oleh perekrutan yang sebelumnya dibuat oleh Transaction.EnlistPromotableSinglePhase sebagai respons terhadap metode ITransactionPromoter.Promote. Ini meminta System.Transactions
untuk mempromosikan transaksi menjadi transaksi MSDTC dan untuk "mengonversi" pendaftaran yang dapat dipromosikan menjadi pendaftaran yang permanen. Setelah metode ini berhasil diselesaikan, antarmuka IPromotableSinglePhaseNotification tidak akan lagi dirujuk oleh System.Transactions
, dan pemberitahuan di masa mendatang akan tiba di antarmuka ISinglePhaseNotification yang disediakan. Pendaftaran yang dimaksud harus bertindak sebagai pendaftaran yang tahan lama, mendukung pengelogan dan pemulihan transaksi. Lihat Transaction.EnlistDurable untuk detailnya. Selain itu, pendaftaran harus mendukung ISinglePhaseNotification. Metode ini hanya dapat dipanggil saat memproses panggilan ITransactionPromoter.Promote. Jika tidak demikian, pengecualian TransactionException akan dilemparkan.
Pembaruan April 2014:
Visual Studio 2013 Update 2 menyertakan pembaruan templat Pustaka Kelas Portabel untuk mendukung skenario ini:
Anda dapat menggunakan WINDOWS Runtime API di pustaka portabel yang menargetkan Windows 8.1, Windows Phone 8.1, dan Windows Phone Silverlight 8.1.
Anda dapat menyertakan XAML (jenis Windows.UI.XAML) dalam pustaka portabel saat Anda menargetkan Windows 8.1 atau Windows Phone 8.1. Templat XAML berikut didukung: Halaman Kosong, Kamus Sumber Daya, Kontrol Templat, dan Kontrol Pengguna.
Anda dapat membuat komponen Windows Runtime portabel (file.winmd) untuk digunakan di aplikasi Store yang menargetkan Windows 8.1 dan Windows Phone 8.1.
Anda dapat menargetkan ulang pustaka kelas Toko Windows atau Toko Windows Phone seperti Pustaka Kelas Portabel.
Untuk informasi selengkapnya tentang perubahan ini, lihat Pustaka Kelas Portabel.
Kumpulan konten .NET Framework sekarang menyertakan dokumentasi untuk .NET Native, yang merupakan teknologi prakompemilasi untuk membangun dan menyebarkan aplikasi Windows. .NET Native mengkompilasi aplikasi Anda langsung ke kode asli, daripada menggunakan bahasa perantara (IL), untuk performa yang lebih baik. Untuk detailnya, lihat Mengkompilasi Aplikasi dengan .NET Native.
Sumber Referensi .NET Framework memberikan pengalaman penjelajahan baru dan fungsionalitas yang ditingkatkan. Sekarang Anda dapat menelusuri kode sumber .NET Framework secara online, mengunduh referensi untuk tampilan offline, dan menyusuri sumber (termasuk patch dan pembaruan) selama debugging. Untuk informasi selengkapnya, lihat entri blog Tampilan baru untuk Sumber Referensi .NET.
Fitur dan penyempurnaan baru di kelas dasar di .NET Framework 4.5.1 meliputi:
Pengalihan pengikatan otomatis untuk rakitan. Dimulai dengan Visual Studio 2013, saat Anda mengkompilasi aplikasi yang menargetkan .NET Framework 4.5.1, pengalihan pengikatan dapat ditambahkan ke file konfigurasi aplikasi jika aplikasi Anda atau komponennya mereferensikan beberapa versi rakitan yang sama. Anda juga dapat mengaktifkan fitur ini untuk proyek yang menargetkan versi .NET Framework yang lebih lama. Untuk informasi selengkapnya, lihat Cara: Mengaktifkan dan Menonaktifkan Pengalihan Pengikatan Otomatis.
Kemampuan untuk mengumpulkan informasi diagnostik untuk membantu pengembang meningkatkan performa aplikasi server dan cloud. Untuk informasi selengkapnya, lihat metode WriteEventWithRelatedActivityId dan WriteEventWithRelatedActivityIdCore di kelas EventSource.
Kemampuan untuk secara eksplisit memampatkan tumpukan objek besar (LOH) selama pengumpulan sampah. Untuk informasi selengkapnya, lihat properti GCSettings.LargeObjectHeapCompactionMode.
Peningkatan kinerja tambahan seperti penangguhan aplikasi ASP.NET, peningkatan JIT multi-inti, dan startup aplikasi yang lebih cepat setelah pembaruan .NET Framework. Untuk detailnya, lihat pengumuman .NET Framework 4.5.1 dan aplikasi ASP.NET menangguhkan posting blog.
Penyempurnaan Formulir Windows meliputi:
Mengubah ukuran kontrol pada Formulir Windows. Anda dapat menggunakan pengaturan DPI sistem untuk mengubah ukuran komponen kontrol (misalnya, ikon yang muncul di kisi properti) dengan memilih entri dalam file konfigurasi aplikasi (app.config) untuk aplikasi Anda. Fitur ini saat ini didukung dalam kontrol Windows Forms berikut:
Untuk mengaktifkan fitur ini, tambahkan elemen> appSettings <baru ke file konfigurasi (app.config) dan atur elemen EnableWindowsFormsHighDpiAutoResizing
ke true
:
<appSettings>
<add key="EnableWindowsFormsHighDpiAutoResizing" value="true" />
</appSettings>
Peningkatan ketika melakukan debugging aplikasi .NET Framework Anda di Visual Studio 2013 meliputi:
Mengembalikan nilai di debugger Visual Studio. Saat Anda men-debug aplikasi terkelola di Visual Studio 2013, jendela Otomatis menampilkan jenis dan nilai pengembalian untuk metode. Informasi ini tersedia untuk aplikasi desktop, Windows Store, dan Windows Phone. Untuk informasi selengkapnya, lihat Periksa nilai pengembalian metode panggilan.
Edit dan Lanjutkan untuk aplikasi 64-bit. Visual Studio 2013 mendukung fitur Edit dan Lanjutkan untuk aplikasi terkelola 64-bit untuk desktop, Windows Store, dan Windows Phone. Batasan yang ada tetap berlaku untuk aplikasi 32-bit dan 64-bit (lihat bagian terakhir Perubahan Kode yang Didukung (C#) artikel).
Debugging dengan dukungan asinkron. Untuk mempermudah debug aplikasi asinkron di Visual Studio 2013, tumpukan panggilan menyembunyikan kode infrastruktur yang disediakan oleh kompilator untuk mendukung pemrograman asinkron, dan juga rantai dalam bingkai induk logis sehingga Anda dapat mengikuti eksekusi program logis dengan lebih jelas. Jendela Tugas menggantikan jendela Tugas Paralel dan menampilkan tugas yang terkait dengan titik henti tertentu, dan juga menampilkan tugas lain yang saat ini aktif atau dijadwalkan di aplikasi. Anda dapat mempelajari fitur ini di subbagian "Debugging yang Mendukung Asynchronous" dalam pengumuman .NET Framework 4.5.1 .
Dukungan pengecualian yang lebih baik untuk komponen Windows Runtime. Di Windows 8.1, pengecualian yang muncul dari aplikasi Windows Store mempertahankan informasi tentang kesalahan yang menyebabkan pengecualian, bahkan di seluruh batas bahasa. Anda dapat membaca tentang fitur ini di bagian "Pengembangan aplikasi Windows Store" dari pengumuman .NET Framework 4.5.1.
Dimulai dengan Visual Studio 2013, Anda dapat menggunakan Managed Profile Guided Optimization Tool (Mpgo.exe) untuk mengoptimalkan aplikasi Windows 8.x Store serta aplikasi desktop.
Untuk fitur baru di ASP.NET 4.5.1, lihat ASP.NET serta Alat Web pada Catatan Rilis Visual Studio 2013.
Kemampuan untuk mengurangi mulai ulang sistem dengan mendeteksi dan menutup aplikasi .NET Framework 4 selama penyebaran. Lihat Mengurangi Restart Sistem Selama Penginstalan .NET Framework 4.5.
Dukungan untuk array yang lebih besar dari 2 gigabyte (GB) pada platform 64-bit. Fitur ini dapat diaktifkan dalam file konfigurasi aplikasi. Lihat elemen><gcAllowVeryLargeObjects, yang juga mencantumkan batasan lain pada ukuran objek dan ukuran array.
Performa yang lebih baik melalui pengumpulan sampah latar belakang untuk server. Saat Anda menggunakan pengumpulan sampah server di .NET Framework 4.5, pengumpulan sampah latar belakang diaktifkan secara otomatis. Lihat bagian Pengumpulan Sampah Server di Latar Belakang dalam topik Dasar-Dasar Pengumpulan Sampah.
Kompilasi just-in-time (JIT) di latar belakang, yang tersedia secara opsional pada prosesor multi-inti untuk meningkatkan performa aplikasi. Lihat ProfileOptimization.
Kemampuan untuk membatasi berapa lama mesin ekspresi reguler akan mencoba menyelesaikan ekspresi reguler sebelum waktu habis. Lihat properti Regex.MatchTimeout.
Kemampuan untuk menentukan budaya default untuk domain aplikasi. Lihat kelas CultureInfo.
Dukungan konsol untuk pengodean Unicode (UTF-16). Lihat kelas Console.
Dukungan untuk penerapan versi urutan string budaya dan data perbandingan. Lihat kelas SortVersion.
Peningkatan performa saat mengakses sumber daya. Lihat Paket dan sebarkan sumber daya.
Peningkatan kompresi Zip untuk mengurangi ukuran file terkompresi. Lihat namespace System.IO.Compression.
Kemampuan untuk menyesuaikan konteks refleksi untuk mengambil alih perilaku refleksi default melalui kelas CustomReflectionContext.
Dukungan untuk versi 2008 dari standar Nama Domain Internasional dalam Aplikasi (IDNA) ketika kelas System.Globalization.IdnMapping digunakan pada Windows 8.
Delegasi perbandingan string ke sistem operasi, yang mengimplementasikan Unicode 6.0, terjadi ketika .NET Framework digunakan pada Windows 8. Saat berjalan di platform lain, .NET Framework menyertakan data perbandingan stringnya sendiri, yang mengimplementasikan Unicode 5.x. Lihat kelas String dan bagian Komentar dari kelas SortVersion.
Kemampuan untuk menghitung kode hash untuk string berdasarkan domain per aplikasi. Lihat <UseRandomizedStringHashAlgorithm> Element.
Dukungan refleksi tipe terbagi antara kelas Type dan TypeInfo. Lihat Reflection di .NET Framework untuk Windows Store Apps.
Di .NET Framework 4.5, Managed Extensibility Framework (MEF) menyediakan fitur baru berikut:
Dukungan untuk tipe generik.
Model pemrograman berbasis konvensi yang memungkinkan Anda membuat suku cadang berdasarkan konvensi penamaan daripada atribut.
Berbagai cakupan.
Subset MEF yang dapat Anda gunakan saat membuat aplikasi Windows 8.x Store. Subset ini tersedia sebagai paket yang dapat diunduh dari Galeri NuGet. Untuk menginstal paket, buka proyek Anda di Visual Studio, pilih
Untuk informasi selengkapnya, lihat Managed Extensibility Framework (MEF).
Dalam .NET Framework 4.5, fitur asinkron baru ditambahkan ke bahasa C# dan Visual Basic. Fitur-fitur ini menambahkan model berbasis tugas untuk melakukan operasi asinkron. Untuk menggunakan model baru ini, gunakan metode asinkron di kelas I/O. Lihat I/O File Asinkron.
Di .NET Framework 4.5, Resource File Generator (Resgen.exe) memungkinkan Anda membuat file .resw untuk digunakan di aplikasi Windows 8.x Store dari file .resources yang disematkan dalam rakitan .NET Framework. Untuk informasi selengkapnya, lihat Resgen.exe (Resource File Generator).
Pengoptimalan Terpandu Profil Terkelola (Mpgo.exe) memungkinkan Anda meningkatkan waktu mulai aplikasi, pemanfaatan memori (ukuran set kerja), dan throughput dengan mengoptimalkan rakitan gambar asli. Alat baris perintah menghasilkan data profil untuk rakitan aplikasi gambar asli. Lihat Mpgo.exe (Alat Pengoptimalan Terpandu Profil Terkelola). Dimulai dengan Visual Studio 2013, Anda dapat menggunakan Mpgo.exe untuk mengoptimalkan aplikasi Windows 8.x Store serta aplikasi desktop.
.NET Framework 4.5 menyediakan beberapa fitur dan peningkatan baru untuk komputasi paralel. Ini termasuk peningkatan performa, peningkatan kontrol, peningkatan dukungan untuk pemrograman asinkron, pustaka aliran data baru, dan dukungan yang ditingkatkan untuk penelusuran kesalahan paralel dan analisis performa. Lihat entri Apa yang Baru tentang Paralelisme di .NET Framework 4.5 di blog Pemrograman Paralel dengan .NET.
ASP.NET 4.5 dan 4.5.1 menambahkan pengikatan model untuk Formulir Web, dukungan WebSocket, handler asinkron, peningkatan performa, dan banyak fitur lainnya. Untuk informasi selengkapnya, lihat sumber daya berikut ini:
.NET Framework 4.5 menyediakan antarmuka pemrograman baru untuk aplikasi HTTP. Untuk informasi selengkapnya, lihat namespace System.Net.Http dan System.Net.Http.Headers baru.
Dukungan juga disertakan untuk antarmuka pemrograman baru untuk menerima dan berinteraksi dengan koneksi WebSocket dengan menggunakan HttpListener yang ada dan kelas terkait. Untuk informasi selengkapnya, lihat namespace System.Net.WebSockets baru dan kelas HttpListener.
Selain itu, .NET Framework 4.5 mencakup peningkatan jaringan berikut:
Dukungan URI yang sesuai dengan RFC. Untuk informasi selengkapnya, lihat Uri dan kelas terkait.
Dukungan untuk parsing Nama Domain Internasional (IDN). Untuk informasi selengkapnya, lihat Uri dan kelas terkait.
Dukungan untuk Internasionalisasi Alamat Email (EAI). Untuk informasi selengkapnya, lihat namespace System.Net.Mail.
Dukungan IPv6 yang ditingkatkan. Untuk informasi selengkapnya, lihat namespace System.Net.NetworkInformation.
Dukungan soket dua mode. Untuk informasi selengkapnya, lihat kelas Socket dan TcpListener.
Dalam .NET Framework 4.5, Windows Presentation Foundation (WPF) berisi perubahan dan peningkatan di area berikut:
Kontrol Ribbon baru, yang memudahkan Anda untuk menerapkan antarmuka pengguna pita yang menyediakan Toolbar Akses Cepat, Menu Aplikasi, dan tab.
Antarmuka INotifyDataErrorInfo baru, yang mendukung validasi data sinkron dan asinkron.
Fitur baru untuk kelas VirtualizingPanel dan Dispatcher.
Peningkatan performa saat menampilkan sekumpulan besar data yang dikelompokkan, dan dengan mengakses koleksi pada utas non-UI.
Pengikatan data ke properti statis, pengikatan data ke jenis kustom yang mengimplementasikan antarmuka ICustomTypeProvider, dan pengambilan informasi pengikatan data dari ekspresi pengikatan.
Reposisi data saat nilai berubah (penyesuaian langsung).
Kemampuan untuk memeriksa apakah konteks data untuk kontainer item terputus.
Kemampuan untuk mengatur jumlah waktu yang harus berlalu antara perubahan properti dan pembaruan sumber data.
Peningkatan dukungan untuk menerapkan pola peristiwa yang lemah. Selain itu, peristiwa sekarang dapat menerima ekstensi markup.
Dalam .NET Framework 4.5, fitur berikut telah ditambahkan untuk mempermudah penulisan dan pemeliharaan aplikasi Windows Communication Foundation (WCF):
Penyederhanaan file konfigurasi yang dihasilkan.
Dukungan untuk pengembangan berbasis kontrak-pertama.
Kemampuan untuk mengonfigurasi mode kompatibilitas ASP.NET lebih mudah.
Perubahan nilai properti transportasi bawaan untuk mengurangi kemungkinan Anda harus mengaturnya.
Pembaruan pada kelas XmlDictionaryReaderQuotas untuk mengurangi kemungkinan Anda harus mengonfigurasi kuota untuk pembaca kamus XML secara manual.
Validasi file konfigurasi WCF oleh Visual Studio sebagai bagian dari proses build, sehingga Anda dapat mendeteksi kesalahan konfigurasi sebelum menjalankan aplikasi.
Dukungan streaming asinkron baru.
Pemetaan protokol HTTPS baru untuk mempermudah mengekspos titik akhir melalui HTTPS dengan Internet Information Services (IIS).
Kemampuan untuk menghasilkan metadata dalam satu dokumen WSDL dengan menambahkan ?singleWSDL
ke URL layanan.
Dukungan Websocket untuk mengaktifkan komunikasi dua arah sejati melalui port 80 dan 443 dengan karakteristik performa yang mirip dengan transportasi TCP.
Dukungan untuk mengonfigurasi layanan dalam kode.
Tipsalat Editor XML.
ChannelFactory dukungan caching.
Dukungan untuk kompresi encoder biner.
Dukungan untuk transportasi UDP yang memungkinkan pengembang menulis layanan yang menggunakan pesan "aktifkan dan lupakan". Klien mengirim pesan ke layanan dan tidak mengharapkan respons dari layanan.
Kemampuan untuk mendukung beberapa mode autentikasi pada satu titik akhir WCF saat menggunakan transportasi HTTP dan keamanan transportasi.
Dukungan untuk layanan WCF yang menggunakan nama domain internasional (IDN).
Untuk informasi selengkapnya, lihat Apa yang Baru di Windows Communication Foundation.
Di .NET Framework 4.5, beberapa fitur baru ditambahkan ke Windows Workflow Foundation (WF), termasuk:
Alur kerja mesin status, yang pertama kali diperkenalkan sebagai bagian dari .NET Framework 4.0.1 (.NET Framework 4 Platform Update 1). Pembaruan ini mencakup beberapa kelas dan aktivitas baru yang memungkinkan pengembang untuk membuat alur kerja komputer status. Kelas dan aktivitas ini diperbarui untuk .NET Framework 4.5 untuk menyertakan:
Kemampuan untuk mengatur titik henti pada status.
Kemampuan untuk menyalin dan menempelkan transisi di perancang alur kerja.
Dukungan perancang untuk pembuatan transisi pemicu bersama.
Aktivitas untuk membuat alur kerja mesin status, termasuk: StateMachine, State, dan Transition.
Fitur Perancang Alur Kerja yang Disempurnakan seperti berikut ini:
Kemampuan pencarian alur kerja yang disempurnakan di Visual Studio, termasuk Pencarian Cepat
Kemampuan untuk membuat aktivitas Urutan secara otomatis ketika aktivitas anak kedua ditambahkan ke aktivitas kontainer, dan untuk menyertakan kedua aktivitas dalam aktivitas Urutan.
Dukungan panning, yang memungkinkan bagian alur kerja yang terlihat diubah tanpa menggunakan bilah gulir.
Tampilan Kerangka Dokumen
Kemampuan untuk menambahkan anotasi ke aktivitas.
Kemampuan untuk menentukan dan menggunakan delegasi aktivitas dengan menggunakan perancang alur kerja.
Sambungkan otomatis dan sisipkan otomatis untuk aktivitas dan transisi dalam alur kerja mesin status dan diagram alur.
Penyimpanan informasi status tampilan untuk alur kerja dalam satu elemen dalam file XAML, sehingga Anda dapat dengan mudah menemukan dan mengedit informasi status tampilan.
Aktivitas kontainer NoPersistScope untuk mencegah aktivitas anak bertahan.
Dukungan untuk ekspresi C#:
Proyek alur kerja yang menggunakan Visual Basic akan menggunakan ekspresi Visual Basic, dan proyek alur kerja C# akan menggunakan ekspresi C#.
Proyek alur kerja C# yang dibuat di Visual Studio 2010 dan memiliki ekspresi Visual Basic kompatibel dengan proyek alur kerja C# yang menggunakan ekspresi C#.
Penyempurnaan pengelolaan versi:
Kelas WorkflowIdentity baru, yang menyediakan pemetaan antara instans alur kerja yang bertahan dan definisi alur kerjanya.
Pelaksanaan secara bersamaan dari beragam versi alur kerja di host yang sama, termasuk WorkflowServiceHost.
Dalam Pembaruan Dinamis, kemampuan untuk memodifikasi definisi instans alur kerja yang sudah tersimpan.
Pengembangan layanan alur kerja pertama kontrak, yang menyediakan dukungan untuk menghasilkan aktivitas secara otomatis agar sesuai dengan kontrak layanan yang ada.
Untuk informasi selengkapnya, lihat Apa yang Baru di Windows Workflow Foundation.
Aplikasi Windows 8.x Store dirancang untuk faktor bentuk tertentu dan memanfaatkan kekuatan sistem operasi Windows. Subset .NET Framework 4.5 atau 4.5.1 tersedia untuk membangun aplikasi Windows 8.x Store untuk Windows dengan menggunakan C# atau Visual Basic. Subset ini disebut .NET untuk aplikasi Windows 8.x Store dan dibahas dalam gambaran umum .
Proyek Pustaka Kelas Portabel di Visual Studio 2012 (dan versi yang lebih baru) memungkinkan Anda menulis dan membangun rakitan terkelola yang berfungsi pada beberapa platform .NET Framework. Dengan menggunakan proyek Pustaka Kelas Portabel, Anda memilih platform (seperti Windows Phone dan .NET untuk aplikasi Windows 8.x Store) untuk ditargetkan. Jenis dan anggota yang tersedia dalam proyek Anda secara otomatis dibatasi untuk jenis dan anggota umum di seluruh platform ini. Untuk informasi selengkapnya, lihat Portable Class Library.
Umpan balik .NET
.NET adalah proyek sumber terbuka. Pilih tautan untuk memberikan umpan balik:
Pelatihan
Modul
Menerapkan operasi HTTP di ASP.NET Razor Pages - Training
Menerapkan operasi HTTP di ASP.NET Razor Pages
Dokumentasi
Kompatibilitas versi dalam .NET Framework - .NET Framework
Pelajari tentang kompatibilitas antara versi .NET Framework, termasuk kompatibilitas mundur dan eksekusi berdampingan.
Migrasi ke .NET Framework 4.8, 4.7, 4.6, dan 4.5 - .NET Framework
Panduan untuk bermigrasi ke versi .NET Framework yang lebih baru yang mencakup sumber daya untuk fitur baru dan kompatibilitas aplikasi.
.NET Framework & Windows versi OS - .NET Framework
Pelajari tentang fitur utama di setiap versi .NET Framework, termasuk versi dan versi CLR yang mendasar yang dipasang oleh sistem operasi Windows.