Bài giảng Kỹ thuật về các mô hình lập trình ứng dụng, các kiến trúc COM DCOM và cách hiện thực ứng dụng dựa trên các kiến trúc này

Taøi lieäu moân hoïc Coâng cuï phaùt trieån öùng duïng  
KYÕ THUAÄT VEÀ CAÙC MOÂ HÌNH LAÄP TRÌNH ÖÙNG DUÏNG, CAÙC KIEÁN TRUÙC COM/DCOM VAØ  
CAÙCH HIEÄN THÖÏC ÖÙNG DUÏNG DÖÏA TREÂN CAÙC KIEÁN TRUÙC NAØY  
I. Giôùi thieäu moâ hình laäp trình öùng duïng:  
1. Giôùi thieäu moâ hình client/server :  
Moâ hình client/server laø moâ hình coù aûnh höôûng lôùn nhaát ñeán ngaønh coâng ngheä thoâng tin. Moâ hình client/server giuùp cho  
nhöõng maùy tính rieâng leû, khaû naêng xöû lyù thaáp coù theå chaïy ñöôïc nhöõng öùng duïng raát lôùn, phöùc taïp. Moâ hình client/server giuùp  
phaùt trieån moät phöông thöùc phaùt trieån öùng duïng môùi laø vieäc phaân chia öùng duïng thaønh nhieàu lôùp thöïc hieän nhöõng chöùc naêng  
chuyeân bieät. Moät öùng duïng thoâng thöôøng ñöôïc chia laøm 3 lôùp:  
o
Giao dieän (Presentation logic): lôùp naøy laø caàu noái giöõa ngöôøi duøng vôùi öùng duïng, cung caáp nhöõng chöùc naêng öùng duïng  
cho ngöôøi duøng vaø nhaän leänh töø ngöôøi duøng cho öùng duïng. Lôùp naøy ñöôïc thieát keá sao cho caøng thaân thieän vôùi ngöôøi  
duøng caøng toát.  
o
o
Chöùc naêng (Business logic): ñaây laø phaàn loõi cuûa moät chöông trình, cung caáp taát caû nhöõng chöùc naêng coù theå coù cuûa  
chöông trình cho lôùp giao dieän beân treân.  
CSDL (Data Access logic): lôùp naøy cung caáp khaû naêng truy xuaát ñeán CSDL cho lôùp chöùc naêng neáu caàn.  
Vieäc phaân chia öùng duïng thaønh nhieàu lôùp coøn giuùp cho öùng duïng trôû neân deã daøng thay ñoåi, caäp nhaät vaø ñaùng tin caäy hôn.  
2. Moâ hình hai möùc (2 – tier) client/server:  
ÔÛ moâ hình naøy khi client yeâu caàu moät thoâng tin gì ñoù thì client seõ gôûi yeâu caàu ñeán cho server, server xöû lyù caùc yeâu caàu töø  
client gôûi veà ñuùng nhöõng thoâng tin maø client caàn.  
Moâ hình naøy ñöôïc chia laøm hai loaïi:  
o
Tính toaùn taäp trung ôû client hay coøn goïi laø fat client – thin server: ôû loaïi naøy, phía client phaûi ñaûm nhaän caû 2 lôùp laø  
giao dieän vaø chöùc naêng, coøn server chæ ñaûm nhaän nhieäm vuï cuûa lôùp CSDL.  
Öu ñieåm cuûa moâ hình naøy laø ñôn giaûn, thích hôïp cho nhöõng öùng duïng nhoû. Tuy nhieân noù cuõng coù moät soá nhöôïc ñieåm  
sau:  
+ Do tính toaùn nghieâng veà phía client nhieàu neân ñoøi hoûi client phaûi coù caáu hình ñuû maïnh.  
+ Do lôùp chöùc naêng cuûa chöông trình naèm ôû phía client neân khi chöông trình caàn naâng caáp thì seõ raát khoù khaên  
vì phaûi caäp nhaät laïi chöông trình naèm ôû toaøn boä caùc client.  
+ Do moïi thao taùc naèm treân client neân thao taùc yeâu caàu döõ lieäu giöõa client vaø server nhieàu daãn ñeán toác ñoä  
chöông trình chaäm.  
o
Tính toaùn taäp trung ôû server(fat server – thin client): ôû loaïi naøy, client ñaûm nhaän phaàn giao dieän coøn server thöïc hieän  
nhieäm vuï lôùp chöùc naêng vaø lôùp CSDL.  
Ngöôïc laïi vôùi loaïi treân, loaïi naøy giaûm söï löu thoâng giöõa client vaø server. Tuy nhieân do coâng vieäc taäp trung nhieàu taïi  
server neân ñoøi hoûi caáu hình server ñuû maïnh, ñaët bieät laø khi coù nhieàu client truy xuaát cuøng moät luùc.  
3. Moâ hình ba möùc (3 – tier) client/server:  
Trong moâ hình 3 möùc, lôùp chöùc naêng cuûa chöông trình ñöôïc taùch ra thaønh moät möùc taïo thaønh 3 möùc rieâng bieät. Vieäc taùch  
lôùp naøy laøm cho caùc phaàn cuûa chöông trình ñoäc laäp hôn, ñaùng tin caäy hôn, chöông trình trôû neân linh ñoäng hôn trong vieäc thay  
theá, naâng caáp vaø do ñoù moâ hình naøy raát thích hôïp vôùi nhöõng öùng duïng coù yeâu caàu thay ñoåi thöôøng xuyeân.  
II. Giôùi thieäu sô löôït veà COM:  
COM (Component Object Model) laø moät caùch thöùc ñeå vieát caùc thaønh phaàn phaàn meàm(software componet) cung caáp caùc  
chöùc naêng phuïc vuï cho caùc öùng duïng, caùc thaønh phaàn khaùc. Vieát moät thaønh phaàn COM cuõng nhö vieát moät haøm API ñoäng,  
höôùng ñoái töôïng. Caùc thaønh phaàn COM coù theå ñöôïc noái keát vôùi caùc öùng duïng cuõng nhö caùc thaønh phaàn COM khaùc.  
a. COM laø gì ?  
COM chæ laø moät söï ñaët taû. Noù chæ ra laøm theá naøo ñeå xaây döïng caùc thaønh phaàn coù theå thay theá moät caùch “ñoäng”. COM  
cung caáp moät “chuaån” ñeå caùc öùng duïng vaø caùc thaønh phaàn phaûi tuaân theo ñeå chuùng coù theå hoaït ñoäng ñöôïc vôùi nhau.  
b. Thaønh phaàn COM laø gì ?  
Thaønh phaàn COM laø nhöõng ñoaïn maõ hieän thöïc caùc haøm, caùc chöùc naêng ñöôïc chöùa trong file .DLL hoaëc .EXE. Thaønh  
phaàn COM caàn phaûi thoûa maõn ñöôïc nhöõng “chuaån” cuûa COM. Caùc thaønh phaàn COM coù theå ñöôïc lieân keát ñoäng.  
Caùc thaønh phaàn COM coù theå ñöôïc ñoùng bao vì noù thoûa maõn caùc raøng buoäc:  
o
Thaønh phaàn COM hoaøn toaøn ñoäc laäp vôùi ngoân ngöõ hieän thöïc noù. Thaønh phaàn COM coù theå ñöôïc hieän thöïc baèng nhieàu  
ngoân ngöõ nhö Visual C++, Visual Basic, Java …..  
o
o
o
Thaønh phaàn COM ñöôïc söû duïng döôùi daïng maõ nhò phaân.  
Thaønh phaàn COM coù theå ñöôïc naâng caáp maø khoâng laøm hoûng chöông trình ñang chaïy.  
Thaønh phaàn COM trong suoát veà vò trí.  
c. Giao dieän (Interface)  
1
GV:Hoà Quang Khaûi  
Taøi lieäu moân hoïc Coâng cuï phaùt trieån öùng duïng  
Giao dieän laø taát caû ñoái vôùi COM. Caùc öùng duïng chæ coù theå nhìn thaáy vaø truy xuaát ñeán caùc thaønh phaàn COM thoâng qua  
giao dieän cuûa noù.  
Giao dieän laøm taêng möùc ñoä ñoäc laäp giöõa öùng duïng vaø caùc thaønh phaàn COM. nhôø coù giao dieän maø moät thaønh phaàn COM  
coù theå ñöôïc thay theá ñoäng maø khoâng aûnh höôûng ñeán öùng duïng ñang chaïy.  
Giao dieän khoâng bao giôø thay ñoåi. Neáu muoán naâng caáp moät giao dieän thì giao dieän môùi phaûi toàn taïi song song vôùi giao  
dieän cuõ.  
d. COM trong Windows:  
Trong Windows, caùc thaønh phaàn COM cuõng cuõng nhö giao dieän cuûa COM ñeàu ñöôïc gaùn moät ID. ID cuûa thaønh phaàn COM  
ñöôïc goïi laø CLSID(class identifier); cuûa giao dieän COM laø IID(interface identifier). Caùc ID naøy ñöôïc goïi chung laø  
GUID(globally unique identifier) laø moät caáu truùc 16 byte vaø ñöôïc xaùc ñònh duy nhaát treân toaøn theá giôùi. Taát caû caùc ID naøy ñeàu  
ñöôïc chöùa trong registry cuûa windows cuøng vôùi thoâng tin veà caùc thaønh phaàn hoaëc giao dieän maø noù ñaïi dieän.  
Khi öùng duïng muoán söû duïng COM, noù seõ goïi moät haøm API cuûa windows laø CoCreateInstance vôùi thoâng soá truyeàn vaøo laø  
CLSID vaø IID töông öùng vôùi thaønh phaàn vaø giao dieän maø thaønh phaàn ñoù hoã trôï ñeå coù ñöôïc giao dieän mong muoán.  
e. Caùch taïo COM(.dll) vaø COM(.exe) trong Visual Basic  
Khi taïo moät project môùi trong visual basic, ta coù theå choïn caùc daïng maãu coù saün ñeå taïo moät project môùi. Ñeå taïo thaønh  
phaàn COM ta coù hai löïa choïn daïng COM(.dll) hoaëc daïng COM(.exe) trong hoäp thoaïi New Project tuøy theo öùng duïng cuûa  
chuùng ta.  
Khi taïo moät döï aùn môùi daïng ActiveX (.dll) hay ActiveX (.exe) Visual Basic seõ töï ñoäng thieát laäp caùc thuoäc tính maëc ñònh cho  
döï aùn ñoù. Ta coù theå thay ñoåi nhöõng thuoäc tính ñoù ñeå chöông trình thöïc hieän toát hôn. Sau ñaây laø caùc thuoäc tính cô baûn cuûa moät  
döï aùn thaønh phaàn COM.  
+ Startup Object : Startup Object cho pheùp ta chæ ñònh lieäu code coù ñöôïc thöïc thi khi thaønh phaàn ñöôïc load leân hay khoâng. Ña  
soá thì ta thieát laäp thuoäc tính naøy laø None, code ñöôïc thöcï thi khi visual basic taïo moät theå hieän cuûa class.  
+ Project Name : laø teân cuûa döï aùn maø ta ñang taïo. Teân naøy cuõng laø ID cuûa thaønh phaàn COM trong windows registry. Teân cuûa  
döï aùn keát hôïp vôùi teân cuûa class taïo neân ProgID. Client seõ duøng teân naøy ñeå taïo moät ñoái töôïng COM.  
+ Threading Model (ActiveX .dll): Trong döï aùn ActiveX (.dll), Thread Model cho pheùp ta löïa choïn Single Threaded hoaëc  
Apartment Threaded. Giaù trò maët ñònh laø Apartment Threaded.  
- Apartment Threaded veà hình thöùc thöïc hieän chöùc naêng multithreading gioáng nhö Windows 95, Windows 98, and  
Windows NT. Ña phaàn caùc thaønh phaàn COM thöïc hieän vôùi Visual Basic ñeàu thöïc hieän vôùi Apartment Threaded.  
- Single Threaded: khi löïa choïn daïng naøy thì moïi client seõ chaïy treân moät thread duy nhaát, khi moät client gôûi moät yeâu caàu  
taïo thread ñeán, maø thread ñang phuïc vuï cho moät client khaùc thì client vöøa gôûi yeâu caàu phaûi ñôïi cho ñeán khi thread phuïc vuï  
xong client kia môùi ñaùp öùng lôøi goïi cuûa mình. Vôùi daïng naøy thì lôïi ñieåm laø deã kieåm soaùt vieäc taïo thread, nhöng ngöôïc laïi khaû  
naêng phuïc vuï keùm.  
- Nhöõng lôïi ñieåm cuûa söï löïa choïn Apartment Threaded.  
. Xöû lyù ñöôïc vaán ñeà coù nhieàu yeâu caàu taïo thread töø phía nhieàu client. Töï ñoäng quaûn lyù vieäc cung caáp thread phuïc vuï  
cho nhieàu client, nhöng taïi moät thôøi ñieåm chæ coù moät client ñöôïc phuïc vuï.  
2
GV:Hoà Quang Khaûi  
Taøi lieäu moân hoïc Coâng cuï phaùt trieån öùng duïng  
+ Threading Model (ActiveX .exe): Trong döï aùn ActiveX Exe ta coù nhöõng löïa choïn cho Threading Model nhö sau:  
- Chæ coù moät thread phuïc vuï: Chæ cho taát caû client duøng chung moät thread  
- Chæ ñònh moät con soá cuï theå thread duøng chung, vaø soá thread naøy ñöôïc quaûn lyù ñeå phuïc vuï cho nhieàu client theo phöông  
phaùp round-robin  
- Moïi yeâu caàu taïo phuïc vuï töø nhieàu client seõ ñöôïc ñaùp öùng baèng caùch taïo cho moãi client moät thread môùi. Ñieàu naøy gaây  
khoù khaên cho vieäc quaûn lyù caùc ñoái töôïng do client taïo ra.  
f. Caùch ñaêng kyù, gôõ boû ñaêng kyù COM(.dll) vaø COM(.exe) trong Windows  
Sau khi bieân dòch moät döï aùn COM thaønh moät file daïng dll hay daïng exe ta phaûi ñaêng kyù caùc thaønh phaàn COM naøy ñeå coù  
theå söû duïng ñöôïc coù nhieàu caùch ñeå ñaêng kyù sau ñaây laø caùch tieâu bieåu ñeå ñaêng kyù:  
+ Caùch ñaêng kyù COM DLL : Ñeå ñaêng kyù ñöôïc thaønh phaàn COM (.dll) ta thöïc hieän tuaàn töï caùc böôùc sau:  
o
o
o
Nhaán vaøo nuùt start cuûa Windows  
Treân Start menu, click Run.  
Trong Run dialog box, ta goõ vaøo nhö sau:  
Regsvr32.exe <DLLPath>\<DLL name>.dll  
o
Click vaøo nuùt OK. Neáu ñaêng kyù thaønh coâng seõ hieån thò dialog thoâng baùo sau  
Caùch gôõ boû ñaêng kyù cuûa thaønh phaàn COM (.dll) cuõng thöïc hieän caùc böôùc nhö treân, nhöng trong hoäp thoaïi Run ta goõ vaøo  
nhö sau:  
Regsvr32.exe /u <DLLPath>\<DLL name>.dll  
+ Caùch ñaêng kyù COM (.exe) :  
Caùch ñaêng kyù hay gôõ ñaêng kyù cuûa COM Exe cuõng thöïc hieän caùc böôùc töông töï nhö vieäc ñaêng kyù COM Dll. Nhöng trong  
hoäp thoaïi Run ta goõ vaøo nhö sau  
. <Ñöôøng daãn cuûa file exe ñaõ bieân dòch>\<teân file Exe> /regserver trong tröôøng hôïp muoán ñaêng kyù.  
. <Ñöôøng daãn cuûa file exe ñaõ bieân dòch>\<teân file Exe> /unregserver trong tröôøng hôïp muoán gôõ boû ñaêng kyù.  
III. Caùc kieán truùc cuûa COM/DCOM:  
1. ÖÙng duïng Client vaø öùng duïng COM chaïy treân cuøng moät maùy:  
Muïc ñích xaây döïng thaønh phaàn ñoái vôùi moâ hình naøy laø :  
. ÖÙng duïng COM coù theå ñöôïc taùi söû duïng cho nhieàu öùng duïng Client khaùc nhau.  
. Laøm cho chöông trình deã vieát, deã kieåm tra loãi, naâng caáp maø khoâng aûnh höôûng ñeán nhöõng öùng duïng Client ñang chaïy noù.  
2. ÖÙng duïng Client chaïy moät maùy, ÖÙng duïng COM chaïy moät maùy. Nhöng hai maùy naøy cuøng moät maïng local.  
Luùc naøy thaønh phaàn COM ñöôïc goïi laø DCOM. Coù 3 caùch ñeå giao tieáp giöõa öùng duïng Client vaø ÖÙng duïng COM:  
3
GV:Hoà Quang Khaûi  
Taøi lieäu moân hoïc Coâng cuï phaùt trieån öùng duïng  
o
o
o
ActiveX (.exe)  
Duøng MTS (Microsoft Transaction Server) ñeå trieån khai ActiveX DLL töø xa  
RDS (Remote Data Access)  
a. Giôùi thieäu veà ActiveX (.exe)  
Cuõng laø moät öùng duïng COM nhöng ñöôïc xaây döïng cho pheùp chia seû öùng duïng cho nhieàu öùng duïng Client ôû caùc maùy khaùc  
nhau(trong cuøng moät maïng) söû duïng. ActiveX (.Exe) chính laø hình thöùc daïng DCOM.  
Sau khi xaây döïng vaø bieân dòch moät öùng duïng COM daïng ActiveX (.exe) ñeå nhöõng öùng duïng Client coù theå lieân keát vaø söû duïng  
ñöôïc ta phaûi chaïy taäp tin Dcomcnfg.exe cuûa Windows ñeå caáu hình cho öùng duïng COM naøy.  
™ Giôùi thieäu Dcomcnfg.exe ñeå caáu hình öùng duïng COM (ActiveX Exe)  
Trong giao dieän chính cuûa DCOM Config coù 3 tabs chính sau ñaây:  
•
•
•
Applications.  
Default Properties.  
Default Security.  
+ Applications Tab:  
Applications Tab hieån thò nhöõng ñoái töôïng ñaõ ñaêng kyù vaøo trong khoùa registry:  
HKEY_CLASSES_ROOT\AppId\  
Moãi ñoái töôïng ñöôïc hieån thò trong Applications Tab, ñaët tính cuûa moãi öùng duïng coù theå ñöôïc hieån thò baèng caùch choïn ñoái töôïng  
vaø nhaán vaøo nuùt “Properties…” hay nhaán ñuùp vaøo ñoái töôïng caàn xem.  
+ Default Properties Tab:  
Nhöõng giaù trò ñöôïc hieån thò trong Default Properties Tab coù theå ñöôïc tìm thaáy trong registry cuûa Windows ôû vò trí sau :  
HKEY_LOCAL_MACHINE\Software\Microsoft\OLE  
Tieâu ñeà ñaàu tieân trong Default Properties Tab laø moät check box :  
"Enable Distributed COM on this computer"  
khi check box naøy ñöôïc ñaùnh daáu seõ cho pheùp taïo ñoái töôïng DCOM. Ngöôïc laïi khoâng taïo ñöôïc ñoái töôïng DCOM.  
Löu yù: taát caû nhöõng thieát laäp coù hieäu löïc khi ta khôûi ñoäng laïi heä thoáng.  
Thaønh phaàn thöù 2 cuûa Default Properties Tab laø Default Distributed COM Communication Properties thaønh phaàn naøy ñöôïc  
chia laøm 2 muïc sau:  
- Default Authentication Level (Packet Level)  
Muïc naøy coù nhieàu giaù trò choïn nhö sau:  
Name  
None  
Description  
No authentication.  
Connect  
Authentication occurs when a connection  
is made to the server. Connectionless  
protocols do not use this.  
4
GV:Hoà Quang Khaûi  
Taøi lieäu moân hoïc Coâng cuï phaùt trieån öùng duïng  
Call  
The authentication occurs when a RPC call  
is accepted by the server. Connectionless  
protocols do not use this.  
Packet  
Authenticates the data on a per-packet  
basis. All data is authenticated.  
Packet Integrity  
This authenticates that the data has come  
from the client, and checks that the  
data has not been modified.  
Packet Privacy  
Default  
In addition to the checks made by the other  
authentication techniques, this encrypts  
the packet.  
May vary depending upon operating system.  
- Default Impersonation Level  
Name  
Anonymous  
Description  
The client is anonymous. This setting is  
not currently supported by DCOM.  
Identify  
The server can impersonate the client to  
check permissions in the ACL (Access  
Control List) but cannot access system  
objects.  
Impersonate  
Delegate  
The server can impersonate the client and  
access system objects on the client's  
behalf.  
In addition to the Impersonate level, this  
level can impersonate the client on calls  
to other servers. This is not supported in  
the current release of DCOM.  
+ Default Security Tab  
Coù 3 söï löïa choïn ôû Default Security tab. Nhöõng giaù trò cuûa tab naøy ñöôïc löu tröõ trong Windows Registry taïi vò trí:  
HKEY_LOCAL_MACHINE\Software\Microsoft\OLE  
™ Caùch caáu hình Visual Basic DCOM duøng Dcomcnfg.exe  
Vieäc caáu hình ñöôïc thöïc hieän theo nhöõng böôùc sau:  
o
o
o
o
o
Run Dcomcnfg.exe  
Taïi Applications Tab choïn öùng duïng DCOM caàn caáu hình.  
Nhaán ñuùp vaøo öùng duïng DCOM vöøa choïn.  
Choïn Security Tab  
Thöïc hieän nhöõng thay ñoåi sau.  
- CUSTOM ACCESS PERMISSIONS:  
Everyone  
System  
-allow access  
-allow access  
-allow access  
Interactive  
CUSTOM LAUNCH PERMISSIONS:  
Everyone  
System  
-allow launch  
-allow launch  
-allow launch  
Interactive  
5
GV:Hoà Quang Khaûi  
Taøi lieäu moân hoïc Coâng cuï phaùt trieån öùng duïng  
- Choïn Identity Tab, choïn "The Interactive User."  
- Nhaán OK, nhaán OK moät laàn nöõa.  
™ Caùch hieän thöïc moät öùng duïng DCOM daïng ActiveX(.exe) duøng Visual Basic.  
‹ Taïo moät döï aùn DCOM daïng ActiveX(.exe)  
1. Môû Visual Basic taïo moät döï aùn daïng ActiveX EXE  
2. Sau khi taïo xong döï aùn, vaøo menu Project\Project Properties thieát laäp nhö sau:  
- Vieäc ôû Start Mode choïn ActiveX Component seõ cho pheùp ta chaïy öùng duïng server döôùi moâi tröôøng phaùt trieån  
Visual Basic. Neáu khoâng choïn thì öùng duïng server seõ thoaùt ra ngay khi ta chaïy noù trong Visual Basic.  
- Remote Sever ñaùnh daáu vaøo Remote Server Files seõ laøm cho Visual Basic taïo ra VBR(Visual Basic Registry)  
vaø TLB (Type Library) ngay khi ta xaây döïng xong öùng duïng server.  
- Cuoái cuøng Version Compatibility choïn Project Compatibility, sau naøy ta seõ ñoåi sang löïa choïn Project  
Compatibility.  
3. Bieân dòch öùng duïng server  
‹ Tröôùc khi phaân boá öùng duïng, ta môû laïi öùng duïng server, vaøo project properties cuûa öùng duïng server thieát laäp laiï  
Version Compatibility choïn Binary Compatibility, taïi text box duøng browser daãn tôùi taäp tin .exe cuûa öùng duïng server.  
Save öùng duïng laïi, bieân dòch laïi öùng duïng server.  
‹ Trieån khai öùng duïng server ñeå öùng duïng Client coù theå giao tieáp ñöôïc.  
Ñeå trieån khai öùng duïng phaân boá vöøa taïo ra ta phaûi söû duïng coâng cuï “Package and Deployment Wizard” cuûa Visual  
Basic Tools baèng caùch choïn Start\Program\Microsoft Visual Basic 6.0\Microsoft Visual Basic Tools.  
Tieáp theo thöïc hieän tuaàn töï theo caùc böôùc sau:  
1. Duøng Browser choïn döï aùn server môùi vöøa taïo, nhaán vaøo nuùt Package  
2. Choïn Dependency File trong Package Type.  
3. Nhaán Next ñeå chuyeån qua böôùc tieáp theo.  
4. Nhaán Next tieáp.  
5. Choïn No khi ñöôïc hoûi veà hoã trôï Remote Automation  
6. Nhaán Next treân maøn hình Included Files.  
7. Nhaán Next treân maøn hình Cab Information.  
8. Nhaán Next treân Install Locations.  
9. Nhaán Finish.  
‹ Taïo chöông trình Setup cho Client.  
1. Khôûi ñoäng chöông trình Package and Deployment moät laàn nöõa.  
2. Nhaán vaøo nuùt Package  
3. Choïn Standard Setup Package trong danh saùch Package Type.  
4. Choïn moät folder maø noù seõ ñöôïc truy caäp qua maïng.  
5. Trong maøn hình Included Files, Boû ñaùnh daáu khoâng choïn döï aùn server(.exe).  
6
GV:Hoà Quang Khaûi  
Taøi lieäu moân hoïc Coâng cuï phaùt trieån öùng duïng  
6. Nhaán vaøo nuùt Add, Choïn VBR ôû combo box file type, choïn file .vbr  
7. Nhaán Next.  
8. ÔÛ maøn hình Remote Servers, goõ vaøo Net Address cuûa Server.  
9. Nhaán choïn Next ñeán heát. Nhaán Finish.  
‹ Caøi ñaët treân maùy chaïy öùng duïng DCOM vaø treân maùy chaïy öùng duïng Client.  
+ Chaïy chöông trình Setup.exe ñöôïc taïo bôûi Package and Deployment Wizard cho öùng duïng server treân maùy chaïy  
öùng duïng COM  
+ Chaïy chöông trình Setup.exe exe ñöôïc taïo bôûi Package and Deployment Wizard cho öùng duïng Client treân maùy  
chaïy öùng duïng Client.  
b. Duøng MTS ñeå trieån khai ActiveX DLL töø xa  
Ñoái vôùi Windows NT thì MTS ñöôïc taùch rieâng ra thaønh moät öùng duïng rieâng bieät. Muoán söû duïng MTS thì phaûi caøi ñaët  
Option Pack 4 cho Windows NT. Coøn ñoái vôùi Windows 2000 thì MTS ñöôïc tích hôïp vaøo IIS 5.0, ñöa COM vaø MTS tích hôïp laïi  
trong COM+ Applications.  
™ Giôùi thieäu MTS (Microsoft Transaction Server)  
MTS laø moät dòch vuï treân Windows gioáng nhö caùc dòch vuï khaùc nhö IIS, File hay Print …, coù nghóa laø ta coù theå chaïy (start)  
hoaëc ngöng chaïy (stop) chuùng khi caàn vaø MTS chaïy background ñeå phuïc vuï cho caùc öùng duïng caàn ñeán noù  
Trong Windows NT 4.0, MTS ñöôïc coi nhö laø moät phaàn phuï (add-on), ñöôïc caøi thoâng qua NT4 Option Pack. Coøn trong  
Windows 2000 noù trôû thaønh moät phaàn maëc ñònh cuûa chính heä ñieàu haønh.  
Ngoaøi chöùc naêng chính laø quaûn lyù giao dòch, MTS coøn quaûn lyù nhieàu thöù khaùc “MTS quaûn lyù caùch maø öùng duïng söû duïng caùc  
thaønh phaàn” hay noùi caùch khaùc laø MTS quaûn lyù caùc thaønh phaàn giuùp cho caùc öùng duïng söû duïng caùc thaønh phaàn ñoù ñöôïc hieäu  
quaû hôn.  
Caùc böôùc thoâng thöôøng ñeå söû duïng moät thaønh phaàn:  
1. Taïo moät instance cuûa thaønh phaàn.  
2. Khôûi ñoäng giaù trò cuûa caùc thuoäc tính cuûa thaønh phaàn.  
3. Söû duïng thaønh phaàn.  
4. Giaûi phoùng thaønh phaàn ra khoûi boä nhôù.  
Thoâng thöôøng, vieäc khôûi taïo vaø giaûi phoùng thaønh phaàn naèm ôû ñaàu vaø ôû cuoái moät thuû tuïc hay chöông trình. Neáu söû duïng toát hôn  
thì khôûi taïo thaønh phaàn ngay khi caàn ñeán vaø giaûi phoùng sau khi chaéc chaén khoâng coøn caàn duøng ñeán thaønh phaàn ñoù nöõa. Tuy  
nhieân trong khoaûng thôøi gian söû duïng thaønh phaàn ñoù thöôøng coù raát nhieàu thao taùc khoâng söû duïng thaønh phaàn hoaëc khoâng coù  
thao taùc naøo söû duïng ñeán thaønh phaàn, nhöng vaãn phaûi giöõ thaønh phaàn ñoù trong boä nhôù chôø ñöôïc söû duïng sau ôû caùc thao taùc khaùc  
7
GV:Hoà Quang Khaûi  
Taøi lieäu moân hoïc Coâng cuï phaùt trieån öùng duïng  
maø khoâng theå giaûi phoùng thaønh phaàn vì khi giaûi phoùng thì caùc traïng thaùi beân trong cuûa thaønh phaàn cuõng bò xoùa ñi. Ñieàu ñoù taïo  
neân moät söï laõng phí raát lôùn taøi nguyeân cuûa heä thoáng.  
MTS giaûi quyeát vaán ñeà treân baèng caùch: khi moät öùng duïng caàn moät thaønh phaàn thì MTS seõ cung caáp 1 instance cuûa  
thaønh phaàn ñoù cho öùng duïng. Neáu moät öùng duïng thöù 2 muoán söû duïng thaønh phaàn ñoù, trong khi öùng duïng 1 khoâng thöïc söï söû  
duïng noù (tuy nhieân öùng duïng thöù 1 vaãn chöa giaûi phoùng thaønh phaàn) thì MTS seõ ñöa instance maø öùng duïng thöù 1 ñang giöõ cho  
öùng duïng thöù 2 söû duïng. Neáu öùng duïng thöù 1 ñoät nhieân muoán söû duïng tieáp thaønh phaàn thì MTS seõ tìm trong caùc instance cuûa  
thaønh phaàn ñoù coù instance naøo khoâng thöïc söï ñöôïc söû duïng bôûi öùng duïng khaùc khoâng. Neáu coù thì MTS seõ ñöa instance ñoù cho  
öùng duïng 1 söû duïng. Neáu taát caû caùc instance cuûa thaønh phaàn ñoù ñeàu ñang ñöôïc söû duïng thì MTS seõ taïo moät instance môùi vaø  
giao noù cho öùng duïng thöù 1 söû duïng.  
Quaûn lyù giao dòch trong MTS: MTS cung caáp moâi tröôøng giao dòch cho caùc thaønh phaàn. Caùc thaønh phaàn trong cuøng moät moâi  
tröôøng seõ thöïc hieän moät giao dòch, coù nghóa laø neáu toaøn boä caùc thaønh phaàn trong moâi tröôøng cuøng thöïc thi thaønh coâng nhieäm vuï  
cuûa mình thì giao dòch coi nhö laø thaønh coâng. Neáu moät trong caùc thaønh phaàn vì lyù do naøo ñoù khoâng theå thöïc thi nhieäm vuï cuûa  
mình thì toaøn boä caùc coâng vieäc cuûa caùc thaønh phaàn khaùc seõ bò huûy boû vaø heä thoáng seõ trôû laïi traïng thaùi ban ñaàu, traïng thaùi tröôùc  
khi giao dòch ñöôïc thöïc hieän.  
™ Caùc böôùc ñeå trieån khai moät thaønh phaàn töø xa trong Windows 2000 duøng MTS :  
‹ Caùc böôùc thöïc hieän treân maùy chaïy thaønh phaàn COM DLL muoán trieån khai töø xa.  
1. Taïo moät thaønh phaàn COM daïng ActiveX DLL  
2. Nhaán Start \ Settings \ Control Panel  
3. Trong cöûa soå Control Panel môû folder Administrative Tools  
4. Môû Component Services  
5. Trong console tree cuûa Component Services, Nhaán ñuùp vaøo Computers  
6. Nhaán ñuùp vaøo My Computers, nhaán ñuùp vaøo COM+ Applications  
7. Nhaán phaûi chuoät vaøo COM+ Applications, troû tôùi New roài nhaán vaøo Application.  
8. Xuaát hieän hoäp thoaïi COM Application Install Wizard, nhaán Next.  
9. Taïi ñaây seõ coù hai löïa choïn. Choïn Create an emty Application  
- Install pre-built application(s) Neáu muoán xaây döïng laïi öùng duïng maø ta ñaõ taïo tröôùc ñoù.  
- Create an emty Application : Neáu taïo moät öùng duïng troáng roài import thaønh phaàn COM (.dll) vaøo.  
8
GV:Hoà Quang Khaûi  
Taøi lieäu moân hoïc Coâng cuï phaùt trieån öùng duïng  
10. Goõ vaøo vaøo moät caùi teân naøo ñoù cho öùng duïng vöøa taïo, nhaán vaøo Next  
11. Tieáp theo xuaát hieän hoäp thoaïi coù hai löïa choïn, ta löïa choïn giaù trò default cuûa noù. Nhaán tieáp vaøo Next.  
12. Nhaán Finish.  
13. Nhaán ñuùp vaøo öùng duïng Example1 vöøa taïo. nhaán ñuùp vaøo Components  
14. Nhaán phaûi chuoät vaøo Components, troû tôùi New, nhaán vaøo Component.  
9
GV:Hoà Quang Khaûi  
Taøi lieäu moân hoïc Coâng cuï phaùt trieån öùng duïng  
15. Nhaán vaøo Next, Hoäp thoaïi Import or Install a Component xuaát hieän, choïn Install new Component(s).  
16. Daãn ñeán choã löu tröõ file .dll, nhaán nuùt Open  
17. Nhaán vaøo nuùt Next. Roài nhaán vaøo Finish ñeå keát thuùc.  
Ñeå cho pheùp öùng duïng Client truy caäp vaøo thaønh phaàn chaïy döôùi MTS, ta phaûi ñaêng kyù vaøo Registry cuûa maùy Client ñeå baùo  
vôùi noù raèng thaønh phaàn töø xa.  
Ñeå Client nhaän ra thaønh phaàn MTS phaân phaùt töø xa, ta laøm nhö sau:  
1. Nhaán phaûi chuoät vaøo Example1 vöøa taïo. Nhaán vaøo Export…  
2. Duøng nuùt Browse ñeå choïn moät thö muïc roãng ñeå export goùi. Cho vaøo teân taäp tin, nhaán Save.  
3. Nhaán Next. Sau moät luùc, hieån thò ra moät hoïp thoaïi thoâng baùo sau:  
10  
GV:Hoà Quang Khaûi  
Taøi lieäu moân hoïc Coâng cuï phaùt trieån öùng duïng  
4. Nhaán vaøo Finish ñeå hoaøn taát.  
‹ Caùc böôùc thöïc hieän treân maùy chaïy öùng duïng Client.  
1. Cheùp thö muïc maø ta vöøa Export ñöôïc ôû treân vaøo maùy Client  
2. Chaïy taäp tin .MSI trong thö muïc naøy ñeå ñaêng kyù vaøo maùy Client.  
Muoán gôõ boû ñaêng kyù naøy ra khoûi maùy Client ta coù theå vaøo Control Panel\Add/Remove Programs ñeå gôõ boû ra.  
c. Duøng RDS (Remote Data Access): Kyõ thuaät naøy khoâng neân söû duïng ñoái vôùi moâ hình naøy vì toác ñoä chaäm, kyõ thuaät naøy ñöôïc  
duøng cho tröôøng hôïp maùy chaïy öùng duïng vaø maùy chaïy öùng duïng COM khoâng cuøng maïng. Kyõ thuaät naøy seõ ñöôïc giôùi thieäu sau.  
Keát luaän: Toùm laïi ñoái vôùi moâ hình kieán truùc maùy chaïy öùng duïng Client vaø maùy chaïy öùng duïng COM cuøng moät maïng local thì  
ta choïn giaûi phaùp “Duøng MTS (Microsoft Transaction Server) ñeå trieån khai ActiveX DLL töø xa”.  
Öu ñieåm cuûa giaûi phaùp naøy sau:  
o
So vôùi daïng ActiveX (.exe) thì daïng naøy quaûn lyù caùc theå hieän thaønh phaàn vaø quaûn lyù giao dòch toát hôn nhieàu nhôø  
söï hoã trôï cuûa MTS.  
o
o
Veà vaán ñeà quaûn lyù security thì daïng naøy cuõng hoã trôï toát hôn so vôùi ActiveX (.exe).  
Coøn so vôùi RDS thì kyõ thuaät naøy seõ laøm cho öùng duïng chaïy nhanh hôn. Vì kyõ thuaät RDS ñöôïc duøng hoã trôï cho  
vieäc truy caäp töø xa ñoái vôùi nhöõng maùy khoâng cuøng maïng. Ngoaøi ra kyõ thuaät naøy coøn hoã trôï cho nhöõng öùng duïng  
WEB.  
Khuyeát ñieåm:  
oMaùy chaïy öùng duïng COM cuûa giaûi phaùp naøy chæ coù theå chaïy treân heä ñieàu haønh Windows NT, hoaëc Windows 2000.  
Coøn giaûi phaùp duøng ActiveX(.exe) vaø giaûi phaùp duøng RDS, maùy chaïy öùng duïng COM coù theå chaïy treân neàn  
Windows 98, Windows NT, Windows 2000.  
oSo vôùi öùng duïng duøng giaûi phaùp duøng ActiveX(.exe) thì öùng duïng duøng giaûi phaùp naøy seõ chaïy chaäm hôn vì coù keát  
hôïp vôùi MTS.  
3. Maùy chaïy öùng duïng Client vaø maùy chaïy öùng duïng COM khaùc maùy, 2 maùy naøy khoâng cuøng maïng.  
Ñeå hieän thöïc vieäc giao tieáp giöõa öùng duïng Client vaø öùng duïng COM ñoái vôùi moâ hình naøy thì phaûi duøng RDS(Remote  
Data Access).  
™ Giôùi thieäu veà RDS:  
RDS laø moät moâ hình laäp trình cho pheùp öùng duïng Client coù theå taïo moät theå hieän cuûa moät öùng duïng COM ñaët töø xa thoâng  
qua maïng Internet baèng caùc giao thöùc http, https. RDS hoã trôï maïnh cho nhöõng öùng duïng Web, cho pheùp nhöõng öùng duïng Web  
vieát nhöõng ñoaïn Script thao taùc döõ lieäu treân Server vaø laáy döõ lieäu veà thoâng qua thaønh phaàn RDSServer.DataFactory,  
RDS.DataControl.  
löu yù: ñeå duøng RDS ñeå truy caäp DCOM döôùi ñaây thì ta phaûi duøng MTS trieån khai thaønh phaàn COM ñoù thì ta môùi coù theå  
duøng Set object = DataSpace.CreateObject("ProgId", "Myserver") Coøn neáu duøng trong daïng COM thì phaûi khai baùo vôùi  
hình thöùc In-process.  
Protocol  
Syntax  
Set object = DataSpace.CreateObject("ProgId", "http://awebsrvr")  
HTTP  
11  
GV:Hoà Quang Khaûi  
Taøi lieäu moân hoïc Coâng cuï phaùt trieån öùng duïng  
Set object = DataSpace.CreateObject("ProgId", "https://awebsrvr")  
Set object = DataSpace.CreateObject("ProgId", "computername")  
Set object = DataSpace.CreateObject("ProgId", "")  
HTTPS  
DCOM  
In-process  
Vì RDS cho pheùp öùng duïng Client coù theå thao taùc döõ lieäu thoâng qua maïng Internet neân vaán ñeà baûo maät ñöôøng truyeàn laø  
vaán ñeà quan troïng ñeå traùnh vieäc thaát laïc döõ lieäu hay vieäc ñaùnh caép döõ lieäu thì ngöôøi laáy ñöôïc nhöõng döõ lieäu naøy cuõng khoâng  
theå xem nhöõng döõ lieäu naøy ñöôïc. Vì vaäy RDS coù hoã trôï vieäc taïo ñoái töôïng qua maïng Internet duøng giao thöùc https. Giao thöùc  
naøy ñöôïc söû duïng vôùi coâng ngheä baûo maät ñöôøng truyeàn SSL(Secure Sockets Layer).  
‹ Giôùi thieäu SSL(Secure Socket Layer)  
Treân Web, SSL laø giao thöùc thoâng duïng cho vieäc giao tieáp coù maõ hoùa giöõa browser vaø server. Söï keát hôïp giöõa moät  
giaûi thuaät maõ/giaûi maõ, moät haøm giaûn löôïc thoâng ñieäp vaø moät caùch ñònh danh ñöôïc goïi laø moät boä maät maõ(cipher suite). SSL coù  
theå hoã trôï nhieàu boä maät maõ.  
Ñeå söû duïng SSL, Web Server caàn phaûi coù baèng chöùng nhaän(Certificate) do moät nhaø cung caáp chöùng nhaän (CA –  
Certificate Authority) nhö Verisign caáp. Ngoaøi ra coøn coù theå söû duïng baèng chöùng nhaän do Certificate Server cuûa Windows NT  
Server hay cuûa Windows 2000 server caáp (cuõng gioáng nhö cuûa CA nhöng khoâng coù giaù trò quoác teá).  
+ Moät quaù trình SSL :  
Muïc ñích cuûa moät quaù trình SSL laø ñònh danh server( hoaëc coù theå ñònh danh client) vaø cuoái cuøng coù ñöôïc moät  
khoùa session cho vieäc giao tieáp giöõa client vaø server trong moät phieân laøm vieäc (session).  
+ Caùc böôùc cuûa moät quaù trình SSL:  
1. Client môû moät caàu noái ñeán server vaø gôûi thoâng ñieäp “ClientHello”. Thoâng ñieäp coøn keøm theo moät soá thoâng  
tin nhö version cuûa SSL, caùc boä maät maõ vaø giaûi thuaät neùn döõ lieäu maø client hoã trôï.  
2. Server traû lôøi baèng thoâng ñieäp “Server Hello”. Thoâng ñieäp keøm theo thoâng tin veà boä maät maõ vaø giaûi thuaät  
neùn maø server choïn cuøng vôùi moät SessionID töông öùng cuûa Client. Neáu caùc boä maõ ñöôïc hoã trôï bôûi client vaø  
server khoâng hôïp nhau thì server seõ gôûi moät thoâng baùo “handshake failure” vaø chaám döùc session.  
3. Server gôûi “baèng chöùng nhaän” cuûa noù ñeå ñònh danh noù ñoái vôùi Client.  
4. Server yeâu caàu “baèng chöùng nhaän” cuûa client. Ñieàu naøy khoâng baét buoäc vaø ít khi xaûy ra.  
5. Neáu client coù “baèng chöùng nhaän” thì noù seõ gôûi cho server. Neáu khoâng, noù seõ gôûi moät thoâng baùo khoâng coù  
baèng.  
6. Client gôûi thoâng ñieäp “trao ñoåi khoùa” cuøng vôùi moät bao ñieän töû chöùa khoùa session do client taïo ngaãu nhieân  
vaø ñöôïc maõ hoùa baèng khoùa public cuûa server ñöôïc laáy töø baèng chöùng nhaän cuûa server.  
7. Caû Client vaø Server cuøng gôûi thoâng baùo “ChangeCipherSpec” ñeå xaùc nhaän caû hai ñaõ saün saøng giao tieáp.  
8. Caû hai cuøng gôûi thoâng baùo “chaám döùt” phaàn thuû tuïc vaø baét ñaàu giao tieáp coù baûo maät baèng khoùa session ôû  
treân. Ngoaøi ra thoâng ñieäp cuoái cuøng naøy coøn coù chöùa hash cuûa toaøn boä quaù trình laøm thuû tuïc treân ñeå caû hai  
cuøng kieåm tra xem quaù trình coù bò truïc traëc gì khoâng.  
‹ Caáu hình RDS trong Windows 2000(Maùy chaïy öùng duïng COM)  
Coù hai söï caáu hình lieân quan ñeán Remote Data Access: RDS security vaø IIS security.  
+ RDS security:  
Ñeå öùng duïng Client coù theå duøng RDS ñeå giao tieáp vôùi öùng duïng COM thì treân thö muïc aûo(wwwroot ñoái vôùi windows  
2000) cuûa maùy chaïy öùng duïng COM phaûi coù thö muïc MSADC, trong ñoù coù taäp tin msadcs.dll.  
Ngoaøi ra caàn phaûi khai baùo baèng tay trong registry cuûa maùy chaïy öùng duïng COM (môû ra baèng caùch chaïy taäp tin  
regedit.exe) ProgId cuûa öùng duïng COM  
(teân döï aùn.teân nhöõng class) taïi vò trí sau:  
\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W3SVC\ Parameters\ADCLaunch\  
12  
GV:Hoà Quang Khaûi  
Taøi lieäu moân hoïc Coâng cuï phaùt trieån öùng duïng  
+ IIS security:  
Ñeå thieát laäp IIS security thöïc hieän laàn löôïc caùc böôùc sau:  
1. Môû Control Panel, môû Administrative Tools. môû Internet Services Manager.  
2. Nhaán ñuùp leân Default Web Site.  
3. Nhaán phaûi chuoät treân thö muïc aûo MSADC, nhaán Properties.  
4. Treân Directory Security tab, choã IP Address and Domain Name Restrictions, nhaán Edit.  
- Neáu muoán taát caû caùc Client coù theå giao tieáp vôùi öùng duïng choïn Granted Access.  
- Neáu muoán chæ cho pheùp moät soá Client naøo ñoù coù theå truy caäp ñeán öùng duïng, choïn Client roài Add vaøo danh saùch.  
‹ Ngoaøi ra ta coù theå duøng RDS ñeå truy caäp ñeán nhöõng öùng duïng COM ñöôïc khai trieån töø xa duøng MTS thoâng qua  
Internet. Duøng RDS ñeå truy caäp nhöõng öùng duïng DCOM daïng ActiveX EXE.  
13  
GV:Hoà Quang Khaûi  
pdf 13 trang baolam 21780 Free
Bạn đang xem tài liệu "Bài giảng Kỹ thuật về các mô hình lập trình ứng dụng, các kiến trúc COM DCOM và cách hiện thực ứng dụng dựa trên các kiến trúc này", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

File đính kèm:

  • pdfbai_giang_ky_thuat_ve_cac_mo_hinh_lap_trinh_ung_dung_cac_kie.pdf