选择显示字体大小

delphi多层分布式开发(1)

分布式多层数据库开发简介

delphi提出的midasmulti-tier distributed application services suite多层分布式应用服务器组),是把原来two- tier数据连接放到了服务器端的com组件上,客户端只剩下了执行文件和midas.dll,前台和服务器上的com组件,通过dcom机制互相沟通。

这个多的一层,称为应用程序服务器application server),或者称为中间件。这种多层分布式工作机制,主要基于这样几点考虑:

1) 减少客户机的维护量,因为前台程序比较简单;

把企业逻辑封装在通用的中间件应用服务器中,不同的客户都可以共享同一个中间层(包括web),而不必每个客户都单独实现企业规则,避免了重复开发和维护的麻烦。由于客户程序相当瘦(这就是现在流行的瘦客户机概念),无论是开发还是发布,都变得简单了。

2) 便于升级,当中间件升级的时候,客户程序可能不需要变化;

3) 实现了分布式数据处理,把一个应用程序分布在几台机器上运行,可以提高应用程序的性能,也可以把敏感部分封装在中间件,为不同的用户设置不同的访问权限,增强了安全性。

4) 减少直接连接数据库的用户数目,减少费用。

delphi 6.0上,在原来的midas基础上,发展了datasnap技术,在很多细节方面,它提供了原来midas所没有的许多功能,使用上更加方便了。

datasnap
主要提供客户端和中间件之间的通信,不但支持com+技术也支持tcp/ip或者corba,它们使用类似的界面和方法,其结果由程序自动完成,这就大大扩充了它的应用范围。

下面我们通过几个例子来说明多层数据库的设计问题。

主要想解决这样几个问题:如何建立一个简单的分布式系统,如何使用sql,如何传递附加信息和向客户提供服务器方法,如何建立主从表结构。理解了这些方法,我们就可以建立属于自己的性能更加高超的数据库系统来。

这些实例,我们不但要会做,更要理解。

必须要提醒的是,前台机器上除了应用程序以外,还必须把一个midas.dll文件复值到前台机器上,这个文件在服务器winnt\system32目录下。

服务器端程序

服务器端程序实际上是个com 工程,它本身连接数据源,再通过接口与客户端联系,这个com 工程必须注册在服务器上。

首先建立一个空白的工程。

file -> new -> other -> multitier -> remote data module(远程数据模块)

对话框: coclass name : com程序的名称,前台依据这个名字查找com程序(pct121 instancing :执行模式,大部分用multiple instance(多重实例)

threading model
线程模式,建议用apartment(单元)

下面我们就会对这几个选择详加说明。

ok,产生一个窗口,在这个窗口里,可以放入数据控件。

viwe -> type libray 中,我们可以看到这个com 的一些特性。我们也可以记下系统提供的guid,以备后来使用。

加入一个adotable,并设置其指向一个数据库

再设置一个datasetprovider(dataaccess)指向adotable

这就完成了服务器端的程序设计。保存,编译,注册(注意,只要运行就自动在本机注册了)。

这里需要做几个说明:

1
) 在客户端,数据控件一般要和datasource相连,但在服务器端,主要要考虑数据和接口相连,delphi 5.0以上版本规定,使用datasetprovider

就不需要再针对每个控件做export(导出)操作,而是由应用程序服务器自动帮前台查找这就简化了程序和维护量。但是,前台每个dataset 必须有个

对应的datasetprovider 才行。

2)关于建立com 时的几个选项现在说明一下:

a) instancing :

multiple instance:
一个应用程序可以被多个前台程序调用使用,启动和执行的效率比较高,不耗费服务器太多的资源,管理上也比较方便。

single instance:
一个应用程序只能被一个前台程序调用,由于没有排队问题,所以当某个查询崩溃时,不会影响其它的查询,但是,一个前台调用必然在服务器上建立一个应用程序服务器process (进程),占用资源比较多,影响服务器整体执行效率。

internal
: 建立一个in-processcom 程序(也就是dll文件的格式),由于mult-tier 结构中,应用程序服务器和前台程序是放在不同的地方的,两台机器的两个程序就无法共享同一个process,所以很少设置成internal模式的。

b) threading model:

apartment:
每个实例一次只能处理一个前台发出的request(请求),如果同时建立多个in-process com 程序,那每个com 程序就会有一个现程服务,所以数据是安全的,当然要注意某些共享变量的冲突。

single:
线程,循环工作,不会出现多任务的问题。

free :
可以让remote data module自己处理多线程问题,客

户端程序需要用多线程方法来处理。

both :
free几乎相同,但对应前台界面的callback都是连

续的。

如果注册后无法确认是否注册成功,可以用c:\winnt\regedit.exe检查。

 

客户端程序



two-tier模式中,客户端(client)程序是直接和服务器的数据源相连的,而multi-tier模式,多个客户端连接的是一个应用程序服务器,因为收费是按客户端数计算的,所以,数据库的使用费用比较低。



下面的例子只提供了数据库操作的最基本的功能,主要说明数据源的连接方法。

1)建立一个普通的工程。

2)放置一个tdcomconnrction控件(在datasnap页),属性:

在本机注册时,可直接设置以下属性:

servername:
应用程序服务器注册名(pro1.pc121

connected=true
激活

这时你可以看到服务器端的com 程序被激活了。

如果在网络上调试,需要给出服务器:

computername
服务器名(自动给出网上邻居)

注意:

serverguid
guid值是自动给出的。

3
)放置一个tclientdataset控件(在data access页)

属性:

name=cdscustomer
(重新起名)

remoteserver= dcomconnrction1

providername:=datasetprovider1
服务器端将被激活)

active=true
(激活后将能正常连接)

4
)放置tdatasource,属性:

dataset:
指向cdscustomer

其余犹如普通的数据库设计。我们也可以练习一下tactionlist控件的使用,先做一个小练习:先用普通的方法连上数据库,并用表格显示:

放一个toolbar加入四个按钮。然后把standard--àactionlist加入进去。

actionlist上右键,选:action list editor

多层数据库中的一个例子在客户端-2”中。其中写入和退出在standard action 内找不到,需要自己编,在toolbar1内再加入两个button,写:

procedure tform1.applyupdateexecute(sender: tobject);

begin

cdscustomer.applyupdates(-1);

showmessage('
已经正确地写入数据库!!');

end;

procedure tform1.closeactionexecute(sender: tobject);

begin

close;

end;

下面装饰这个button组,调入一个imagelist1,调入相应的图形:

toolbar1的属性image=imagelist1

showhint=true

把每个buttonhint的属性放入适当的值。只要服务器端正确的注册,这个程序使用是没有问题的。


 


关键字 本文所属关键字

相关 与本文相关文章

分类 所有文章关键字导航

源码编程相关

Java   Asp   PHP   .Net   XML   C/C++   CGI   VB   Jsp   J2ee   J2se   J2me   EJB   Servlet   Tomcat   Resin   Struts   Weblogic   Eclipse   ANT   GUI   JMS   Web servise   IDEA   Webphere   Hibernate   Spring   Jboss   Applet   Swing   Socket   Javamail   Perl   Ajax   P2P   安全   模式   框架   测试   开源   游戏

SQL数据库相关

My-SQL   Ms-SQL   Access   DB2   Oracle   Sybase   SQLserver   索引   存储过程   加密   数据库   分页   视图  

手机无线相关

3G   Wap   CDMA   GRPS   GSM   IVR   彩信   短信   无线   增值业务

网页设计制作相关

HTML   CSS   网页配色   网页特效   Javascript   VBscript   Dreamweaver   Frontpage   JS   Web   网站设计

网站建设推广相关

建站经验   网站优化   网站排名   推广   Alexa

操作系统/服务器相关

Windows XP   Windows 2000   Windows 2003   Windows Me   Windows 9.x   Linux   UNIX   注册表   操作系统   服务器   应用服务器

图形图像多媒体相关

Photoshop   Fireworks   Flash   Coreldraw   Illustrator   Freehand   Photoimpact   多媒体   图形图像

标准 网站致力的规范

Valid CSS!

无不良内容,无不良广告,无恶意代码

Valid XHTML 1.0 Transitional

creativecommons