|
Microsoft的COM &DCOM(簡介)
一:COM是一種定義對象服務(wù)器如何與對象客戶進(jìn)行交互的協(xié)議。對象服務(wù)器(object server)是實現(xiàn)COM類的模塊。對象客戶(object consumer)是使用COM對象的模塊。
DCOM擴(kuò)展了COM協(xié)議,使得對象服務(wù)器可以位于一臺與客戶不同的計算機(jī)。 通過RPC向?qū)ο蠓?wù)器調(diào)用。(CORBA也是分布對象協(xié)議)
COM通過SSPI(Security Support Provider Interface,安全支持提供者接口)來管理對象的安全性。
二:應(yīng)用服務(wù)器(中間層)應(yīng)具備的特性:
n 遠(yuǎn)層啟動,監(jiān)視和中止的能力。
n 可擴(kuò)展的能力。
n 易于配置的能力。
n 安全失效的能力。
遠(yuǎn)層啟動功能:如果用戶想在遠(yuǎn)程計算機(jī)上創(chuàng)建一個COM對象,遠(yuǎn)程機(jī)上的DCOM服務(wù)控制管理器(Service Control Manager ,SCM)會自動啟動COM服務(wù)器并使COM對象可用。具體信息可在開始菜單中運行DCOMCNFG命令。
易于配置的能力:在Windows資源管理器中右擊一個COM DLL或EXE就可激活注冊或撤銷注冊。
可擴(kuò)展的能力:可擴(kuò)展的第一等級和第二等級。DCOM提供的兩種負(fù)載均衡。1),靜態(tài)負(fù)載均衡(指定應(yīng)用服務(wù)器的運行機(jī)器),可在DCOMCNFG中的應(yīng)用程序的屬性中指定。2):動態(tài)負(fù)載均衡,由調(diào)度程序進(jìn)行分配。
Delphi提供的相關(guān)技術(shù):
u COM / DCOM / COM+企業(yè)對象。
u CORBA企業(yè)對象。
u XML / HTML
u CGI / SAPI/NSAPI
u ASP
u Active X (Active Form)
u ADO / OLE DB
u BDE / IDAPI SQL Links
u MTS對象
u MIDAS服務(wù)器
u CORBA服務(wù)器。
相關(guān)組件在1) File菜單\new\ Multitier和ActiveX頁中。
2)在組件面板中的ADO, Midas, Internet Express, ActiveX等頁中。
Corba簡介
1:什么是corba(common object request broker architecture)?
Corba是由object manangement group(OMG)定義的分布式對象標(biāo)準(zhǔn)結(jié)構(gòu)。語言中立,使用了面向?qū)ο蟮脑O(shè)計結(jié)構(gòu),允許軟件對象在不同的操作系統(tǒng)平臺和應(yīng)用程序中重復(fù)使用。
如果想實現(xiàn)一下功能,corba是較好的解決方案:
l 應(yīng)用系統(tǒng)要整合異質(zhì)平臺和操作系統(tǒng)。
l 應(yīng)用程序服務(wù)器必須執(zhí)行在linux/unix機(jī)器中。
l 應(yīng)用系統(tǒng)必須執(zhí)行關(guān)鍵性任務(wù),具備安全強(qiáng)固的容錯能力,必須穩(wěn)定,有效率。
l 想開發(fā)使用Web對象的Internet/Intranet解決方案。
l 應(yīng)用系統(tǒng)未來想和Java整合。
2:corba的結(jié)構(gòu)
corba對象是一個提供特定服務(wù)的組件,它通過定義一組輸出接口來聲明可以提供的服務(wù)。在這個輸出接口中,corba對象定義了客戶端可以調(diào)用的方法和存取屬性??蛻舳酥灰该魈峁┓?wù)的corba對象的名稱以及要調(diào)用的方法或是要
存取的屬性就可以通過ORB得到corba對象提供服務(wù)。
術(shù)語介紹:
ORB: object request broker.聯(lián)結(jié)客戶端和中介的corb對象。
Stub對象: 運行在客戶端的corba對象的復(fù)制品,在客戶端調(diào)用的是Stub對象,然后Stub對象通過ORB遠(yuǎn)程調(diào)用
CORBA對象,Stub對象用Marshaling(對象指針轉(zhuǎn)換,使對方程序能夠識別)自動為你傳遞參數(shù)和數(shù)據(jù)。
Skeleton對象:運行在服務(wù)器端的對象,將傳遞到服務(wù)器的數(shù)據(jù)還原成服務(wù)器端使用格式。然后根據(jù)自動根據(jù)客戶端要求調(diào)用CORBA對象。
調(diào)用方式:
u 靜態(tài)調(diào)用:客戶端程序通過Stub對象將數(shù)據(jù)傳遞到corba對象,corba對象執(zhí)行完畢后,通過Skeleton對象
把結(jié)果再Marshaling回客戶端的Stub對象,經(jīng)由Stub對象回復(fù)數(shù)據(jù)格式后,再回傳給客戶端的應(yīng)用程序。
動態(tài)調(diào)用(Dynamic Interface Invocation DII):客戶端不需要先有stub對象,也不需要知道遠(yuǎn)程corba對象提供的方法和屬性,corba程序可以在執(zhí)行時取得這些信息,然后動態(tài)的調(diào)用corba對象。
DII比靜態(tài)調(diào)用有更大的彈性,但編程較難,且執(zhí)行效率不如靜態(tài)調(diào)用。
3:corba提供的核心服務(wù)
n Event Service: 以“提供者—消費者(Supplier_consumer)“模型通過一個事件信道然提供者對象以異步的方式傳遞事件給消費者對象。
n Naming Service: 允許程序員使用階層式的方式為企業(yè)對象命名,然后在程序中可以使用這些有意義的名稱來存取這些對象。
n Transaction Service:提供分布式應(yīng)用系統(tǒng)能夠執(zhí)行關(guān)鍵任務(wù),允許企業(yè)對象在異質(zhì)平臺和數(shù)據(jù)庫之間進(jìn)行數(shù)據(jù)的Two-Phase Commit的交易管理。
n Security Service :包括存取控制(Access control),稽查控制(Auding),認(rèn)證控制(Authentication),存取政策控制(Plicy Control).
MIDAS介紹
一:MIDAS概念
MIDAS (Multi-tier Distributed Application Services Suite (多層分布式應(yīng)用程序服務(wù)器)) 是開發(fā)多層應(yīng)用系統(tǒng)使用的中介透明引擎。通過MIDAS,程序員可以通過相同的組件存取不同的后端應(yīng)用程序服務(wù)器(如,COM/DCOM應(yīng)用程序服務(wù)器,CORBA應(yīng)用程序服務(wù)器,MTS中介軟件),MIDAS也提供容錯能力,負(fù)載平衡以及高執(zhí)行效率的能力。
中介者和功能:
u 遠(yuǎn)程數(shù)據(jù)中介者(Remote Data Broker):提供客戶端存取遠(yuǎn)程數(shù)據(jù)的能力。
u Constraint中介者:允許客戶端應(yīng)用程序下載遠(yuǎn)程數(shù)據(jù)庫對數(shù)據(jù)設(shè)定的constraint。讓數(shù)據(jù)在客戶端被數(shù)據(jù)庫的constraint檢查。減少網(wǎng)絡(luò)流量。
u 企業(yè)對象中介者(Business Object Broker):允許應(yīng)用系統(tǒng)開發(fā)執(zhí)行企業(yè)邏輯的企業(yè)對象。
u 容錯能力:當(dāng)一個客戶端聯(lián)結(jié)的應(yīng)用程序服務(wù)器發(fā)生錯誤時,企業(yè)對象中介者就會在網(wǎng)絡(luò)中尋找另一個提供相同功能的應(yīng)用程序服務(wù)器,將客戶端聯(lián)結(jié)到該應(yīng)用程序服務(wù)器上,客戶并不知道發(fā)生的一切。這時必須使用無狀態(tài)對象。
u 負(fù)載平衡:當(dāng)客戶端多于服務(wù)器數(shù)目時,企業(yè)對象中介者自動平衡服務(wù)器的連接數(shù)目。
二:數(shù)據(jù)處理
應(yīng)用程序服務(wù)器從數(shù)據(jù)庫取出客戶端想要的數(shù)據(jù),進(jìn)行數(shù)據(jù)封包(data packet),通過Iappserver接口以OleVariant的形式傳遞給客戶端,到達(dá)后,通過客戶端的MIDASServer整理,加入到ClientDataSet的數(shù)據(jù)快儲內(nèi)存中,這時,客戶端于應(yīng)用程序服務(wù)器的連接斷開。
在客戶端應(yīng)用了TclientDataSet的ApplyUpdates方法要求更新時,MIDASServer把更新之前的數(shù)據(jù)封裝在數(shù)據(jù)封包中,然后再封裝被更新的數(shù)據(jù)(只含被改變的),當(dāng)應(yīng)用程序服務(wù)器收到這些Delta數(shù)據(jù)封包之后,Resolver先將其解析,
然后對于每一筆更新的數(shù)據(jù),Resolver首先根據(jù)第一筆封裝的原始數(shù)據(jù)到數(shù)據(jù)庫中尋找紀(jì)錄,如果紀(jì)錄已經(jīng)被其他用戶改變了,MIDAS會把原來客戶端傳來的數(shù)據(jù)和數(shù)據(jù)庫中最新的這筆數(shù)據(jù)一塊傳回客戶端,要求用戶決定如何處理。
如果數(shù)據(jù)更新失敗,則MIDAS會把發(fā)生問題的數(shù)據(jù)封裝在數(shù)據(jù)封包之中傳回客戶端
|