http://delphi.ktop.com.tw/board.php?cid=30&fid=68&tid=43706
1 com物件定義?可否同時存在客戶端與應用程式伺服端?
2 com+物件定義?
3 Tclientdataset與Tdatasetprovider是com物件?
4 還有那些物件算com或com+物件?
1.COM (Component Object Model)簡單來說只是一組MS用來作為不同程式間溝通的規範,想想看,一個用Delphi寫的Class只能給不同的Delpi程式間使用,並不能在不同程式語言間使用(如C++、VB),反之如果你寫的程式符合COM規格,就能給不同的程式語言呼叫如C++、VB
2.COM+ 是更先進的COM的規範,觀看MS技術的演進歷史COM規範只能給本機間的程式呼叫,因而推出DCOM(Distrubted COM)規格,讓本機可以呼叫其他機器的COM,後來為了符合企業應用,在NT4.0時代推出MTS(架在Server上作COM之間的交易控制的服務),後來合併COM/MTS,推出COM+,基本上你寫的程式只要符合COM+規範,就能夠享用到種種的元件服務如交易、安全、負載平衡等等
3 Tclientdataset與Tdatasetprovider是Delphi的VCL Component不是COM物件,
基本上你要叫用COM物件是用Interface 或Olevariant 變數使用,不可能用Class變數使用(建立COM物件用iXXX := CreateComObject(...)而不是建立一般Class的方式如aObj := TClientDataSet.Create(nil)),當然Delphi也會寫一些VCL Component將某些COM物間包裝起來讓你使用起來像Delphi一般的Class一樣,比較直接的就如同Servers頁次(主要包裝Ms Office用的COM物件),而TClientDataSet/TDataSetPorvider 嚴格說來並沒有包裝任何COM元件,但他主要幫你使用/實做IAppServer Interface(基本上你用Delphi開發的RemoteDataModule
(DCOM)/TransactionDataModule(COM+)程式都會支援此介面)
4.基本上從TComObject / TRemoteDataModule /TMTSDataModule這三個Class都幫你實作掉許多COM/DCOM/COM+規範的程式碼