《关于VisiBroker For Delphi的使用》
-CORBA技术实践(二) 数据挖掘实验室
宜昌市中心人民医院 赵普昉 数据挖掘论坛
email: 3boy@sohu.com
数据挖掘研究院
2,一个真实的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; 数据挖掘实验室
数据挖掘工具
procedure TForm1.FormCreate(Sender: TObject);
begin
InitCorba;
数据挖掘实验室
end;
数据挖掘实验室
数据挖掘交友
end.
接下来我们的客户程序如何获得这个字符串呢?
数据挖掘工具
那么我们只需要在客户程序中去引用这个接口方法就够了,代码如下
unit ClientMain;
数据挖掘论坛
interface
数据挖掘研究院
uses
数据挖掘研究院
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Corba, CRB_I, CRB_C; 数据挖掘研究院
数据挖掘研究院
type 数据挖掘研究院
TForm1 = class(TForm) 数据挖掘交友
Button1: TButton; 数据挖掘研究院
Label1: TLabel;
procedure FormCreate(Sender: TObject); 数据挖掘实验室
procedure Button1Click(Sender: TObject);
procedure FormDestroy(Sender: TObject);
数据挖掘论坛
private 数据挖掘工具
{ Private declarations }
数据挖掘工具
FromIStr :TTestAny; 数据挖掘论坛
public 数据挖掘论坛
{ Public declarations }
数据挖掘工具
end; 数据挖掘工具
数据挖掘研究院
var 数据挖掘论坛
Form1: TForm1; 数据挖掘论坛
数据挖掘工具
implementation
数据挖掘实验室
数据挖掘研究院
{$R *.dfm}
数据挖掘论坛
数据挖掘工具
procedure TForm1.FormCreate(Sender: TObject);
数据挖掘论坛
begin
CorbaInitialize; 数据挖掘交友
FromIStr:= TTestAnyHelper.bind;//创建一个接口的实例
end; 数据挖掘实验室
数据挖掘工具
procedure TForm1.Button1Click(Sender: TObject); 数据挖掘实验室
var myAny : Any; 数据挖掘实验室
begin 数据挖掘工具
myAny := FromIStr.GetAny();//引用接口实例的方法 数据挖掘工具
Label1.Caption := IntToStr(myany); 数据挖掘实验室
//将方法的结果转化为字符串,付给Label1.Caption
数据挖掘实验室
end;
procedure TForm1.FormDestroy(Sender: TObject); 数据挖掘研究院
begin 数据挖掘研究院
FromIStr:= nil;
数据挖掘工具
//释放接口实例对象
数据挖掘实验室
end;
end. 数据挖掘论坛
您理解上面的程序吗?下一小节我们将继续讲解如何传递一个数组对象,错误之处还请来函指正哟!下次再见
数据挖掘交友
数据挖掘交友