关于VisiBroker For Delphi的使用(2)

2016-01-29 14:12 20 1 收藏

关于VisiBroker For Delphi的使用(2),关于VisiBroker For Delphi的使用(2)

【 tulaoshi.com - Delphi 】

 
《关于VisiBroker For Delphi的使用》——CORBA技术实践(二)

宜昌市中心人民医院 赵普昉 email: 3boy@sohu.com

二、一个真实的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

unsigned 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;

来源:http://www.tulaoshi.com/n/20160129/1492750.html

延伸阅读
Delphi以其优良的可视化编程,灵活的Windows API接口,丰富的底层操作越来越受到编程爱好者的青睐。 在Delphi中,通过调用Windows API,可以很方便地获取系统信息,这有助于我们编写出更好的Windows应用程序。以下程序在Delphi3.0 For Windows 9x下编译通过。 一、 用GetDriveType函数获取磁盘信息 Lbl_DriveType:Tlabel; ...
标签: Delphi
  实践第一步——分析和设计 Delphi为我们提供的组件中,有一个Label控件,它完成了最基本的单行文本标签功能。不过它的功能实在是太有限啦,总是在那里灰不溜秋地趴着。现在我们给它增加点动态效果,让它成为一个可以在鼠标经过时改变外表的标签——TouchLabel。也就是说,在Label的基础上,我们要给它添加几个属性,使鼠标经...
标签: Delphi
  资源是存放在扩展名.RES的文件里的二进制数据结构,在DELPHI中资源文件可以使用图象编辑器来制作(IMAGEEDITOR),或者使用其他的工具。如:BORLAND公司提供的RADPACKFORDELPHI中的RESOURCEWORKSHOP来创建。资源文件中通常存放的是应用程序可以随时存取的一些对象,包括:ICON、CURSOR、BITMAP、FONT等近十种。大部分的资源在通常的...
回调函数是一个很有用,也很重要的概念。当发生某种事件时,系统或其他函数将会自动调用你定义的一段函数。回调函数在windows编程使用的场合很多,比如Hook回调函数:MouseProc,GetMsgProc以及EnumWindows,DrawState的回调函数等等,还有很多系统级的回调过程。本文不准备介绍这些函数和过程,而是谈谈实现自己的回调函数的一些经验。 ...
1.安装的时候会缺少文件,试过两个版本,有一个好一点,但还是缺Indy10的帮助文件,但是不重要,对Delphi2005没有太大的影响; 2.运行速度很慢,在赛扬1.7G,512M内存的机器上都要30秒左右 3.偶尔会死住,尤其打开比较大的项目(在Delphi7下完成),成功Upgrade,但是在编辑过程中有时会死住 4.安装Delphi7下的控件比较麻烦,可以成功安装RaizeCom...

经验教程

559

收藏

31
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部