Mục lục:
I: GIỚI THIỆU MÔ HÌNH ỨNG DỤNG
1. Giới thiệu mô hình client/server
2. Mô hình hai mức (2 – tier) client/server:
3. Mô hình ba mức (3 – tier) client/server:
II. Gioi thiệu sơ lược về cổng COM
III. các kiến thức COM/DCOM:
1. ứng dụng Client và ứng dụng COM chạy trên cùng 1 máy
2. ứng dụng Client chaỵ 1 máy
3. Máy chạy ứng dụng Client và máy chạy ứng dụng COM khác máy, 2 máy này không cùng mạng.
kết luận
14 trang |
Chia sẻ: tlsuongmuoi | Lượt xem: 2008 | Lượt tải: 0
Bạn đang xem nội dung tài liệu Ebook Lập tình công COM, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
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 \.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 \.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
. \ /regserver trong tröôøng hôïp muoán ñaêng kyù.
. \ /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
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
GV:Hoà Quang Khaûi 7
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.
GV:Hoà Quang Khaûi 8
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.
GV:Hoà Quang Khaûi 9
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:
GV:Hoà Quang Khaûi 10
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 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).
o 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:
o Maù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.
o So 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
HTTP Set object = DataSpace.CreateObject("ProgId", "")
GV:Hoà Quang Khaûi 11
Taøi lieäu moân hoïc Coâng cuï phaùt trieån öùng duïng
HTTPS Set object = DataSpace.CreateObject("ProgId", "https://awebsrvr")
DCOM Set object = DataSpace.CreateObject("ProgId", "computername")
In-process Set object = DataSpace.CreateObject("ProgId", "")
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\
GV:Hoà Quang Khaûi 12
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.
GV:Hoà Quang Khaûi 13
Các file đính kèm theo tài liệu này:
- Lập tình công COM.pdf