Pure.DI langkah selanjutnya

Baru-baru ini di posting ini Anda diperkenalkan ke Pure.DI perpustakaan . NET 5 code analyzer / generator package dibuat sebagai pembantu yang menulis kode sederhana untuk menyusun objek dalam gaya DI murni menggunakan petunjuk untuk membangun grafik ketergantungan. Ini memantau perubahan, menganalisis jenis dan ketergantungan di antara mereka, menyoroti masalah dan menyarankan solusi. Penting untuk diperhatikan bahwa pustaka Pure.DI bukanlah wadah injeksi ketergantungan, tugasnya meliputi:





  • analisis grafik ketergantungan





  • definisi masalah dan cara untuk menyelesaikannya





  • membuat kode yang efisien untuk komposisi objek





Dari diskusi di posting sebelumnya, saya mendapat kesan bahwa masalah berikut perlu ditangani:





  • menambahkan kemampuan untuk menggunakan Pure.DI dalam kerangka ASP.NET





  • hapus ketergantungan biner pada API dari paket Pure.DI.Contracts





  • meningkatkan kinerja untuk kasus di mana operasi Resolve()



    dilakukan beberapa kali





Sekarang, setelah perbaikan kecil, penganalisis kode secara otomatis mendeteksi apakah proyek ASP.NET adalah sebuah proyek dan menghasilkan kode metode ekstensi kustom yang menyediakan integrasi dengan ASP.NET . Untuk mendemonstrasikan fitur ini, saya memilih aplikasi server Blazor :





:





DI.Setup()
  .Bind<IDispatcher>().As(Singleton).To<Dispatcher>()
  .Bind<IClockViewModel>().To<ClockViewModel>()
  .Bind<ITimer>().As(Scoped).To(_ => new Timer(TimeSpan.FromSeconds(1)))
  .Bind<IClock>().As(ContainerSingleton).To<SystemClock>();
      
      



DI   ASP.NET :





services.AddClockDomain();
      
      



, -, . , :





  • ContainerSingleton - ASP.NET





  • Scoped - ASP.NET scope





ASP.NET, .





API β€œβ€ Pure.DI.Contracts. API β€œ ” , API . , , analyzers Pure.DI . , , , β€œ - ”.





Kerangka ASP.NET memanggil metode Resolve()



untuk setiap permintaan. Untuk mengurangi overhead panggilan ini, kode yang bertanggung jawab untuk memetakan jenis elemen root dari komposisi objek ke metode pembuatan komposisi tersebut telah dioptimalkan. Hasil uji komparatif dapat dilihat di sini . Saya ingin menekankan bahwa perbandingan ini menggunakan cara kontroversial untuk memperoleh metrik kinerja. Oleh karena itu, hasil ini memberikan perkiraan kasar dari overhead dari beberapa panggilan metode Resolve()



.





Seperti biasa, setiap komentar dan ide yang membangun sangat dihargai.








All Articles