<$BlogRSDUrl$>

Wednesday, September 29, 2004

Macam2

Pilih struts, atau JSF (java server faces)? Perbincangan tentangnya di theserverside.

Jive Software dah release Jive Messenger yg berfungsi sebagai group chat dan instant messaging sebagi open source, berlesen GPL. Perbincangan tentangnya di theserverside.

Lagi docs menarik tentang echo. Client/Server Interaction.


Tambahan tentang code RMI

> Interface IMessageListener.java and ISimpleMessageApp.java tak pakai kan dlm tuh?

bagus, ada orang perasan tentang kedua2 interface ini. kedua2 interface ini adalah utk bhgn client side. saya hanya tunjuk cara implement pada bhgn server side. hak bhgn client side tu, kena buat la sendiri, spt mana bhgn server side. lagi pun, itu aje yg saya sempat buat dlm masa 2 jam.

kpd yg masih blur, 4 interface dlm package assignment adalah interface yg menjadi tunggak architecture sistem message ini. sistem secara kasarnya terbhgi 3:

client side                                  server side
--------------------------------------------------------
          communication (rmi/socket/etc)

client side ialah apa shj fungsi utk menjayakan bhgn client side, spt keupayaan utk logon, sama ada ada gui atau command line aje, keupayaan utk hantar dan terima message, sama ada ada gui atau command line aje, keupayaan utk hantar dan terima private message, sama ada ada gui atau command line aje, dan lain2. TAK ada kaitan dgn communication apa yg nak digunakan dan segala pengetahuan tentang menjayakan penghantaran menggunakan cara communication tersebut.

server side ialah apa shj fungsi utk menjayakan bhgn server side, spt validate user (saya tak buat ni, tapi skeleton code dah ada, tambah aje), terima message dan hantar balik kpd semua orang (dah ada yg basic), terima private message dan hantar hanya kpd orang berkenaan (skeleton code dah ada), logout, dan lain2. Juga TAK ada kaitan dgn communication apa yg nak digunakan dan segala pengetahuan tentang menjayakan penghantaran menggunakan cara communication tersebut.

semua class utk server side dan client side ini mempunyai coupling dgn HANYA 0..4 interface yg terdpt dlm package mereka ini shj. semua class ini TAK boleh merujuk kpd mana2 interface dan class dlm sub package assignment.comm (spt package assignment.comm.rmi yg dah ada, mahupun assignment.comm.socket yg belum wujud).

dgn mengikuti rule ini, coupling class2 core iaitu class2 server dan client side, dihadkan, memberikan low coupling yg dikehendaki utk memaksimumkan code reuse di mana, apa shj comm implementation (socket ke, jms ke, corba ke, xml rpc / web service ke, peer to peer / jxta ke) semuanya adalah 'plugable' / plug and play.

begitu juga class2 comm spt code rmi yg separuh masak yg telah saya buat ni. ia juga tak kenal secara khusus class2 server side dan client side, hanya 0..4 interface itu aje. low coupling yg terhasil, membolehkan si A hasilkan client side yg hanya command line, si B hasilkan client side yg bergui guna Swing, si C hasilkan client side bergui guna SWT, dan lain2, DAN semuanya boleh menggunakan bhgn comm rmi yg separuh masak tadi tu.

si D pulak boleh hasilkan bhgn server side yg simple, si E hasilkan bhgn server side yg dasat giler, semuanya juga, masih boleh guna semula bhgn comm rmi separuh masak.

si F pulak, goreng terus code rmi yg separuh masak menjadikan ianya masak sepenuhnya, dan semua orang boleh guna comm rmi yg baru ini tanpa perlu ubah walau satu line code pun. kecuali la kalau ada perubahan requirements yg menyebabkan API tak memenuhi kehendak dan memerlukan perubahan kpd API dibuat.


Bhgn comm ini, pulak ada beberapa bhgn:
1. bhgn interface yg bersifat internal/dalaman kpd comm itu sendiri. cthnya dlm package assignment.comm.rmi pun ada beberapa interfacenya sendiri yg menjadi cara utk guna rmi iaitu melalui interface. tapi, interface dlm packege ini hanya la utk skop rmi aje, jgn sampai orang lain kenali ia.
2. bridge yg menghubungkan comm tu spt rmi, kpd bhgn core. bhgn comm (assignment.comm.*) ini memang mempunyai sedikit coupling kpd bhgn core (assignment) TAPI, hanya kpd 0..4 interface tersebut shj. TAK ada coupling kpd class2 bhgn core.

Jadi, utk hasilkan assignment.comm.socket, pastikan no 2 di atas ada. no 1, terpulang la.


Harap penerangan tentang faedah design cara ini dan bagaimana nak implement assignment.comm.socket kelak, adalah jelas.

Satu lagi, perasan tak, bagaimana architecture ini membantu dlm development sesuatu sistem secara berkumpulan?


Comments: Post a Comment

This page is powered by Blogger. Isn't yours?