Ini adalah posting tamu dari tim Orleans. Orleans adalah kerangka kerja lintas platform untuk membuat aplikasi terdistribusi menggunakan .NET. Lihat https://github.com/dotnet/orleans untuk informasi lebih lanjut.Kami senang mengumumkan rilis Orleans 3.0. Dibandingkan dengan Orleans 2.0, ia memiliki banyak perbaikan dan perbaikan, serta beberapa fitur baru. Perubahan ini ditentukan oleh pengalaman banyak orang yang menggunakan aplikasi berbasis Orleans dalam produksi dalam berbagai skenario dan lingkungan, serta antusiasme komunitas global Orleans, yang membantu kerangka kerja menjadi lebih baik, lebih cepat dan lebih fleksibel. Terima kasih banyak untuk semua orang yang berkontribusi pada rilis ini dengan berbagai cara!

Perubahan besar dibandingkan dengan Orleans 2.0
Orleans 2.0 dirilis sedikit lebih dari 18 bulan yang lalu, dan kerangka kerja tersebut telah membuat kemajuan yang signifikan sejak saat itu. Beberapa perubahan dibandingkan dengan 2.0:
- Transaksi ACID Terdistribusi
- Penjadwal baru yang dalam beberapa kasus meningkatkan produktivitas hingga lebih dari 30%
- Generator Kode baru berbasis Roslyn
- Keanggotaan cluster yang ditulis ulang untuk meningkatkan kecepatan pemulihan
- Dukungan co-hosting
Serta banyak perbaikan dan perbaikan lainnya.
Mengganti lapisan jaringan dengan ASP.NET Bedrock
Menjaga komunikasi yang aman menggunakan
TLS telah menjadi perhatian utama selama beberapa waktu. Apalagi baik dari
masyarakat maupun dari mitra internal. Dalam versi 3.0, kami menambahkan dukungan TLS, tersedia melalui paket
Microsoft.Orleans.Connections.Security . Lihat
contoh TransportLayerSecurity untuk informasi lebih lanjut.
Mengimplementasikan dukungan TLS adalah masalah utama karena bagaimana lapisan jaringan diimplementasikan dalam versi Orleans sebelumnya: itu tidak dapat dengan mudah diadaptasi untuk menggunakan
SslStream
, yang merupakan metode yang paling umum untuk menerapkan TLS. Menggunakan TLS sebagai kekuatan pendorong, kami menulis ulang lapisan jaringan Orleans.
Di Orleans 3.0, seluruh lapisan jaringan diganti dengan lapisan yang dibuat berdasarkan
Project Bedrock , fitur grup ASP.NET. Tujuan Bedrock adalah membantu pengembang menciptakan klien dan server jaringan yang cepat dan andal.
Tim ASP.NET dan tim Orleans bekerja bersama untuk membuat abstraksi yang mendukung klien jaringan dan server, bersifat agnostik transportasi, dan dapat dikonfigurasi menggunakan middleware. Abstraksi ini memungkinkan kita untuk mengubah "transportasi" jaringan melalui konfigurasi tanpa mengubah kode jaringan khusus Orleans. Dukungan Orleans TLS diimplementasikan sebagai middleware Bedrock, dan kami bermaksud menjadikannya universal sehingga dapat dibagikan dengan orang lain di ekosistem .NET.
Meskipun insentif untuk inovasi ini adalah penambahan dukungan TLS, dalam uji beban kami di malam hari, throughput rata-rata meningkat sekitar 30%.
Menulis ulang lapisan jaringan juga termasuk mengganti penyangga buffer kustom kami dengan
MemoryPool<byte>
, dan dengan perubahan ini, serialisasi sekarang mengambil keuntungan dari
Span<T>
. Beberapa jalur kode yang sebelumnya bergantung pada penguncian melalui utas khusus yang memanggil
BlockingCollection<T>
sekarang menggunakan
Channel<T>
untuk meneruskan pesan tidak sinkron. Hal ini menghasilkan utas yang kurang berdedikasi, alih-alih memindahkan pekerjaan ke kumpulan .NET thread.
Hosting bersama melalui Generic Host
Hosting bersama Orleans dengan platform lain seperti ASP.NET Core dalam proses yang sama sekarang lebih mudah daripada sebelumnya berkat
.NET Generic Host .
Berikut adalah contoh menambahkan Orleans bersama dengan ASP.NET Core ke host menggunakan
UseOrleans
:
var host = new HostBuilder() .ConfigureWebHostDefaults(webBuilder => {
Fungsi ini dapat digunakan untuk menyederhanakan topologi penyebaran atau untuk menambahkan fitur tambahan ke aplikasi yang ada. Beberapa tim menggunakan shared hosting secara internal untuk menambahkan
tes Kubernetes ke proyek Orleans mereka menggunakan
ASP.NET Core Health Checks .
Peningkatan Keandalan
Cluster sekarang lebih cepat pulih dari kegagalan berkat gosip canggih. Selain itu, kesalahan pengiriman pesan kini ditangani secara lebih konsisten, menghasilkan kesalahan yang dikembalikan ke pemanggil. Ini membantu pengembang menemukan bug lebih cepat. Misalnya, ketika pesan tidak dapat sepenuhnya serial atau deserialized, pengecualian rinci akan diteruskan kembali ke pemanggil asli.
Ekstensibilitas yang Ditingkatkan
Streaming sekarang dapat memiliki adapter data sendiri, yang memungkinkan mereka menerima data dalam format apa pun. Ini memberi pengembang lebih banyak kontrol atas bagaimana item aliran direpresentasikan dalam repositori. Ini juga memberi penyedia aliran kendali atas bagaimana data ditulis, memungkinkan aliran untuk berintegrasi dengan sistem yang ada dan / atau layanan non-Orleans.
Keadaan khusus transaksi sekarang dapat menyatakan peran apa yang dapat dimainkannya dalam transaksi. Misalnya, penerapan status transaksi yang menulis peristiwa siklus hidup transaksi ke antrian bus layanan tidak dapat memenuhi tugas manajer transaksi karena hanya menulis.
Bergabunglah sekarang!
Sekarang Orleans 3.0 telah dirilis, kami mengalihkan perhatian ke rilis mendatang - dan kami memiliki beberapa rencana menarik! Bergabunglah dengan komunitas kami yang hangat dan ramah di
GitHub .
Lihat juga: 7 kursus gratis untuk pengembang