程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> 使用COM+參數化對象結構編程技術

使用COM+參數化對象結構編程技術

編輯:Delphi
一、引言
  COM+ 服?占夾g的一??核心理念就是系?y本身提供完成?S多面向企?I??用?_?l者的通用基本模?M(如??程
  
  、物件?Y源池管理、事?輾??展芾怼⑹錄?服?展芾淼齲?,??系?y?O??人?T把精力集中在企?I??用本身的?I??
  
  ????上。
  COM+提供了?S多新的服?蘸鴕恢碌墓芾磉行?h境,它??支援申明性??程模型(declarative programming
  
  model),也就是?f,?_?l人?T可以按?M可能通用的方式?_?l元件程式,把一些????留到配置?r刻再?_定。例
  
  如,在?_?l一??COM+元件,它支援事?仗?理特性,但是我??在?_?l元件的?r候,?K不?_定它是否使用事?仗?
  
  理特性,而把是否支援事?仗?理特性留待配置?r刻再作?Q定。有的??用可能??需要事?仗?理特性,而有的??
  
  用可能?K不需要,我??可以通?^COM+管理程式配置元件的?傩????Q定元件是否支援事?仗?理特性。MTS安全模
  
  型???H上是一??典型的申明性??程技?g,它把元件的安全角色?Y??留到配置?r刻再?o出?_切的定?x,而非??
  
  程?r刻。COM+?^承了MTS的安全模型。
  利用COM+的服?蘸凸芾砉ぞ撸??_?l一??COM+元件要比?_?l一??COM元件容易得多,因??COM+元件???H上是
  
  建立在COM+系?y服?棧??A上的??用程式,我??可以避免底?臃爆?的??????理,如多??程的?K?l??理。通?^
  
  COM+系?y服?眨?在?@得可靠性的同?r,也使的元件和??用程式更??於???駛?,在更?V泛的?????潤w?F元件或
  
  者??用的多?B性。
  COM+ 的推出終於有機的統一了 COM/DCOM/MTS 的編程模式,使得我們不需要區分我們編寫的是什麼類型
  
  的COM 對象,所編寫的對象既是 COM 對象也是 COM+對象;在 COM+ 中物件?h境和截取(intercept) 技?g都
  
  被合?愕????實? COM代理/存根中,所以可以通?^???實? CoCreateInstance 方法????建物件,?K且通?^
  
  CreateInstance方法??建的MTS 元件同?湧梢栽?COM+ 正常?行和完全相容。
  
  二、參數化 COM+ 對象結構
  在COM+ 中引入了許多新的服務何功能,參數化對象結構就是其中一項功能。本功能是用來實現為COM+對
  
  象創建提供一個字串參數,組件對象通過IObjectConstruct接口來查詢管理員配置的字串參數。參數化對象
  
  結構的一個典型用途就是可以應用到程序中作為 ADO 的連接字串參數。
  IObjectConstruct 讓的方法或對象通過參數來控制相關對象處理功能,我們必須使用接口對象來實現此
  
  接口,當管理員將組件對象的對象結構配置參數設置有效後,COM+ 將調用 IObjectConstruct.Construct 通
  
  過IObjectConstructString來獲取參數化 COM+ 對象結構中的字串參數。
  IObjectConstructString 接口用來存取建立者字符串。本對象是一個Automation COM 對象,但無須通
  
  過接口對象來實現他,COM+ 支持在調用 IObjectConstruct.Construct 時暴露此對象。
  如何為元件輸入對象結構字串。
  1、在組件管理器中選取相應的組件,右鍵彈出快捷菜單,然後點擊屬性
  2、在組件屬性對話框,點擊激活屬性頁。
  3、使能對象結構,輸入建立者字符串(例如一個 ADO 連接字串)。
  
  三、程序實現
  
  實現COMPlusServer
  
  1、Import Type library->COM+ Services Type Library->Create Unit
  2、建立一個新的 ActiveX Library Project
  3、創建一個新的 MTS Data Module
  4、到 Type Library 中選取 Project->Uses->點擊右鍵選擇 Show All Type Library->選擇COM+
  
  Services Type Library
  5、選擇 COM 的接口對象->Implements->點擊右鍵選擇 Insert Interface ->IObjectConstruct
  6、在接口中定義一個新的的方法-> GetConString
  7、到組件對象實現單元中實現以下代碼:
  private
  { Private declarations }
  obJSonStr: IObjectConstructString;
  StrDemo: WideString;
  
  function TXXXServer.Construct(const pCtorObj: IDispatch): HResult;
  begin
  pCtorObj.QueryInterface(IID_IObjectConstructString, obJSonStr);
  StrDemo := obJSonStr.Get_ConstructString;
  end;
  
  procedure TXXXServer.GetConString;
  begin
  if trim(StrDemo) = ' then
  ShowMessage('沒有字串')
  else
  ShowMessage(StrDemo);
  end;
  
  客戶端程序
  客戶端程序是最一般化的 Delphi 代碼:
  procedure TForm1.Button1Click(Sender: TObject);
  begin
  DCOMConnection1.APPServer.GetConString;
  end;
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved