国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

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

關于COM+的一些細節問題

2019-11-18 18:08:03
字體:
來源:轉載
供稿:網友
 

client端只需要midas.dll就夠了!
     Com+在使用時需要進行用戶的驗證,當你在局域網里的時候,由于的所有的

機子都是在一個域里,他默認的所有的域成員都有權利訪問,你如果要在廣域網

上使用,你必須在服務器上建立客戶端的用戶,然后,把該用戶添加到你的com+

的角色當中,就可以訪問了!
    
     如果你現在還是在使用DCOMCONNECTION空間進行連接的話,我建議你不要用

,因為直接在廣域網中訪問com+的話需要很多的端口,而這些端口可能會被占用

,而且防火墻會阻擋這些端口,導致你的Com+無法訪問;所以我建議你使用Socke

tConnection控件來連接,這樣的話就只需要一個你指定的端口了,這樣的話通過

防火墻就比較方便了

 

/*1. 是不是com+的client也必須是域中的一個用戶?*/
     com+的服務器與客戶端不必安裝在一個域中,如何配置取決于你使用的連接

方式。
     例如當你使用HTTP方式連接時,你的應用即可以部署到Internet環境中。
     /*2. client在分了的時候除了附加midas.dll,是不是還需要別的文件?*/
     midas.dll這個文件在Delphi6以后的版本中已不再需要了。你可以在工程文

件中導入MidasLib單元。
     如果你將應用設及到的單元連接到程序中,那么在部署時不用附加任何文件

 

首先,COM+有兩個MTS組件,一個是MTS Object, 另一個是MTS DATA MODULE;

MTS Object建立時同時用DcomConnection建立MTS DATA MODULE,MTS Object有1

個GetDatas取數據方法和UPDATAS存儲數據方法,當方法完成時就執行SetComplet

e或SetAbort。
     Updates的方法如下:
     PRocedure tmtsbook.updatas(vDatas : olevariant; iMaxError

:Integer; Var iErrorCount : Integer);
     Var SerObj : IAppServer;
     OwnData : OleVariant
     begin
     try
     serobj := FMydm.dcombooks.GetServer;
     serobj.As_applyupdates(vDatas, iMaxError, iErrorCount, Owndata);
     setcomplete;
     except
     setabort;
     end;
     end;
     結果,調用這個updatas更新數據,總把修改的數據更新到最后一條記錄。


來賓發言:我經常通過在AppServer端定義事務處理的相關方法來解決(210字節)

來賓姓名:henrycheng
來賓發言:
    就是在Server端定義如下的可以遠程調用的方法,然后在客戶端根據需要直

接調用它們。
     procedure TRemoteServer.Start; safecall;
     procedure TRemoteServer.Commit; safecall;
     procedure TRemoteServer.RollBack; safecall;
 這種方法的確可以實現事務處理的要求,但有一個致命的問題是:一旦有客戶端

開始一個事物后與網絡失去聯系(如死機等)將導致其他客戶端陷入無限的等待

狀態,因為此時數據表被鎖定,只有提交或回滾這個事物后才會解鎖! 影響其它

用戶。

但前提是中間層必須能夠解析客戶端提交的數據的邏輯結構。這時,最好的方法

是建立相應的信息模型或數據模型,客戶端根據信息模型處理輸入、輸出,中間

層處理應用邏輯,包括存儲邏輯。我們現在就是這么做的。如果你希望進行進一

步的探討,可以跟我聯系。

clientdataset可將數據集,包括所有你輸入的臨時數據庫打包成xml傳給中間層,
     中間層實現在事務中進行MVC中的M層是否更新過的判斷
     具體實現大家自已琢磨吧!
來賓發言:我這樣做的……(46字節) 來賓姓名:duke
來賓發言:
    中間層定義連接控件的事物處理。
     在客戶端調用。
來賓發言:
    剛做三層結構,聽大家意見,把一個C/S結構改為三層,事物處理我這樣用不

知可行否?
     服務端定義接口:
     procedure TBarDCOMServer.isTrans(const iStates: WideString);
     begin
     if iStates='BeginTrans' then
     ServerMainF.ADOConnection1.BeginTrans
     else if iStates='CommitTrans' then
     ServerMainF.ADOConnection1.CommitTrans
     else if iStates='RollbackTrans' then
     ServerMainF.ADOConnection1.RollbackTrans;
     end;
    
     客戶端調用:
     dm1.DCOMConnection1.AppServer.isTrans('BeginTrans');
     try
     errorCounts:=0;
     errorCounts:=errorCounts+dm1.kcspIndexCD.ApplyUpdates(0);
     errorCounts:=errorCounts+dm1.yyCD.ApplyUpdates(0);
     if errorCounts=0 then //提交是否有錯誤
     dm1.DCOMConnection1.AppServer.isTrans('CommitTrans')
     else
     begin
     dm1.DCOMConnection1.AppServer.isTrans('RollbackTrans');
     ShowMessage('Error');
     exit;
     end;
     except
     dm1.DCOMConnection1.AppServer.isTrans('RollbackTrans');
     ShowMessage('網絡忙,請重試。');
     end;
    
     由于提交時,如果有錯誤并不觸發異常,因此try……except……end似乎不

起作用,所以定義一個變量errorCounts來記錄提交返回的錯誤數,由此決定是否

提交事物。
    
     此方法沒有經過實踐,明天把程序發給客戶使用后,再做判斷是否可行。
     不過,我想應該有更好的方法,請有多層經驗的朋友指教一下。

***可以,不過在COM接口中應該用olevariant

三層結構,在別的機器上運行客戶端,提示“拒絕聯接”如何注冊.TLB文件?(68

字節)
此錯誤不是客戶端的問題,而是服務端的COM的權限不正確
     2。將服務端的*.tlb文件加入到客戶端的項目中即可

webconnection

多出來的一步是吧httpsrvr.dll發布到IIS具有執行權限的virtual dir中

設置好httpsrvr.dll在服務器的http URL以及Server的GUID就行了
其他大同小異。具體看Delphi的Help,什么都有


上一篇:關于MIDAS的安全問題的解決方案

下一篇:試卷自動生成系統的開發與應用

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

新聞熱點

疑難解答

圖片精選

網友關注

主站蜘蛛池模板: 遂川县| 鱼台县| 醴陵市| 沧州市| 麻江县| 宁明县| 文成县| 昌吉市| 响水县| 阳西县| 江城| 澜沧| 武定县| 九龙县| 岱山县| 平谷区| 巴东县| 申扎县| 巫溪县| 景宁| 宜城市| 张家口市| 贺州市| 孙吴县| 余庆县| 塘沽区| 六安市| 安乡县| 礼泉县| 南充市| 芦山县| 石泉县| 荃湾区| 板桥市| 喀喇沁旗| 张家港市| 余干县| 内乡县| 武冈市| 凤台县| 英德市|