Sembang.com >> Sembang-Komputer >> COM Marshaling

Hantar topik baru | jawab mesej ini Pengendali sahaja: kunci topik | padam topik
  Dimasukkan oleh:   Topik: COM Marshaling
 tukangtaip
 Ahli Setia
 Email | Cari Mesej
dimasukkan pada: 14 Okt 2000 01:14:23   

Soalan melalui e-mail:

i;m having problem understanding marshalling data betw.
> component.
> here's the scenario:
> i have 2 components which are :
>
> Business Logic and Data Tier
>
> i used ADO 2.1 as a middleware to ''talk' to Database .
>
> OK, on the presentation layer i passed one command to search
> from the DB whether user "max" is exist or not in the dB to Business
> Layer
> . Business Layer know it was asked to to the task. Then, it'll pass
> the
> parameter to Data Tier and Data Tier will do the task.
> OK, lets';s say user "max" was exist, Data Tier will pass the parameter
> back to Business Layer and then pass back to the user .
> WOW !! i can imagine how many data round trips there !!
> so, can u brief (analogy really appreciated !!) how can this data marshaling
> occur ?

¤º°`°º¤ø,¸¸,ø¤º°`°º¤øø¤º°`° tukangtaip ¤º°`°º¤ø,¸¸

IP: 136.1.1.33

 tukangtaip
 Ahli Setia
 Email | Cari Mesej
dimasukkan pada: 14 Okt 2000 01:32:48   

Well, if the two layers exist in separate processes (i.e. the component being called is packaged in an exe, not dll), then marshaling will definitely take place during the method call.

In fact, in your case, it occurs twice. First, when the DataComponent's method is called by GUIComponent. And then, when the method returns with the result.

In a normal, intra-process call (when the client and the server are in the same process space), no marshaling needs to occur. This is because, being in the same memory space, the client has direct access to the server.

However, when the call needs to cross process boundaries, trouble starts happening. Each process has its own memory space. Address $0101 in process A, for instance, physically points to a different section than the same address ($0101) in process B.

That's where marshaling comes in. Marshaling takes care of translating things like this so that clients and servers belonging to different processes can seamlessly communicate with each other as if they're in the same process.

Marshaling involves copying memory contents from the source process into a new memory area in the destination process. And presenting a pointer to this new memory to the destination instead of the original memory.

And in the case of DCOM, marshaling also takes care of disassembling the memory contents into network packets, and at the destination, reassembling them.

If you're concerned about the amount of processing and time that's taken by marshaling, I can assure you that in most cases, it's negligible. Naturally, it's not as fast as a non-marshaled method call, but it will hardly bog the system down.

Network speed does sometimes become a bottleneck, especially when the client and server are far apart. If you're developing for DCOM, you will want to take this into consideration.

The best strategy to minimize the marshaling overhead is by avoiding making frequent, small calls. You're better off lumping together small calls into one big call.

¤º°`°º¤ø,¸¸,ø¤º°`°º¤øø¤º°`° tukangtaip ¤º°`°º¤ø,¸¸

IP: 136.1.1.33

 hamdi
 Ahli Setia
 Cari Mesej
dimasukkan pada: 14 Okt 2000 08:48:25   

Thanks tukangtaip, for the info.

IP: 161.142.78.83

 gunx
 Ahli Setia
 Email | Cari Mesej
dimasukkan pada: 16 Okt 2000 20:58:30   

tq for the answer tukangtaip,
sebulan ini saya tidak berbuat apa-apa lagi utk pilot-phased saya. Saya hanya m'baca buku2 yg berkaitan dgn COM/DCOM/COM+ sahaja. U mungkin dapat bayangkan bagaimana wajah Boss saya sekarang apabila tiada progress yg saya tunjukkan. Boleh saya kategorikan sbg intangible progress

cabaran besar saya sekarang ialah hendak hantar/terima data drpd Spatial Database(database yg menyimpan data geografi). Jika data berbentuk text, saya rasa banyak resources yg boleh dirujuk.
semua business logic, saya hendak pindahkan ke MTS.

so, drpd penerangan u, data marshalling antara COM ini sangat lambat ttp cukup flexible.











powered by Black Ball with a green cross !!

IP: 202.188.127.2

 tukangtaip
 Ahli Setia
 Email | Cari Mesej
dimasukkan pada: 17 Okt 2000 01:23:42   

GunX,

In a way, what you're doing is right. Apa yang anda sedang pelajari ini kebanyakannya merupakan idea-idea yang abstrak, yang perlukan pemahaman yang solid sebelum memulakan langkah pertama. Especially when your first step is for a commercial project.

Macam masa tukangtaip mula-mula belajar C++ dulu (dari C), ENAM bulan tukangtaip tak buat apa-apa. Baca buku, faham betul-betul, bertapa kat 'bilik termenung', round USM 1000 kali dengan motor jipang (harga - RM 850.00) tukangtaip. Bila sudah faham, sudah sebati dalam fikiran baru tukangtaip cuba buat program untuk IBM (masa tu tukangtaip sedang practical training).

Sama juga, masa belajar COM dulu, tukangtaip rasa selama SETAHUN tukangtaip cuma baca, garu kepala, baca lagi, termenung. Tukangtaip mula belajar COM sejak tahun 1997-8 lagi. Tapi hanya pertengahan tahun 1999 baru tukangtaip berjaya buat projek komersil yang pertama.

Dan bukan tukangtaip sorang saja yang kata macam ni. Dalam sebuah buku ActiveX (anak buah COM) keluaran Microsoft, penulis buku itu sendiri mengaku, "masa saya belajar COM, selama 9 bulan saya berada di dalam satu alam kayangan yang penuh dengan asap. Tiba-tiba, satu hari, semua asap itu hilang begitu saja.".

So proses yang anda lalui merupakan proses yang semua orang lalui. Kerapkali bila orang masuk ke 'alam berasap' ini, contohnya bila student2 baru mula belajar programming, orang tak tahu bahawa, jika mereka sabar sikit, sekejap lagi asap itu akan hilang tanpa kita sangka-sangka. Kalau cakap orang putih, benda ini dipanggil "epiphany". Kalau cakap orang kita, ia dipanggil "hidayah".

Tapi berbalik ke alam nyata, dalam mana-mana projek komersil memanglah ada sorang-dua 'penunggu' yang sentiasa tak sabar untuk lihat hasil.

Masalahnya, orang penunggu ini tak sedar bahawa benda yang cuba dicapai tidak setara dengan pengetahuan sedia ada programmer-programmer dia. Of course, kalau dalam syarikat anda sudah ada COM expert, projek ini seminggu pun boleh disiapkan.

Tapi masalahnya, di Malaysia itu sendiri sekalipun, COM masih merupakan sesuatu yang baru. So kalau buat projek COM, mereka kenalah faham akan limitasi yang ada. Berpijak di bumi nyata. Benda ini bukan salah GunX, tetapi salah orang yang reti nak faham akan kompleksiti ini.

Dan ini merupakan masalah yang kerap wujud, especially disebabkan ramai boss-boss besar tidak mempunyai latarbelakang komputer yang cukup mantap.

Pernah tukangtaip consult untuk sebuah syarikat ternama di Malaysia (head office dia 30 tingkat). Boss besar nak buat projek (RM puluh-puluh juta), dan nak gunakan C++. Tapi tak ada orang yang tahu C++. Kebanyakan programmer mempunyai latarbelakang COBOL dan yang sewaktu dengannya. Habih camno? Maka pihak management pun jemputlah seorang lecturer dari Singapore untuk memberi kelas selama SEMINGGU. Dalam seminggu tu, nak kena belajar object-oriented programming, nak belajar C++, nak belajar Windows programming.

Naturally, selepas seminggu, haruslah tak dapat walaupun 10% dari matlamat asal kelas ini. Bukan salah programmer, bukan salah lecturer. Tetapi salah pihak management yang mempunyai pandangan yang terlalu optimis sehingga tidak realistik langsung.

Masalah ini bukan masalah yang unik. Di US pun terjadi juga, tetapi especially di Malaysia kerana orang lebih sensitif terhadap kos sesuatu projek. Setiap minggu masa terbazir bermakna beribu-ribu ringgit terpaksa dibelanjakan untuk membayar gaji programmer. Namun yang tidak disedari ialah, jika program ini terus ditulis juga tanpa pengetahuan yang solid, program ini akan kehilangan kestabilan. Selepas release nanti, akan kerap rosak. Dan kos untuk membetulkan program ini akan lebih mahal lagi dari kos menulisnya dulu. Mana lebih senang buat? Tulis program atau betulkan program orang lain?

Buku bertajuk DEATH MARCH menceritakan tentang ini dan faktor-faktor lain yang menyebabkan projek-projek tak jadi. Tak tahu di Malaysia ada jual atau tidak.

Sebenarnya, pilihan untuk menggunakan teknologi-teknologi baru sepatutnya dijadikan satu rancangan jangkamasa panjang oleh syarikat-syarikat. Mereka patut memberi masa yang secukupnya kepada programmer untuk belajar masak-masak dulu tentang teknologi ini sebelum mula mengimplementasikannya. Sementara menunggu masa itu tiba, sepatutnya gunakan dulu mana-mana teknologi sedia ada yang mampu melakukan kerja yang sama.

¤º°`°º¤ø,¸¸,ø¤º°`°º¤øø¤º°`° tukangtaip ¤º°`°º¤ø,¸¸

IP: 136.1.1.33

 gunx
 Ahli Setia
 Email | Cari Mesej
dimasukkan pada: 17 Okt 2000 12:08:20   

arrghhhh..at last ada juga tempat nak meluahkan perasaan yg terbuku nih.

yup! my boss is very optimistic. Cuba bayangkan prototype yg saya buat hendak dipindahkan ke pilot-phased dlm masa 3 bulan dgn pengetahuan programmer di tempat saya dlm COM hanya 30% sahaja.(drpd pemerhatian saya.)Sehingga sekarang saya sudah habis membaca 3 naskah buku COM dan saya masih lagi berada dlm alam khayalan/berasap.
Frankly, saya masih blur lagi dgn COM nih.
Projek hendak siap cepat. Memang boleh saya siapkan dlm masa 3 bulan, ttp sebulan selepas itu mungkin kena 'bedah' semula. arrghh...
saya mesti kena ambil tahu semua aspek termasuk memory management, multithreading, fault tolerance etc.

Saya sudah 'warning' boss saya , pilih antara 2:
1-system cepat siap, pastuh kene debug
2-lambat siap ttp stabil

::signed off

powered by Black Ball with a green cross !!

IP: 202.188.127.2

 gunx
 Ahli Setia
 Email | Cari Mesej
dimasukkan pada: 17 Okt 2000 15:47:27   

saudara tukangtaip ada recommend satu buku berkaitan dgn COM bertajuk Inside COM
adakah buku ini ?

powered by Black Ball with a green cross !!

IP: 202.188.127.2

 gunx
 Ahli Setia
 Email | Cari Mesej
dimasukkan pada: 17 Okt 2000 17:28:20   

tolong betulkan saya jika salah,
konsep object pooling pada pemahaman saya...
katakan ada 5 object utk cari data kat db.
setiap object yg berada dlm pool tuh dah siap-siap ada connection ngan database.
pastuh user 1-5 telah m'gunakan kesemua object yg berada dlm pool tu. tiba-tiba datang user ke-6 nak guna object. So, tak boleh dia (user ke 6) kena tunggu sehingga ada ada object yg telah direlease ke dlm pool tsbt.
so...kita dah jimat overhead utk kerja upkan connection ke db dan tutup connection.
apa pendapat U ?



powered by Black Ball with a green cross !!

IP: 202.188.127.2

 maTRixx
 Ahli Setia
 Email | Cari Mesej
dimasukkan pada: 18 Okt 2000 01:43:18   

Assalamualaikum,

Hmmm.. Dah agak lama maTRixx tak masuk sembang dan bersembang seprti kawan2 yang lain.. bukan apa , kadang2 tertlalu banyak kerja yang dekat dengan due date so kena rush siapkan ... masuk2 balik sembang.com , banyak topic yang baru2 yang tak tau hujung pangkalnya ... cepatnya berkembang !!
Anyway , maTRixx memang cukup tertarik dengan perbincangan ni..... pasal maTRixx rasa tak ramai yang betul2 implement COM nie .... yang tambah sedih tu , tak ramai yang boleh berbicara 'same languange' dengan tukangtaip atau gunx .... hmm .. at least ada jugak org tau benda nie ye tak ?? Jarang org bincang topic nie secara terperinci ..kali terakhir maTRixx join berbincang waktu maTRixx ikut training MCSD dulu ... tapi sekarang dah lupa..
Itulah masalah dia .. blaja teori jer ..kadang2 maTRixx rasa faham jugak apa yang tukangtaip dengan gunx tulis .. tapi kadang2 jadik blurrr... tapi seronok pasal maTRixx rasa boleh le tambahkan pengetahuan maTRixx...
Company maTRixx sekarnag nie sedang develop software ( gunx mungkin maklum !) .. yang guna cara yg orthodox .. maksudnya takder COM so on ... cuma lately boss maTRixx ada cakap yang dia agak interested ngan COM impelemnetation ni ... iskk nie yang buat rasa nak stay kat company lama nie ( maTRixx dah tender resignation ) !!!.. Cuma maTRixx nak tanya pendapat , macam mana nak convert sumer code tu dan implement using component etc?? Kena buat from ground up ker ?? Then satu lagi maTRixx tengok susah sangat nak develop since tak org yang really having a hands on experience ... mcm mana nak grow tu ??

~ TimE tO GeT RouGH !! ~

IP: 161.142.78.83

 gunx
 Ahli Setia
 Email | Cari Mesej
dimasukkan pada: 18 Okt 2000 12:19:47   

maTRixx :
terima kasih krn memberi saya semangat.
"Rome bukan dibina dlm masa sehari"

OK, berbalik pada topik COM ini, saya masih kabur dgn Versioning. Salah satu drpd kebaikan COM ialah apa-apa perubahan yg kita buat pada COM server (business logix atau Data Tiers), pihak client tidak perlu menerima perubahan tsbt.
ttp client pertama tidak dapat m'gunakan version terbaru tsbt dan user terbaru dapat m'gunakannya.
saya confuse! OK . drpd pemahaman saya, jika kita rebuilt COM kita, VB akan generate CLSID dan IID yg baru utk membolehkan SCM (Services Control Manager) menghantar maklumat ke cliet/server.
Saya setkan Version Compatibility sbg Binary Compatibilty. Adakah ia masih generate
CLSID dan IID yg berlainan ?
terima kasih cikgu...

powered by Black Ball with a green cross !!

IP: 202.188.127.2

 tukangtaip
 Ahli Setia
 Email | Cari Mesej
dimasukkan pada: 18 Okt 2000 13:36:45   

Well, tukangtaip tak tahu jawapannya kerana ini merupakan sesuatu yang spesifik terhadap Visual Basic. Tapi ya, kalau client lama tak boleh guna dan client baru boleh guna, ada 2 masalah yang mungkin:

1. CLSID dan/atau Interface ID sudah bertukar. (Client lama masih mencari ID yang lama).

2. Anda telah melakukan perubahan kepada interface / method melampaui perubahan yang dibenarkan. Secara pendeknya, sekali satu komponen sudah di publish (sudah mula digunakan oleh sesuatu client), anda tidak boleh:

- menambah/membuang mana-mana method dalam interface. Kalau perlu gunakan method baru, anda kena buat interface baru dalam komponen yang sama.

- menukar deklarasi untuk method, contohnya menambah parameter input.

¤º°`°º¤ø,¸¸,ø¤º°`°º¤øø¤º°`° tukangtaip ¤º°`°º¤ø,¸¸

IP: 209.252.122.220

 gunx
 Ahli Setia
 Email | Cari Mesej
dimasukkan pada: 18 Okt 2000 23:57:35   

katakan i buat design cam ni,

ada 2 pekej yg saya buat dlm MTS yg mana :

Pekej 1->Component A
Pekej 2->Component B

Apabila Com A dipanggil oleh user, saya programkan spy Com B juga turut dipanggil.
tujuan saya pisahkan 2 Com ini, spy apabila Com A gagal menjalakan sesuatu transaksi, Com B tidak gagal sama.

Adakah praktikal design sebegini?

powered by Black Ball with a green cross !!

IP: 202.188.127.2

 gunx
 Ahli Setia
 Email | Cari Mesej
dimasukkan pada: 19 Okt 2000 14:04:33   

drpd pembacaan saya, salah satu teknik nka debug COM ialah dgn testkan diluar drpd environment MTS.
so , jika saya debug diluar MTS, saya tidak m'gunakan interface Object Control(Object Context),
so, saya terpaksa buat kerja 2 kali. iaitu jika saya dapati COM tuh dah tak de bugs, saya masukkan ke MTS, kena tambah interface Object Context, tiba-tiba tengah dok run, ada pula bugs baru, kena buang balik Object Context, keluarkan drpd MTS dan test!
apa pendapat U ?
terima kasih...


powered by Black Ball with a green cross !!

IP: 202.188.127.2

 gunx
 Ahli Setia
 Email | Cari Mesej
dimasukkan pada: 20 Okt 2000 19:22:56   

saudara tukangtaip,

adakah saudara dgn buku ini?


berbaloi tak kalau beli?

powered by Black Ball with a green cross !!

IP: 202.188.127.2

 jembalang
 Ahli Setia
 Email | Cari Mesej
dimasukkan pada: 21 Okt 2000 03:51:12   

i want to learn COM/DCOM/COM+...

where to learn?? buku sini mahal uhuk.. ada tak source from internet??


jEmBaLanG

IP: 202.151.192.112

 tukangtaip
 Ahli Setia
 Email | Cari Mesej
dimasukkan pada: 22 Okt 2000 19:53:47   

GunX,

You're asking questions too rapidly. I can't keep up. Soalan-soalan payah pulak tu.

Soalan:
drpd pembacaan saya, salah satu teknik nka debug COM ialah dgn testkan diluar drpd environment MTS. So , jika saya debug diluar MTS, saya tidak m'gunakan interface Object Control(Object Context), so, saya terpaksa buat kerja 2 kali. iaitu jika saya dapati COM tuh dah tak de bugs, saya masukkan ke MTS, kena tambah interface Object Context, tiba-tiba tengah dok run, ada pula bugs baru, kena buang balik Object Context, keluarkan drpd MTS dan test!
apa pendapat U ?

Jawapan:
That's true, kena buat kerja 2 kali. But banyaknya kerja yang terpaksa dibuat 2 kali itu bergantung kepada bagaimana kita design class kita. Cadangan tukangtaip ialah supaya anda ikut arkitektur macam ni:

class CEngine
{
public:
void Run();

protected:
void Func1();
void Func2();
void Func3();
}

void CEngine::Run()
{
Func1();
Func2();
Func3();
}

Gunakan class yang sama dalam test client serta COM object.


Test environment:

void main()
{
CEngine obj;
obj.Run();
}


COM Object:

class CMyObject
{
void Run();
};

void CMyObject::Run()
{
CEngine engine;
Engine.Run();
}

Pastikan test client dan COM object menggunakan source files yang sama untuk CEngine.

Lain kali kalau ada kesilapan dalam Func1, Func2, anda boleh lakukan pembetulan dalam test client, dan cuma 'recompile' saja COM Object anda.


¤º°`°º¤ø,¸¸,ø¤º°`°º¤øø¤º°`° tukangtaip ¤º°`°º¤ø,¸¸

IP: 209.252.121.156

 tukangtaip
 Ahli Setia
 Email | Cari Mesej
dimasukkan pada: 22 Okt 2000 19:57:13   

Soalan:

ada 2 pekej yg saya buat dlm MTS yg mana :

Pekej 1->Component A
Pekej 2->Component B

Apabila Com A dipanggil oleh user, saya programkan spy Com B juga turut dipanggil.
tujuan saya pisahkan 2 Com ini, spy apabila Com A gagal menjalakan sesuatu transaksi, Com B tidak gagal sama.

Adakah praktikal design sebegini?


Jawapan:
Boleh tu memang boleh, tapi mungkin tak perlu. Tukangtaip rasa anda boleh letakkan kedua2 komponen dalam satu pakej, tapi pastikan configure B sebagai "does not support transactions." Rasanya gitulah kot.

¤º°`°º¤ø,¸¸,ø¤º°`°º¤øø¤º°`° tukangtaip ¤º°`°º¤ø,¸¸

IP: 209.252.121.156

 tukangtaip
 Ahli Setia
 Email | Cari Mesej
dimasukkan pada: 22 Okt 2000 19:59:36   

Soalan:
Buku Death March.

Jawapan:
Ha itulah bukunya. Well, it's a fun book tapi kalau budget terhad, tak beli pun tak apa. Instead, tukangtaip nak rekomen satu buku: Code Complete terbitan Microsoft Press. It teaches you good programming practice.

¤º°`°º¤ø,¸¸,ø¤º°`°º¤øø¤º°`° tukangtaip ¤º°`°º¤ø,¸¸

IP: 209.252.121.156

 gunx
 Ahli Setia
 Email | Cari Mesej
dimasukkan pada: 23 Okt 2000 10:53:05   

saudara tukangtaip,
minta maaf krn menanyakan soalan yg mengarut nih
style saya, jika dah baca satu line, saya berangan dan visualize macam mana bende tuh berlaku? Contohnya, bagaimana Proxy dan Stub di bind ? Indah sungguh...cuba bayangkan kesemua Component ini bercerai-berai pada mulanya, ttp jika diperintah berbuat sesuatu, ia mula bersatu dan bekerjasama menjalankan perintah dan kemudiannya bercerai semula apabila selesai.
ohhh....chewahhh..macam orang bercinta pulak

note:saya nak tengok buku Death March kat MPH, kalau rasa contentnya berkaitan, apa salahnya melabur !


powered by Black Ball with a green cross !!

IP: 202.188.127.2

 gunx
 Ahli Setia
 Email | Cari Mesej
dimasukkan pada: 23 Okt 2000 19:26:20   

cikgu COM : Ya, murid-murid, ada sebarang soalan?
gunx : sssaaya cikgu... *gunx mengangkat tangan*, Pernah tak cikgu buat Connection Pooling?


powered by Black Ball with a green cross !!

IP: 202.188.127.2

 gunx
 Ahli Setia
 Email | Cari Mesej
dimasukkan pada: 24 Okt 2000 00:04:07   

Screenshot buku yg direkomen oleh TukangTaip.


powered by Black Ball with a green cross !!

IP: 202.188.127.2

 tukangtaip
 Ahli Setia
 Email | Cari Mesej
dimasukkan pada: 24 Okt 2000 01:35:48   

GunX, sebenarnya banyak konsep COM taklah sesusah mana, tapi syaratnya anda kena faham dan biasa dengan C++. Malahan, jika anda baca buku INSIDE COM (Microsoft Press), anda akan melihat bagaimana sebuah COM component dibuat 'from scratch' menggunakan C++ dan memanipulasikan registry.

Sistem yang sedang tukangtaip tulis sekarang menggunakan MSMQ (gunakan API, bukan menggunakan MSMQ ActiveX Control).

¤º°`°º¤ø,¸¸,ø¤º°`°º¤øø¤º°`° tukangtaip ¤º°`°º¤ø,¸¸

IP: 136.1.1.33

 gunx
 Ahli Setia
 Email | Cari Mesej
dimasukkan pada: 27 Okt 2000 12:02:12   

err...dah lama tak jenguk sembang ...

Sistem yang sedang tukangtaip tulis sekarang menggunakan MSMQ (gunakan API, bukan menggunakan MSMQ ActiveX Control).
qouted from TT

saya tak faham apa maksud saudara, boleh tak saudara TT perjelaskan sikit. Biar semua dapat gambaran kasar. Pada fahaman saya, saudara tidak m'gunakan utiliti MSMQ yg disediakan oleh Microsoft, sebaliknya saudara membuat coding sendiri utk membuat direct-call. Adakah betul?
Saya masih lagi mempelajari architecture MTS, dan jika kita tidak mahu menggunakan khidmat MTS utk m'hubungkan base client dgn COM kita, kita boleh membuat low-level coding yg membuat direct call. So , saya anggap saudara m'aplikasikan konsep tsbt kpd MSMQ !

powered by Black Ball with a green cross !!

IP: 202.188.127.2

 gunx
 Ahli Setia
 Email | Cari Mesej
dimasukkan pada: 27 Okt 2000 17:24:00   

saya baru saja cover topik deadlock.
Utk pengetahuan semua, deadlock terjadi apabila transaksi A sudah setkan write-lock kpd data X dan cuba utk m'dapatkan write-lock kpd data Y. Transaksi B pula sudah setkan write-lock kpd data Y dan cuba utk dapatkan write-lock utk data X.
so. dah stuck transaksi!. Bende ini selalu terjadi kpd high volume of user melakukan transaksi serentak pada satu masa.
so, utk dunia programming, pelbagai kaedah boleh diaplikasikan utk m'atasi masalah di atas.
so, saya nak tanya kpd cikgu, apakah kaedah yg cukup berkesan utk atasi masalah ini ?

note:
Topik ini saya akan masukkan ke dlm arkib siri 3 kelas vb/COM.

powered by Black Ball with a green cross !!

IP: 202.188.127.2

 tukangtaip
 Ahli Setia
 Email | Cari Mesej
dimasukkan pada: 28 Okt 2000 05:33:51   

Gunx:

Abaikan jawapan tukangtaip tentang MSMQ tu. Sebenarnya tukangtaip salah faham soalan anda. Tukangtaip confused tentang 'connection pooling'. Baru tukangtaip tersedar yang anda sedang bercakap tentang database connections.

Jawapan ringkas kepada soalan anda: tidak, tukangtaip tak pernah gunakan connection pooling. Pertama sekali program tukangtaip sekarang tidak menggunakan OLEDB/ADO/ODBC, sebaliknya menggunakan direct call melalui Pro*C. (Database = Oracle 8). Jadi kalau nak buat connection pooling, terpaksa tulis connection manager sendiri untuk mencipta connection2 dan mengagih-agihkannya kepada client-client.

Walau bagaimanapun, my team member (a Vietnamese guy) ada buat connection manager tersebut, kerana service/daemon yang dia tulis itu menerima permintaan-permintaan dari laman ASP.

So bila program itu dimulakan (program itu merupakan satu service yang berjalan tanpa henti), dia akan establish beberapa database connection, dan menyimpan connection-connection ini di dalam ingatannya (using an array).

Kemudian bila satu permintaan diterima, dia akan cuba cari dari array tersebut satu connection yang tidak digunakan. Kalau jumpa, dia akan beri connection (actually connection pointer/handle) tersebut kepada thread yang memproses permintaan itu.

Untuk service yang tukangtaip tulis, keperluan ini tidak ada, jadi tukangtaip buka connection on-the-fly (bila perlu) dan tutup kembali bila sudah tidak digunakan.

By the way, screenshot ini merupakan satu test client yang tukangtaip tulis bagi menguji service tukangtaip. (Service itu dilarikan di sebuah komputer lain).



Ingat apa yang tukangtaip cakap tentang mengasingkan business logic ke dalam class2 yang asing dari class2 GUI/COM? Tukangtaip mempraktiskannya dalam aplikasi ini.

Service yang tukangtaip tulis ini berfungsi lebih-kurang sama seperti MTS, iaitu mengendalikan transaksi-transaksi yang datang dari luar. Cuma bezanya dengan MTS (yang mengagih2 kan transaksi ini kepada komponen-komponen), service tukangtaip mengagihkan transaksi2 ini kepada service-service lain, dan menggunakan MSMQ sebagai jambatan penghubung. Lagi satu bezanya, kerana sistem ini tidak menggunakan OLEDB, maka commit/rollback terpaksa dikendalikan secara berlainan, bukan automatik.

Aplikasi test client tukangtaip membolehkan seseorang melihat secara real-time apa yang sedang dilakukan oleh remote service tersebut.

Dalam kotak sebelah atas itu ialah mesej-mesej yang terdapat dalam queue (belum diproses). Dalam kotak bawah ialah mesej-mesej yang sudah/sedang diproses. Kelihatan semuanya sudah time-out (mati) kerana service yang sepatutnya memproses mesej ini masih belum disiapkan lagi (programmer lain yang tulis).

Bila satu transaksi tak menjadi (akibat tak mendapat jawapan, terjadi ralat), service tukangtaip akan menyuruh semua service-service yang mengambil bahagian dalam transaksi ini supaya 'rollback'.

¤º°`°º¤ø,¸¸,ø¤º°`°º¤øø¤º°`° tukangtaip ¤º°`°º¤ø,¸¸

*mesej ini telah dikemaskini oleh tukangtaip pada 28 Okt 2000 04:35:28*

IP: 136.1.1.33

Hantar topik baru | jawab mesej ini Pengendali sahaja: kunci topik | padam topik

Sembang.com >> Sembang-Komputer >> COM Marshaling

Masa pemprosesan: 19.455654 saat.


Sembang.com | Senarai sembang | Tolong! | Daftar | Lupa password | Kemaskini biodata | Logout

Melayu.com | Melayu.net | Sekolah.com | MyPHP

Di sini semuanya original. Sesiapa meniru tanpa kebenaran adalah orang yang sangat jahat.
©1998-2000 selemann is not salesman