Bagaimana saya bisa menerapkan pustaka lintas platform saya (misalnya pada JRE) untuk beroperasi dengan cara yang aman untuk referensi objek, sehingga ujung depan asli pada platform lain dapat mengamati objek dan mengambil keuntungan dari pola yang dapat diamati?
Sedikit latar belakang - ada konsep pengikatan data yang digunakan di sebagian besar kerangka front-end. Dalam C # dan Java ini terkait dengan sifat yang dapat diamati yang memberikan kelas kemampuan untuk memecat peristiwa ketika perubahan terjadi, di mana beberapa kontrol atau "pengamat" dapat berlangganan. Dengan cara ini pengamat tidak harus terus polling / membaca sumber daya, membandingkan pembaruan.
Saya ingin bekerja pada mesin analisis yang membuat perubahan pada daftar data dari waktu ke waktu. Akan menyenangkan untuk dapat memiliki front-end dapat mengamati daftar ini saat analisis sedang berjalan. Menurut saya ini membutuhkan front-end untuk dapat mengirimkan objek ke mesin analisis, ditulis di perpustakaan yang semoga bersifat cross-platform, dan mampu membuat thread-safe dibaca untuk objek tersebut. Atau yang lain, mintalah perpustakaan memenuhi kontrak pengawasan.
Cara ini ditangani pada engine CLI gaya Unix yang lebih lama adalah dengan menggunakan stdin / stdout / stderr, dan meminta pembaruan pos engine secara berkala. Ini membutuhkan overhead standar dan penguraian teks yang lebih baik saya hindari, jika mungkin.
sumber
Jawaban:
Anda dapat membuat tingkat integrasi di atas model perpustakaan Anda menggunakan (misalnya) kerangka kerja integrasi unta apache. Komponen Netty mungkin dapat memenuhi kebutuhan Anda. Dengan pola yang dapat diamati tingkat integrasi Anda harus mengubah perubahan yang diterima model Anda dan memberitahukannya kepada pelanggan front-end. Cara serupa lainnya untuk menginterpretasikan kebutuhan Anda adalah dengan memikirkan arsitektur yang digerakkan oleh peristiwa di mana ketika model Anda berubah, pendengar pengamat di tingkat integrasi Anda menerbitkan pesan dalam JMS Topic sehingga subscriptor yang terhubung di front-end akan menerimanya.
sumber
Saya menulis jawaban yang sama sekali berbeda, menunjukkan bahwa penerbit Anda menulis pembaruan ke antrian atau pipa - tapi kemudian saya membaca kembali pertanyaannya.
Jika saya mengerti benar pertanyaan umum Anda adalah bahwa Anda ingin menulis pustaka untuk dijalankan di JRE, di mana front-end asli dapat melakukan query keadaan objek Java dengan cara yang aman.
Ini sangat luas karena ada ratusan cara front-end dapat berinteraksi dengan kode perpustakaan yang berjalan di JRE - JNI, EJB RPC, antarmuka HTTP gaya-RPC, respons permintaan atas antrian pesan, dll.
Apa pun yang Anda pilih, di beberapa titik dalam rantai, harus ada pemanggilan metode Java, dan di sanalah Anda bisa mengendalikan keamanan benang. Di sana, Anda memiliki seluruh gudang alat pengaman ulir yang Anda inginkan. Anda dapat menyinkronkan, Anda dapat mengembalikan salinan defensif, bekerja dengan data cache, dll.
Namun, pertimbangkan apakah ini model yang ingin Anda ikuti. Mungkin lebih bersih untuk beralih ke model "jangan tanya saya, saya akan memberi tahu Anda", di mana perpustakaan Anda mendorong pembaruan ke front-end yang berisi informasi yang cukup sehingga tidak perlu meminta objek.
sumber