none
Masalah dengan ICallbackEventHandler RRS feed

  • Pertanyaan

  • Alow rekan programmer....

    Saya sedang membangun sebuah web yang banyak menggunakan metoda ICallbackEventHandler. Web yang dibangun menunggu jawaban (respon) yang masuk ke database dari program desktop. Pada saat program desktop bekerja yang memakan waktu kurang dari 1menit, sehingga web aplikasi hrs menunggu. Selama menunggu itulah saya menggunakan ICallbackEventHandler yaitu pembacaan secara periodik (setiap 5detik). Jika hasil dari proses program dekstop telah terdapat dalam database, maka web akan menampilkan hasil nya ke tampilan web. Disamping itu juga saya menggunakan System.Threading.Thread.Sleep secara bersamaan selama proses ICallbackEventHandler berlangsung. Seluruh program baik Web, Desktop maupun Database berada dalam server yang sama.

    Masalah muncul dimana terkadang pembacaan periodik ke Database tidak berhasil dilakukan walaupun respon data telah tersedia di Database. Hal ini membuat penggunaan resource memory dan mengakibatkan server menjadi lambat.

    Adakah contoh metoda terbaik berikut source dalam VB, agar saya dapat menyelesaikan masalah ini?

    Saran dan bantuan dari rekan akan sangat membantu sekali dalam penyelesaian pekerjaan saya

    Terimakasih sebelumnya

    Selasa, 24 September 2013 08.55

Jawaban

Semua Balasan

  • Hi Ferdi

    Selamat datang di Forum MSDN

    Selama proses pembacaan berkala  ICallbackEventHandler (setiap 5 detik), saya sarankan saya sarankan tambahkan boolean dengan type variable untuk menyimpan status yang menunjukkan apakah program desktop sudah me reply
    Jika variabel berubah kemudian periksa hasil dari program desktop yang telah dimasukkan dalam database. (Key)

    Setelah di implementasikan, langkah tersebut akan mengurangi penggunaan memori
    Berikut pembelajaran ICallbackEventHandler
    Referensi:
    http://msdn.microsoft.com/en-us/library/system.web.ui.icallbackeventhandler% 28v = vs.110% 29.aspx

    Contoh penggunaan ICallbackEventHandler:
    http://www.codeproject.com/Tips/254530/How-to-Implement-ICallBackEventHandler-calling-ser
    http://www.codeproject.com/Articles/27172/The-ICallbackEventHandler

    Jadi saran saya workflow nya seperti ini
    (client) CallServer () -> (Server) ICallbackEventHandler.RaiseCallbackEvent (string eventArgument) -> (Server) ICallbackEventHandler.GetCallbackResult () -> (client) ReceiveServerData (string Value).

    Terima kasih


    Andy Nugraha

    TechNet Community Support

    Rabu, 25 September 2013 08.03
    Moderator
  • Terimakasih mas Andy atas responnya

    Saran mas Andy untuk memberikan Status Flag jika respon Desktop berhasil sangat berguna sekali. Namun untuk itu saya menggunakan pendekatan sedikit berbeda. Dimana saya menggunakan 2 tabel yang berbeda yaitu INBOX dan OUTBOX. Yang mana tabel inbox berisikan request dari Aplikasi Web, sedangkan Outbox berisikan respon dari Aplikasi Dekstop. Dan setiap kali request baru akan di input ke tabel Inbox, maka Aplikasi Web selalu meng-create Nomor Session baru yang unik dan berbeda untuk setiap request. Sehingga dengan Nomor Session unik itulah Aplikasi Web memeriksa setiap 5detik ke tabel Outbox. Dan jika tabel Outbox terdapat data dengan Nomor Session yang telah disepakati, maka tugas terakhir adalah menampilkan (render) data tsb ke Browser. Pekerjaan render ini lah yang terkadang gagal, padahal di database sudah terdapat data respon.

    Saya akan mempelajari link url yang mas Andy berikan. Tentu hal ini akan menambah wawasan saya dalam mempelajari ICallbackEventHandler.

    Terimakasih

    Sabtu, 28 September 2013 11.09
  • Oh ya... mungkin ada yg penasaran dgn source yang saya gunakan. Saya mengambil contoh dari link berikut: http://www.codeproject.com/Articles/15933/Another-Simple-Wait-Page

    Dimana sample tersebut saya modifikasi sesuai kebutuhan, sehingga dapat melakukan Long Running Job sambil membaca database secara periodik.

    Akan tetapi, seperti yg saya sebut diawal bahwa pembacaan database sesekali gagal menghentikan proses Long Running Jobs tersebut. Yang pada akhirnya gagal me render hasil ke browser yang berakibat proses terus berjalan sehingga membebani server dan menjadikan server lambat

    Sabtu, 28 September 2013 14.54