亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

將Dcom對象轉換成Com+對象的一種辦法

2019-11-18 18:10:39
字體:
來源:轉載
供稿:網友
將Dcom對象轉換成Com+對象的一種辦法
 
升級到sp2后,基于充分利用Windows xp sp2安全功能方面的考慮,本人近期開始將原有的DCOM應用向Com+環境轉移?,F將本人轉移過程中出現的問題及解決辦法,介紹如下,請方家指正:
一、原DCOM應用的結構:
我用DELPHI IDE的向導正常生成一個遠程數據模塊(RdbDBSvr),并在其中放入AdoDataset,Adoquery等數據集控件,建立接口方法,對外Export方法接口,為客戶端提供數據查詢功能,該服務器采用獨立運行的進程外服務模式??蛻舳藙t利用Dcomconnection來連接此遠程數據模塊??傊且粋€在DELPHI中創建的標準的C/S應用程序。
需要說明的是在設計RdbDBSvr時,為保持未來的代碼重用,其中沒有加入直接引用主窗體變量的引用,一些為了同步線程設置的變量,我均將其放入了一個公用變量單元中。同時,同時我還盡量使用方法而不是直接使用PRovider控件來為客戶提供數據。事實證明,這種設計減輕了DCOM向COM+對象轉換的復雜程度,而且應該說是相當方便的。
在客戶端,我則通過公用變量引入遠程數據模塊的IAppServer接口,并在大部分的代碼中引用這一公用變量并調用方法。也就是說,代碼中沒有加入對特定遠程數據提供者的直接引用。
  二、現在我們對服務器進行轉換。
  DCOM對象向COM+對象轉換前,我事實上運用了一個事實:就是DELPHI中無論是RemoteDataMoudel還是MTSDataMoudle,都實現了IAppServer接口,并歸入Borland DataSnap Applacation server Catlog中。因此無論是MTS對象,不是DCOM對象,在使用DcomConnection控制找遠程數據提供者(Remote data provider)時,都會在列表中出現。
(一)   方法一
1、用DELPHI IDE創建一個新的Transactional data moudle,并將其放入一個單獨的ActiveX DLL中。
 
2、打開原DCOM服務器中的遠程數據模塊,選擇其中的全部控件,并將其拷貝到你新創建的MTS數據模塊中,這樣你原遠程數據模塊中所有控件的屬性都被原樣復制過來了。這一步是為下一步得用DCOM遠程數據模塊代碼做了必要準備。

3、打開Type library編輯器,將原DCOM服務器的類型庫加入到引用列表中,并將新的MTS數據模塊的Parent interface改成DCOM服務器中遠程數據模塊實現的接口。然后刷新類型庫。




4、此時你的MTS接口實現單元中,將會自動加入原DCOM遠程數據模塊的接口聲明,并加入實現代碼的框架。
 
  TDemo = class(TMtsDataModule, IDemo)
  private
    { Private declarations }
  protected
    class procedure UpdateRegistry(Register: Boolean; const ClassID, ProgID: string); override;
//以下是我的原遠程數據模塊的接口表,DELPHI自動將其復制到此單元中,并且生成了代碼框架
    procedure FindPersons(const Name, UnitNo: WideString;
      out RDataset: OleVariant); safecall;
    procedure GetFieldsName(const TBName: WideString; out FDNames: OleVariant);
      safecall;
    procedure GetLaborage(const PersonNo: WideString; out Records: OleVariant);
      safecall;
procedure GetOtherInfo(const TableName, PersonNo: WideString;
……
  public
    { Public declarations }
  end;
……
procedure TDemo.FindPersons(const Name, UnitNo: WideString;
  out RDataset: OleVariant);
begin
 
end;
……
5、現在,返回到原DCOM遠程數據模塊的實現單元,將其方法的具體實現代碼復制到此單元。并將復制代碼中的原DCOM對象的類名替換成MTS對象的類名。同時注意:如果原DOCM遠程數據模塊引用了公用單元(如我自己引用的公用變量單元),將你還需將引用的公用單元加入到USER列表中。
6、至此,你的與DCOM數據模塊相同功能的MTS數據模塊完全實現,請編譯并注冊該MTS對象。
三、客戶端:
打開你的客戶端應用程序源代碼,并打開客戶端數據模塊中的DCOMConnection對象的ServerName屬性列表,此時,你將可以看到MTS對象出現在了列表中,選擇它,并重新編譯你的客戶應用程序。如果你在客戶端代碼中沒有加入對ServerName的引用硬編碼,則你將看到客戶端不需任何改變就能夠正常運行,而此時它引用的已不是DCOM對象而是運行在COM+環境中的MTS對象。為證實這一點,你可以運行DCOMCNFG。在本地計算機中“正在運行的進程”列表中,你將看到MTS正在歡快的旋轉。
四、注意的問題:
1、上述方法是將原DCOM 應用服務器的類型庫導入到MTS服務器中,再實現類型庫中的方法。因此,如果你將新生成的MTS服務器組件發布到其他計算機上,并且沒有將原DCOM應用服務器拷貝并注冊到該計算機上,將你的客戶端將會收到“找不到類型庫”的錯誤提示。解決這一問題的辦法是將原DCOM應用服務器的*.tlb文件復制到該計算機上,并用tregsvr.exe –t (server).tlb 來在該計算機上注冊類型庫(server用你原服務器名代替)。另一種方法是,在編輯MTS對象類型庫時,直接引用原服務器的TLB文件,而在分民MTS對象將該TLB文件與MTS包隨同分發。
2、以上轉換事實上只能對比較簡單的DCOM對象進行。如果你的DCOM代碼中加入了與后端數據庫相關的事務支持代碼,則你必須修改其代碼,使之使用MTS提供的事務管理功能,這樣才能充分發揮MTS資源管理、事務協調的強大功能,當然,如果你的DCOM對象沒有使用與MTS相容的線程模型,則你的修改工作量將會更大。
3、在轉換成MTS對象后,你就能直接運用MTS基于角色的安全功能,對你的MTS的安全屬性實施細微的控制,并且不用增加任何代碼,當然如果你的代碼中加入了原基于DCOM的特殊安全設定,你可能還要進行微調。但是,COM+會兼容這些安全代碼。
4、轉換成MTS對象后,建議你重新確定你的COM默認發生的“最低安全限制”屬性和你計算機的防火墻設置,以免它停止工作或“拒絕訪問”。

上一篇:對DBGrid中的列進行顯示與否的設置

下一篇:改變文件夾圖標

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
學習交流
熱門圖片

新聞熱點

疑難解答

圖片精選

網友關注

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲欧美视频在线| 国内成人精品视频| 亚洲国产日韩欧美在线动漫| 亚洲电影成人av99爱色| 欧美乱人伦中文字幕在线| 亚洲影院污污.| 26uuu日韩精品一区二区| 日韩h在线观看| 中文字幕久久久av一区| 日韩免费av片在线观看| 一区二区欧美久久| 精品国产区一区二区三区在线观看| 亚洲国产成人精品久久| 久久天天躁夜夜躁狠狠躁2022| 欧美性生交xxxxx久久久| 精品国模在线视频| 91视频免费网站| 国产精品久久久久久av福利| 亚洲欧美在线第一页| 精品久久久香蕉免费精品视频| 久久视频在线观看免费| 欧美日韩加勒比精品一区| 欧美韩国理论所午夜片917电影| 国产精品视频久久久| 久久久久久网站| 亚洲高清免费观看高清完整版| 国产精品手机播放| 国产精品久久久av久久久| 日韩高清不卡av| 色偷偷91综合久久噜噜| 国产精品高潮呻吟久久av黑人| 国产精品久久久久久超碰| 久久久精品日本| 欧美日韩aaaa| 久久久免费精品视频| 亚洲欧美国产va在线影院| 欧洲s码亚洲m码精品一区| 欧美大胆a视频| 国产原创欧美精品| 国产亚洲欧美一区| 在线精品国产欧美| 久久久国产精品视频| 欧美色另类天堂2015| 欧美性猛交xxxx乱大交极品| 一本一本久久a久久精品牛牛影视| 国产精品久久久久影院日本| 国产精品久久久久久久午夜| 欧美性理论片在线观看片免费| 国产在线观看91精品一区| 欧美高清在线播放| 九九热最新视频//这里只有精品| 九九精品在线播放| 黑人巨大精品欧美一区二区| 欧美成人sm免费视频| 尤物九九久久国产精品的分类| 亚洲精品理论电影| 精品日韩中文字幕| 欧美性少妇18aaaa视频| 欧美激情国产精品| 91免费在线视频网站| 日日狠狠久久偷偷四色综合免费| 国产99视频精品免视看7| 日韩精品极品视频| 国产成人精品国内自产拍免费看| 日韩欧美999| 2021久久精品国产99国产精品| 亚洲欧洲美洲在线综合| 国产日韩在线看片| 亚洲美腿欧美激情另类| 日韩高清电影好看的电视剧电影| 成人夜晚看av| 成人免费激情视频| 久久在线免费视频| 亚洲精品日韩丝袜精品| 欧美日韩国产一区二区| 亚洲人成自拍网站| 亚洲韩国欧洲国产日产av| 亚洲一区二区三区777| 亚洲女人被黑人巨大进入al| 欧美最顶级的aⅴ艳星| 国产一区二区三区三区在线观看| 日韩视频在线观看免费| 日韩亚洲国产中文字幕| 中文字幕日韩专区| 亚洲男人的天堂在线播放| 国产成人精品久久| 欧美高清第一页| 欧美高跟鞋交xxxxhd| 精品视频久久久久久久| 亚洲激情电影中文字幕| 亚洲最大激情中文字幕| 精品日本高清在线播放| 国产精品日韩久久久久| 成人免费观看网址| 亚洲欧洲在线视频| 欧美日韩福利电影| 91福利视频网| 国产在线久久久| 日韩精品在线第一页| 久热精品视频在线| 国产精品第七十二页| 国产精品一区二区av影院萌芽| 成人免费高清完整版在线观看| 亚洲精品视频二区| 国产日韩欧美一二三区| 国产精品户外野外| 国产剧情久久久久久| 日韩欧美一区二区三区久久| 欧美成人全部免费| 黑人精品xxx一区一二区| 日韩视频免费看| 国产91色在线|| 国产午夜精品久久久| 91在线|亚洲| 日韩av在线网站| 91精品国产综合久久香蕉922| 国产精品中文字幕久久久| 亚洲aa在线观看| 精品少妇一区二区30p| 在线视频亚洲欧美| 欧美在线观看网址综合| 中日韩美女免费视频网址在线观看| 成人福利在线观看| 丰满岳妇乱一区二区三区| 欧美香蕉大胸在线视频观看| 成人网页在线免费观看| 91九色在线视频| 日韩精品视频在线免费观看| 国产一区二区色| 色播久久人人爽人人爽人人片视av| 亚洲深夜福利网站| 午夜精品一区二区三区视频免费看| 成人网址在线观看| 欧美激情女人20p| 欧美视频裸体精品| 狠狠色狠色综合曰曰| 久久久精品视频成人| 91在线视频九色| 国产精品久久久久久婷婷天堂| 成人午夜一级二级三级| 亚洲女人天堂成人av在线| 精品久久久久人成| 亚洲电影成人av99爱色| 欧美国产日韩一区二区在线观看| 国产精品久久久久久久av大片| 亚洲国产日韩一区| 精品国偷自产在线| 久久久久久久久久av| 国产精品18久久久久久首页狼| 亚洲日韩欧美视频一区| 中文字幕日韩免费视频| 日韩国产欧美精品一区二区三区| 欧美成aaa人片免费看| 久久成人一区二区| 97在线观看视频| 欧美xxxx18性欧美| 国产日产亚洲精品| 亚洲性猛交xxxxwww| 国产精品久久久久久久av电影| 日韩精品在线视频美女| 青青青国产精品一区二区| 久久精品国产久精国产一老狼| 中文字幕一区日韩电影| 亚洲国产中文字幕久久网|