Halo, warga Habrovsk!
Kami kembali dari konferensi untuk pengembang
DotNext .NET dan dengan jujur membagikan kesan kami tentang laporan yang paling berkesan. Kami berharap ulasan kami akan bermanfaat bagi mereka yang akan menonton video pertunjukan.
Bagian dari presentasi diterbitkan di situs web konferensi, jadi kami menambah beberapa ulasan dengan tautan ke sana.

Hari 1
Menggunakan Tarantool dalam proyek .NET - Anatoly Popov ( presentasi )
Laporan dimulai dengan ulasan evolusi SQL -> NoSQL -> database NewSQL, pro dan kontra mereka. Anatoly mengatakan mengapa, sebenarnya, kebutuhan untuk NewSQL telah matang - ini adalah upaya untuk melintasi kinerja NoSQL dan bahasa query SQL, di mana satu miliar alat yang berguna tersedia.
Fitur berikut disebutkan tentang Tarantool - catatan disimpan sebagai tupel yang panjangnya sewenang-wenang. Di bawah tenda, Tarantool menggunakan pohon LSM.
Bagian utama dari laporan ini, Anatoly berbicara tentang perjuangan untuk kinerja dalam implementasi driver Tarantool untuk .NET. Abstraksi baru dari Readonly Span dan kumpulan IMemoryOwner mulai beraksi. Standar diambil 200k RPS, yang memberikan driver Golang, dan sejauh ini berhasil mencapai 1/3 dari hasilnya. Pembicara meyakinkan bahwa ia akan secara bertahap meningkatkan indikator, tetapi rencana masa depan spesifik dan prospek tetap dalam kabut.
Optimalisasi di dalam .NET Core - Egor Bogatov
Yegor mengelilingi ceritanya tentang nyali mono dan ryuJIT dengan humor yang sesuai, tidak seperti Unity from Mutel yang sama, yang agak mengantuk untuk didengarkan.
Egor membahas topik auto-vektorisasi perhitungan dalam mono, juga berbicara tentang instruksi SSE-AVX, sekarang tersedia langsung dari C #.
Melihat ke masa depan, dia memberi tahu kami bahwa dalam kompilasi tingkat Net. 3 menanti kami, yaitu jit berat yang terpisah akan muncul di runtime like server di Java. Dalam ryuJIT, optimisasi baru diharapkan untuk loop terbuka dan analisis melarikan diri (yang terakhir digergaji oleh siswa, biarkan github membantunya).
Komentar kami: Hari ini, cadangan yang mengesankan tetap untuk peningkatan kinerja platform yang lebih besar, karena banyak optimasi penting dari dunia Java dan kompiler statis klasik masih belum diterapkan di .Net.
Pengembangan web modern dengan SAFE-Stack - Steffen Forkmann
Stefan adalah seorang apologis yang bersemangat untuk bahasa F #. Dalam laporan itu, ia berbagi pengalamannya dalam pengembangan web, sepenuhnya dibangun di atas kanon fungsional. Di sini Anda memiliki Kerangka Kerja MVC Fungsional (Saturnus), dan Fabel untuk menerjemahkan F # ke dalam JS, dan UI mirip Elm, cukup berpengalaman dengan frasa yang sangat bagus dan sangat bagus. Laporan ini secara keseluruhan tidak buruk dan menegaskan kemampuan supranatural agama-agama alternatif.
Membuat aplikasi Xamarin proof mode pesawat - Gerald Versluis ( presentasi )
Menurut metode presentasi, laporan ini sangat mirip dengan laporan SAFE-Stack dan terlihat seperti program "Smack": pertama kita meletakkan komponen Essentials untuk mendeteksi akses Internet di piring dengan aplikasi, kemudian kita melewati REST API melalui Refit, mendinginkan data dalam cache Akavache, taburkan Polly di atas untuk penanganan kesalahan pandai dari permintaan jaringan. Bukan tanpa ironi Belanda, karena aplikasi terus jatuh secara acak di simulator.
ASP.NET Core multi-tenant architecture: Tantangan dan solusi - Halil İbrahim Kalkan ( presentasi )
Laporan ini menjelaskan semua fitur utama arsitektur aplikasi multi-tenant.
Gagasan utama adalah bahwa ketika perusahaan mengembangkan aplikasi SAAS, ia ingin menggunakan infrastruktur secara maksimal. Oleh karena itu, ia memiliki beberapa klien di server yang sama sehingga server tidak dapat diam. Ini menyebabkan masalah yang terkait dengan fakta bahwa semua data klien yang berbeda seolah-olah berada di boiler yang sama. Laporan ini berfokus pada solusi yang memungkinkan akses yang dapat diandalkan ke data ini.
Laporan yang sangat baik di mana semuanya diletakkan di rak. Contoh-contoh sederhana dan mudah dipahami tanpa detail yang tidak perlu - mereka ditulis dengan sangat elegan, menggunakan pola dan pendekatan modern. Saya menyaksikan dengan senang hati.
Desain berbasis domain: resep untuk pragmatis - Alexey Merson ( presentasi )
Laporan yang sangat baik tentang konsep dasar DDD. Buku mana yang harus dibaca pertama: "biru" atau "merah"? Bagaimana seluruh tim dapat berbicara dalam bahasa yang sama? Apakah mungkin menggunakan penamaan Cyrillic dalam program C #? Bagaimana akhirnya berhenti menjadi takut pada Separated Interface dan membuat kode domain independen dari sisa aplikasi? Semua poin dengan contoh ini disorot dalam laporan ini.
Alexey menekankan pentingnya bahasa (bahasa tunggal) untuk implementasi satu Bounded Context. Dia mengatakan bagaimana cara memilih ukuran dari Bounded Context dan apa jenis Subdomain. Laporan itu juga mengatakan bahwa satu Bounded Context sama dengan satu microservice - ini berkorelasi baik dengan pengalaman kami dalam mengimplementasikan proyek.
Sangat menarik untuk mendengar tentang esensi arsitektur bulat dan pro dibandingkan dengan arsitektur tiga lapis / empat lapis.
Laporan ini ideal bagi mereka yang baru mengenal DDD dan ingin mentransfer monolit mereka ke layanan microser, dan bagi mereka yang mulai mengembangkan solusi layanan microser.
Hari 2
Pengujian unit pragmatis - Vladimir Khorikov ( presentasi )
Salah satu laporan dan pembicara terbaik menurut pendapat kami.
Vladimir menyortir rak apa tujuan sebenarnya dari tes untuk proyek ini, apa metrik menentukan kualitas tes, bagaimana berbagai jenis pengujian sesuai dengan metrik ini. Seseorang tidak dapat tidak setuju dengan semua pikiran, jadi harus melihat.
Khorikov telah mencatat banyak kursus di Pluralsight - mencarinya di sana. Ia juga memiliki
blog yang bagus.
Desain Instan - Maxim Arshinov ( presentasi )
Melanjutkan laporan Merson pada DDD, Maxim berbicara tentang transisi dari layering kode klasik ke arsitektur bawang merah, di seluruh laporan itu merefleksikan metode memperbarui email pengguna. Hasilnya adalah pipa dekorator (hi, yegor256) dalam gaya CQRS dengan pengetikan DTO paling ketat (hi, FSharpForFunAndProfit).
Hasilnya, kami menerima panduan siap pakai untuk tindakan, yang dapat digunakan dalam proyek untuk mendapatkan kode elegan yang sama dengan Max.
Secara umum, laporan ini sangat penuh dengan ide-ide berguna. Pengalaman Maxim dalam mengajar berdampak positif pada tingkat keterampilannya sebagai pembicara - mendengarkan presentasi itu bagus.
Di belakang compiler burst, mengonversi .NET IL ke kode asli yang sangat dioptimalkan dengan menggunakan LLVM - Alexandre Mutel
Rupanya, Unity memamerkan game-game kelas A, dan karenanya igrodelov membutuhkan kinerja yang lebih dekat dengan C ++. Mutel mengatakan bagaimana mereka mencapai hasil yang baik dengan menyoroti subset dari bahasa C # (HPC #), yang memiliki struktur siap pakai untuk pekerjaan efisien dengan memori tanpa GC dan beberapa konstruksi bahasa yang akrab.
Idenya adalah untuk menerapkan subset ini hanya untuk metode yang paling mahal, sehingga di tempat lain tangan akan dilepas seperti biasa (sejauh diizinkan dalam game dev). Kompilasi burst AOT / JIT baru sedang dikembangkan untuk mengkompilasi HPC #. Burst dibandingkan dengan ryuJIT sudah memberikan 10x pada beberapa tes sintetis.
Contoh-contoh yang ditampilkan dari assembler yang dihasilkan menunjukkan bagaimana otaknya kompiler. Dan solusinya sendiri dan tidak ada yang terkejut - kode IL dimasukkan ke dalam LLVM. Intrinsik juga ditulis untuk matematika menggunakan perpustakaan berkinerja tinggi pihak ketiga.
Laporannya sulit dimengerti, pembicara terlalu kasar.
Kehidupan aktor dalam sebuah kluster: mengapa, kapan dan bagaimana - Vagif Abilov ( presentasi )
Laporan tersebut mengungkapkan bahwa setengah dari penonton duduk di F #. Ini mungkin hal yang paling menyenangkan dalam laporan ini. Pertunjukan berakhir dengan nyanyian langsung tentang otak terbelah dalam satu kelompok. Itu mulia.
Cara bertahan di bawah beban: server toleran-kesalahan, klien pintar - Igor Lukanin ( presentasi )
Igor berbicara tentang dapur kelas atas di proyek-proyek Kontur. Saya terkejut bahwa perusahaan menggunakan "penyeimbang" pada klien: API mengirimkan informasi tentang memuat node dan status cluster 429, tergantung pada klien yang mengerti bagaimana cara mendistribusikan permintaan. Dia juga menunjukkan metrik pemanfaatan sumber daya dan cara menentukan apakah semuanya baik atau semuanya buruk. Dia memberi tahu cara mengutip permintaan dengan batas waktu dan oleh klien, dan juga mengapa lebih baik memproses antrian dalam urutan LIFO.
Mikrofon itu dimiliki oleh pembicara yang berpengalaman, mendengarkan Igor nyaman.
Arsitektur Kinerja Dodo IS - Georgy Polevoy ( presentasi )
Pada awalnya, laporan itu tampak agak membosankan: kecepatan narasi yang tidak jelas, slide yang membosankan dengan daftar teknologi, definisi yang terkenal. Pada titik tertentu, muncul kecurigaan: pembicara akan segera mengatakan bahwa semua yang diperlukan adalah garis di pintu masuk. Tapi itu tidak sesederhana itu.
Menjelaskan secara singkat laporan ini, kita dapat mengatakan bahwa itu dikhususkan untuk fitur perpustakaan
Polly , seperti Retry Policy, Bulkhead Isolation, Fallback, dan dibumbui dengan contoh-contoh luar biasa dari kehidupan Pizza Dodo.
Tren beberapa tahun terakhir adalah menggunakan asinkron di mana-mana. Tetapi tren ini memiliki efek yang tidak terlihat - ini mengarah pada fakta bahwa sumber daya server "tersumbat". Sebelumnya, semuanya terbatas pada kolam utas. Server web memiliki kumpulan utas tetap yang memproses permintaan masuk yang melakukan operasi sinkron. Ini membatasi beban di server. Setiap utas dirilis dan menerima permintaan lain untuk diproses saat semua pekerjaan benar-benar selesai.
Saat ini, pengembang sering menulis kode asinkron tanpa memikirkan konsekuensinya. Akibatnya, aliran server web, memulai tugas asinkron berikutnya, dibebaskan dan melanjutkan untuk memproses semakin banyak permintaan baru. Seiring waktu, jumlah operasi asinkron yang kompetitif semakin meningkat, dan server web terus menerima permintaan yang semakin banyak.
Penulis dalam laporannya hanya mengatakan apa itu konkurensi dan mengapa konkurensi terbatas. Omong-omong, ini dan tugas-tugas lain manajemen beban dan toleransi kesalahan dibantu oleh perpustakaan Polly.
Secara umum, bahkan jika Anda tidak mengembangkan layanan yang sangat dimuat, tetap periksa laporan ini.
Membangun aplikasi responsif dan terukur - Jeffrey Richter ( presentasi )
Ini adalah laporan yang agak lama oleh Jeffrey Richter. Itu dapat ditemukan di Internet selama setidaknya satu tahun, dan topiknya tidak memiliki klaim hal baru. Tapi sial, ini Jeffrey Richter! Kami tidak bisa tidak mendengarkan penulis buku ini, yang dianggap sebagai Alkitab pengembang C # mana pun. Jeffrey tua adalah orang yang baik dan pembicara yang baik. Kami baru saja bersenang-senang.