Penggunaan jarak jauh dan DI untuk DbContext di EF Core (3.0)

Saya ingin mengisolasi "inti" database sebagai layanan pada mesin isolasi dan mendapatkan akses melalui TCP/IP atau lapisan koneksi lainnya dari layanan lain yang memerlukan data dari database (koneksi database jarak jauh). Dalam layanan database saya ingin membuat dbcontext dalam memori yang menggantikan permintaan database dbcontext dengan DI.

Bisakah seseorang menjelaskan kepada saya cara terbaik dan benar untuk melakukan ini? Mungkinkah, ada beberapa proyek di github atau fungsi ini dapat ditemukan di EF Core (3.0) "out of the box"?

Terima kasih.


person Dmitriy    schedule 23.07.2019    source sumber


Jawaban (1)


Pertanyaan Anda selanjutnya dapat dimengerti (walaupun luas), tetapi Anda kehilangan saya karena:

Dalam layanan database saya ingin membuat dbcontext dalam memori yang menggantikan permintaan database dbcontext dengan DI.

Anda tentu saja dapat membuat layanan HTTP untuk digunakan sebagai persistensi daripada menggunakan DbContext secara langsung. Pada dasarnya itulah layanan mikro. Namun, Anda perlu berinteraksi dengan layanan tersebut melalui klien. Dalam kasus layanan HTTP, atau API yang lebih umum disebut, klien tersebut adalah HttpClient. Sepertinya Anda masih ingin menggunakan DbContext, tetapi tetap berinteraksi dengan layanan ini. Itu tidak mungkin.

Sejauh "di luar kotak" berlaku. Sebenarnya tidak ada apa-apa, karena setiap sumber data dan layanan mikro berbeda. Cara terdekat yang bisa Anda dapatkan adalah menggunakan OData atau GraphQL. Keduanya memerlukan konfigurasi pada tingkat tertentu, sehingga masih belum "out of the box", namun keduanya akan memungkinkan Anda mengeluarkan permintaan seperti kueri terhadap titik akhir, yang berarti Anda tidak perlu merancang banyak titik akhir yang berbeda. untuk menangani berbagai jenis pertanyaan atau operasi.

person Chris Pratt    schedule 23.07.2019
comment
Dalam layanan basis data saya ingin membuat dbcontext dalam memori yang menggantikan permintaan dbcontext basis data dengan DI - Maksud saya, saya ingin menggunakan kelas turunan DbContext yang sama untuk 2 contoh, satu menyimpan data dalam basis data memori, yang lain menyimpan data dalam basis data pada disk dari database pertama dengan tugas terjadwal. Basis data dalam memori adalah cache dengan logika khusus yang ingin saya jelaskan sendiri. - person Dmitriy; 23.07.2019
comment
Jadi, apa cara terbaik untuk merealisasikan klien - melalui MVC Controller atau gRPC? - person Dmitriy; 23.07.2019
comment
Tidak ada cara terbaik. Itu yang terbaik bagi Anda, tim Anda, organisasi Anda, dan aplikasi Anda. Tidak ada seorang pun yang dapat menelepon Anda. Teliti berbagai metode dan buat keputusan. - person Chris Pratt; 23.07.2019
comment
Seperti yang saya katakan, secara teori ini mirip dengan arsitektur layanan mikro, jadi pada dasarnya itulah pola desain Anda, tetapi ada jutaan cara yang dapat dilakukan dengan sejumlah kombinasi penyimpanan backend, penyedia, kerangka kerja, perpustakaan, protokol, komponen jaringan , dll. - person Chris Pratt; 23.07.2019