• <label id="pxtpz"><meter id="pxtpz"></meter></label>
      1. <span id="pxtpz"><optgroup id="pxtpz"></optgroup></span>

        當前位置:雨林木風下載站 > 技術開發教程 > 詳細頁面

        在Delphi中運用Queued Components

        在Delphi中運用Queued Components

        更新時間:2022-05-05 文章作者:未知 信息來源:網絡 閱讀次數:

        隊列組件(Queued Components)是一項基于微軟消息隊列服務(Microsoft Message Queuing Services)的COM+技術。它提供了一種簡易的異步引用和執行組件的方法。發送方和接收方都不心考慮對方現在是否可用和能否獲得而獨立運行。

        作為一項COM技術。隊列指的是用于存儲消息以便將來檢索的空間。隊列提供了一種非連接性的通訊機制(即發送方和接怍方之間并不是直接相連結,而是通過隊列進行相互通訊)。隊列負責存儲信息直到接收方準備好為止。由于發送方和接收方之間不是直接通訊的,所以可以相互之間獨立地運行,而不會影響到雙方。

        下面舉例說明如何使用Delphi創建和使用隊列組件。

        首先,我們將創建一個服務器。接口中的所有方法必須僅使用IN參數,不能有返回值。這是由于客戶端和服務器之間并沒有直接的連結。因為不能確切地知道請求什么時候會被執行,所以客戶端不能一直等待從服務器獲得應答。

        在Delphi中,首先打開file/new/other/activeX,創建一個ActiveX Library,然后,加入一個automation對象。為你的服務器對象取一個名稱,比如QdComponent,其他的選項都使用默認值,單擊OK.這時你將會看到Type Library Editor,添加一個方法,命名為Task1,為這個方法添加一個參數,命名為TaskMessage,設定其類型為BSTR(即Delphi中的WideString類型)。如果Type Library Options設置為show Pascal code,那么你的方法聲明代碼應與以下代碼類似:

        procedure task1(TaskMessage:widestring) [dispid $00000001];safecall;

        保存項目文件為MyQdServer,單元文件為QdServer.

        具體代碼如下:

        unit QdServer;

        {$WARN SYMBOL_PLATFORM OFF}

        interface

        uses comobj,ActiveX,MyQdServer_TLB,stdvcl,Dialogs;

        type

          TqdComponent=class(TautoObject,IQdComponent)

          Protected

        Procedure Task1(const TaskMessage:widestring);safecall;

          End;

        Implemention

        Uses comServ;

        Procedure TqdComponent.Task1(const TaskMessag:widestring);

        Begin

          Showmessage(TaskMessage);

        End;

        Initialization

        TautoObjectFactory.Create(ComServer,TqdComponent,class_QdComponent

                 CiMultiInstance,tmApartment);

        End.

        安裝服務器

        在控制面板中打開組件服務工具(Component Services Tool),在文件樹中找到”COM+ Application”,然后右擊,選擇New/Application接著選擇“Create an empty applcation”根據提示找到你的新程序,右擊它,轉到屬性頁,找到Queuing欄,選擇復選框中的兩項1.Queued 2.Listen.Listen表示任何被壓入隊列的消息,當它被擊活時,將馬上被處理。在你的新程序下右擊“components”選擇New/Component,選擇“install new component(s)”,根據提示,找到并安裝你的DLL文件,然后展開文件樹找到“interface”,右擊IqdComponent,打開屬性頁,在Queuing欄中選上”Queued”(如果看到出錯提示信息“MSMQ IS NOT RUNNING”)那么很可能你沒有安裝MSMQ,因為MSMQ不是默認的WINDOWS 2000的安裝選項。

        創建客戶端

        創建一個新的Delphi應用程序,在uses子句中加入MyQdServer_tlb.pas單元文件,添加一個按鈕和一個文本框。

        你需要在程序運行時創建你的對象,所以使用一個符號變量來標記組件的信息,這個參數在FormShow事件處理函數中聲明和使用。

        具體代碼如下:

        unit unit1;

        interface

        uses

        Windows,Messages,SysUtils,Variants,Classes,Graphics,Controls,Forms,

        Dialogs,StdCtrls,Comobj,ActiveX,MyQdSever_TLB,

        Type

          Tform1=class(TForm)

        Edit1;Tedit;

        Button1:Tbutton;

        Procedure Button1Click(sender:Tobject);

        Procedure FormShow(sender:TObject);

          Private

        Qinterface:IqdComponent;

          Public

        {Public declarations}

          end;

        var

          form1:Tform1;

        implemention

        {$R*.dfm}

        Function NewCoGetObject(pazName:PwideChar;pBindOptions:PbindOpts;

        Const iid:TIID;out ppv):Hresult;stdcall;external ‘ole32.dll’ name‘CoGetOject’

        Procedure Tform1.Button1Click(sender:TObject);

        Begin

          Qinterface.task1(edit1.text);

        End;

        Procedure Tform1.FormShow(sender:Tobject);

        Var

          Qmoniker:PwideChar;

        Begin

          Qmoniker:=’Queue:/new{服務器的GUID或Server.interfaceName}’;

          Olecheck(NewCoGetObject(Qmoniker,nil,IqdComponent,Qinterface));

        End;

        End.

        運行客戶端程序,然后傳送一條消息,由于此時你并沒有啟動服務器,所以這時并不能顯示出來這條消息,需要啟動服務器,而最簡單的方法就是打開控制面板中的組件服務(Component Services),找到你的服務器,右擊選擇啟動。

        溫馨提示:喜歡本站的話,請收藏一下本站!

        本類教程下載

        系統下載排行

        主站蜘蛛池模板: 亚洲七久久之综合七久久| 久久精品国产亚洲一区二区三区| 亚洲人成图片小说网站| 午夜在线免费视频 | 三年片在线观看免费观看大全一| 亚洲无人区一区二区三区| 精品免费久久久久国产一区| 亚洲综合无码AV一区二区| aaa毛片免费观看| 亚洲国产精品久久久久| 精品无码人妻一区二区免费蜜桃| 日木av无码专区亚洲av毛片| 99久久免费国产香蕉麻豆| 亚洲av无码国产综合专区| 性xxxx视频播放免费| 婷婷亚洲综合一区二区| 亚洲精品动漫人成3d在线| a在线观看免费视频| 亚洲国产精品久久久久婷婷老年| 日本片免费观看一区二区| 在线亚洲午夜片AV大片| 国产真实伦在线视频免费观看| 无码毛片一区二区三区视频免费播放| 久久精品国产69国产精品亚洲| 9277手机在线视频观看免费| 日韩亚洲不卡在线视频中文字幕在线观看 | 久久精品无码专区免费青青 | h视频在线免费观看| 亚洲一区爱区精品无码| 最好看最新的中文字幕免费| 在线观看亚洲AV每日更新无码| 四虎永久免费地址在线观看| 国产一级淫片a免费播放口| 亚洲人成免费电影| 亚洲国产成人久久一区WWW| 小日子的在线观看免费| 亚洲丁香婷婷综合久久| 亚洲国产精品一区二区第一页| 国产精品成人免费福利| 成人免费观看男女羞羞视频| 中文字幕在线观看亚洲|