Saya telah digunakan SignalR
untuk mencapai fungsionalitas pengiriman pesan langsung di beberapa proyek saya. Tampaknya bekerja dengan andal dan sangat mudah dipelajari untuk digunakan.
Godaan, setidaknya bagi saya, adalah meninggalkan pengembangan layanan Web API dan gunakan SignalR
untuk semuanya.
Saya merasa ini bisa dicapai dengan desain yang bijaksana, dan jika ya, itu berarti jauh lebih sedikit kode klien yang diperlukan. Lebih penting lagi, itu akan berarti bahwa akan ada satu antarmuka untuk layanan daripada antarmuka terpisah, dan dalam kasus terburuk, bahwa seseorang dapat menghubungkan ini tanpa memikirkan kapan hal-hal ditampilkan, dll.
Jadi, saya ingin tahu:
- Apakah ada alasan lain untuk tidak menggunakan SignalR sebagai pengganti semua layanan web selain kinerja?
- Apakah kinerja SignalR cukup memprihatinkan sehingga tidak masuk akal untuk melakukannya?
Sudah lama menjadi impian saya untuk dapat menerjemahkan objek sisi server dan definisi layanan ke kode akses layanan sisi klien tanpa sesuatu yang konyol seperti node.js
. Misalnya, jika saya mendefinisikan objek yang menarik InterestingObject
dan layanan ke CRUD
objek tersebut InterestingObjectService
, saya dapat menentukan rute URL standar ke layanan - katakan, "/ {serviceName} / {methodName}" - tetapi saya masih perlu menulis kode klien untuk mengakses pelayanan. Karena objek akan diteruskan dari klien ke server dan kembali, tidak ada alasan praktis untuk memilikinyauntuk mendefinisikan objek secara eksplisit dalam kode sisi klien, dan juga tidak perlu secara eksplisit menentukan rute untuk melakukan operasi CRUD. Saya merasa seperti harus ada cara untuk membakukan semua ini sehingga memungkinkan untuk menulis klien dengan asumsi bahwa akses layanan berfungsi dari klien ke server dan kembali secara transparan seperti ketika saya menulis WinForms atau Java Applet atau Aplikasi Asli atau apa pun.
Jika SignalR cukup baik untuk digunakan sebagai pengganti layanan web tradisional, itu mungkin cara yang layak untuk mencapai ini. SignalR sudah menyertakan fungsionalitas untuk membuat hub berfungsi seperti layanan yang saya jelaskan, sehingga saya bisa mendefinisikan layanan common base (CRUD) yang akan menawarkan semua fungsionalitas ini di luar kotak dengan beberapa refleksi. Kemudian saya hampir dapat menerima akses layanan yang diberikan, menyelamatkan saya dari gangguan penulisan ulang kode untuk mengakses sesuatu yang dapat diakses dengan konvensi - dan yang lebih penting, waktu saya harus menghabiskan kode menulis untuk menentukan bagaimana ini diperbarui di DOM.
Setelah membaca hasil edit saya, saya merasa sedikit tidak masuk akal, jadi silakan bertanya kepada saya jika Anda memiliki pertanyaan tentang apa yang saya maksud. Pada dasarnya, saya ingin akses layanan setransparan mungkin.