DANH MỤC TÀI LIỆU
Kỹ thuật lập trình Dcom/Com
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 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.
o 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 Thaønh phaàn COM ñöôïc söû duïng döôùi daïng maõ nhò phaân.
o 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.
o Thaønh phaàn COM trong suoát veà vò trí.
c. Giao dieän (Interface)
GV:Hoà Quang Khaûi 1
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ï.
GV:Hoà Quang Khaûi 2
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 Nhaán vaøo nuùt start cuûa Windows
o Treân Start menu, click Run.
o 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:
GV:Hoà Quang Khaûi 3
Taøi lieäu moân hoïc Coâng cuï phaùt trieån öùng duïng
o ActiveX (.exe)
o Duøng MTS (Microsoft Transaction Server) ñeå trieån khai ActiveX DLL töø xa
o 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 Description
None No authentication.
Connect Authentication occurs when a connection
is made to the server. Connectionless
protocols do not use this.
GV:Hoà Quang Khaûi 4
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 In addition to the checks made by the other
authentication techniques, this encrypts
the packet.
Default May vary depending upon operating system.
- Default Impersonation Level
Name Description
Anonymous 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 The server can impersonate the client and
access system objects on the client's
behalf.
Delegate 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 Run Dcomcnfg.exe
o Taïi Applications Tab choïn öùng duïng DCOM caàn caáu hình.
o Nhaán ñuùp vaøo öùng duïng DCOM vöøa choïn.
o Choïn Security Tab
o Thöïc hieän nhöõng thay ñoåi sau.
- CUSTOM ACCESS PERMISSIONS:
Everyone -allow access
System -allow access
Interactive -allow access
CUSTOM LAUNCH PERMISSIONS:
Everyone -allow launch
System -allow launch
Interactive -allow launch
GV:Hoà Quang Khaûi 5
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 laïi
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).
GV:Hoà Quang Khaûi 6
thông tin tài liệu
tổng quan về kỹ thuật lập trình với các kiến trúc dcom/com
Mở rộng để xem thêm
từ khóa liên quan
xem nhiều trong tuần
yêu cầu tài liệu
Giúp bạn tìm tài liệu chưa có

LÝ THUYẾT TOÁN


×