程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> 關於VisiBroker For Delphi的使用(2)

關於VisiBroker For Delphi的使用(2)

編輯:Delphi
《關於VisiBroker For Delphi的使用》——CORBA技術實踐(二)

宜昌市中心人民醫院 趙普昉 email: [email protected]

二、一個真實的CORBA小服務程序

我們都知道無論是Ejb,Com/Dcom/MTS/Com+,還是Midas/Corba這樣一些三層體系,最重要的架構中介體系,對於理論上的東西,較為抽象沒有必要在這裡談這樣一些高深的理論,這些還是留給大師去述說吧,我們只需要理解大師們交給我們的工具就可以了,我們可以叫這些中介集群為中介對象群,實際上就是把我們在C/S中的公共部分或人機交互程序分為了,人與程序,程序與數據庫之間的交互,這樣做的目的大師們說的非常好了。經過程序系統架構師的設計,我們可以清晰的看到我們的中介對象,也就是那些以不同形式放在,應用服務器上的對象。客戶程序可以完全不去理會後台過多的執行明細,服務程序不用過多的被客戶程序所牽制,一切都由Interface來發布所有的銜接規則。那麼剩下來的問題就非常簡單了,那就是有什麼樣的接口,接口可以獨立於客戶與服務器而獨立編寫,這就是我們的Corba for Delphi6中強調的東西。

在我們申明接口之前我首先簡要的敘述一下IDL2PAS的一些相關保留字和操作符

AND ARRAY AS ASM

BEGIN CASE CLASS CONST

CONSTRUCTOR DESTORY DISPINTERFACE

DIV DO DOWNTO ELSE

END EXCEPT EXPORTS FILE

FINALIZATION FINALLY FOR FUNCTION

GOTO IF IMPLEMENTATION IN

INHERITED INITIALIZATION INLINE INTERFACE

IS LABEL LIBARAY MOD

NIL NOT OBJECT OF

OR PACKED PROCEDURE PROGRAM

PROPERTY RAISE RECORD REPEAT RESOURCESTRING

SET SHL SHR STRING THEN THREADVAR

TO TRY TYPE UNIT UNTIL USER VAR

WHILE WITH XOR

沿用的Pascal保留字

Boolean Char WideChar Shortint Smallint Integer Byte

Word Extended Pointer AnsiChar Longint Cardinal Single

Double Real Real48 Comp Currency ShortString Openstring file

Text TextFile PAnsiChar PChar PWideChar ByteBool Wordbool

LongBool AnsiString WideString TVarArrayBound PVarArray TVarData PVarData TVarArray PShortString PAnsiString PWideString PString Pextended

PCurrency TDateTime PVarRec String Variant TObject Tclass Iunknown

TinterfaceObject TGUID PGUID Int64 Application Screen Print Printer

(將與PASCAL做一個比較,注意大小寫)

數據基本類型

IDL 類型 Pascal 類型

boolean Boolean

char Char

wchar WideChar

octet Byte

string AnsiString

wstring WideString

short SmallInt

unsigned short Word

long Integer

unsigned long Cardinal

long long Int64

unsig

ned long long Int64

float Single

double Double

long double Extended

fixed {沒有對應類型}

以上的保留字和操作符會在我的文章中足一介紹,這裡就不具體描述了。

我們開始編一個小程序來說明一下

照樣先申明一個接口描述:

表示我要傳遞一個任意類型信息

module Crb{

interface TestAny{

any getany();//注意大小寫

};

} ;

現在按照我們上一屆講的生成框架代碼,接下來我們在Crb_impl中加入

Result := StrToInt(Form1.Edit1.Text);

加在那兒呢加在Getany方法中哪,如下

function TTestAny.GetAny : ANY;

begin

Result := StrToInt(Form1.Edit1.Text);

end;

這個接口的意義是將我們的服務程序的主窗體上的Edit1上的字符串返回給接口,以便於客戶程序從接口獲得該字符數據。

當然必須在我們的主窗體上作如下聲明

unit ServerMain;

interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, Corba,

CRB_I, CRB_C, CRB_S, CRB_Impl, StdCtrls;

type

TForm1 = class(TForm)

Label1: TLabel;

Edit1: TEdit;

procedure FormCreate(Sender: TObject);

private

{ private declarations }

protected

MyAnyTest :TTestAny; // 主干對象

procedure InitCorba;

public

{ public declarations }

end;

var

Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.InitCorba;

begin

CorbaInitialize;

//加入CRB服務代碼

MyAnyTest := TTestAnySkeleton.Create('Any Test Server', TMyTest.Create);

BOA.ObjIsReady(MyAnyTest as _Object);

end;

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved