用DELPHI开发自动化服务器

用DELPHI开发自动化服务器,第1张

 自动化是从一个应用程序内部自动控制另一个应用程序的方法 例如下面的代码 procedure CreateNewWordvarWordObj: VariantbeginWordObj := CreateOleObject( Word Basic ){此函数声明于ComObj单元}WordObj AppShowWordObj FileNewend这段代码将会打开WORD 并自动建立一个新的文档(当然前提是你的机子上安装了WORD) 这看来很有趣 也是一种非常有用的功能 那么如何让我们的程序也拥有类似WORD等的自动化功能并能让其它任何语言开发的程序对我们的程序进行自动化呢?用DELPHI来实现非常简单

这篇文章将会以实例形式一步步的来说明如何开发一个简单的自动化服务器

新建一个普通的应用程序 将工程保存为AutoSrv bpr 在主窗体上放一个Edit控件 并保存为MainForm pas 在这里我们打算给这个程序加上对窗口标题 窗体颜色 和Edit控件文本的自动化控制(当然这实现的功能很少 但对于讲解如何开发自动化服务器程序足够了) 在主窗口中加入如下代码:(注意:请自行将这些函数和过程的声明加入TForm 的public区)function TForm GetCaption: stringbeginresult := Self Captionend

procedure TForm SetCaption(ACaption: string)beginSelf Caption := ACaptionend

procedure TForm SetColor(AColor: TColor)beginSelf Color := AColorend

procedure TForm SetEditText(AText: string)beginSelf Edit Text := ATextend然后我们来给这个程序加上自动化的功能 点击New Items按钮 在弹出的New Items窗口中点击ActiveX选项卡 选择Automation Object点击OK按钮 在弹出的Automation Object Wizard窗口中CoClass Name一项中输入MyAutoSrv Delphi就会自动生成一个AutoSrv_TLB pas文件(类库)和实现类库接口类的单元 将这个新的单元保存为AutoSrvClass pas.

现在这个程序已经成为一个自动化服务器了 我们再来为其加上自动化的接口函数:( )点击View >Type Libray菜单 在Type Library Editor选择IMyAutoSrv接口 点击New Property 选择其属性为Read|Write 并把其命名为Caption Type设定为BSTR ( )点击New Method 将其命名为SetColor 点击右边的Parameters选项卡 点击ADD为新添的接口函数添加一个参数 将参数名设为AColor 参数Type设为OLE_COLOR ( )再次点击New Method 将其命名为SetEditText 以上面的方法为其添加一个参数 将参数名设为AText 参数Type设为BSTR

最后添加上接口函数的实现代码就OK了:在AutoSrvClass pas的Uses部分添加上MainForm 并将其代码改为如下代码 unit AutoSrvClass

{$WARN SYMBOL_PLATFORM OFF}

interface

usesComObj ActiveX AutoSrv_TLB StdVcl MainForm

typeTMyAutoSrv = class(TAutoObject IMyAutoSrv)protectedfunction Get_Caption: WideStringsafecallprocedure Set_Caption(const Value: WideString)safecallprocedure SetColor(AColor: OLE_COLOR)safecallprocedure SetEditText(const AText: WideString)safecall

end

implementation

uses ComServ

function TMyAutoSrv Get_Caption: WideStringbeginResult := Form GetCaptionend

procedure TMyAutoSrv Set_Caption(const Value: WideString)beginForm SetCaption(Value)end

procedure TMyAutoSrv SetColor(AColor: OLE_COLOR)beginForm SetColor(AColor)end

procedure TMyAutoSrv SetEditText(const AText: WideString)beginForm SetEditText(AText)end

initializationTAutoObjectFactory Create(ComServer TMyAutoSrv Class_MyAutoSrv ciMultiInstance tmApartment)end 运行这个程序一次 将会自动注册为自动化服务器 可以在注册表中的HKEY_CLASSES_ROOT主键下面找到其相关的注册信息

上面演示了如何开发一个自动化服务器 在这里我们将调用它 新建一个程序 添加一个Button 在其VAR区声明一个Variant变量: AutoSrv: variant再在Button 中添加如下代码 procedure TForm Button Click(Sender: TObject)beginAutoSrv := CreateOleObject( AutoSrv MyAutoSrv ){这个字符串就是自动化服务器的工程名加上CoClass Name}Self Caption := AutoSrv CaptionAutoSrv Caption := HEHE AutoSrv SetColor(CLRed)AutoSrv SetEditText( HAHA )end其中的CreateOleObject函数将会返回一个IDispatch类型的接口 正是IDispatch接口让我们的程序可以对自动化服务器接口的调用进行后期连接 比如我们在上面添加一句AutoSrv Hello 程序也能被编释通过 但在执行时就会出错 使用Variant在执行效率上会比直接使用接口声明要慢一些 运行并点击按钮 可以看到自动化服务程序被加载 并按我们的代码设置了窗体色和EDIT 中的字串 呵呵 是不是很简单啊?

lishixinzhi/Article/program/Delphi/201311/24993

关系数据库体系结构与客户/服务器模式

关系数据库概述

关系数据库被定义为一种特殊的数据库 其中各个文件(称作关系)以平面文件(FlatFiles)或表的形式保持数据 表必须只含有一种记录类型 每个记录具有固定数目的字段 所有字段皆显示命名 表内的字段内容是各不相同的 不允许重复组(repeating groups) 不含有复制记录和预定的记录序列

在构造关系数据库时 必须特别注意关系的内容以及记录的各属性(字段)之间的内在联系

关系数据库上的基本操作有选择 投影 连接和除法 选择建立一个含有与原始关系相同列数的新表 但是行只包括那些满足某些特写标准的原始关系行 投影操作指定将被选择的列 因而形成的表只含有原始表列的一个子集 如果在投影操作删除的列中有两个行不同 那么将只有一个记录被转入新的关系 连接操作从两个或多个表中组合信息 两个表中的公用字段用作组合记录的基础字段 在公用字段中具有相等值的记录被连接在结果关系内

关系数据库实现的任务

实现关系数据库所涉及的任务分为三组

● 为DBMS定义数据库结构的任务

● 将数据库分配给物理存储介质的任务

● 建立数据库数据的任务

执行这些任务的方法取决于所采用的DBMS产品

各种不同的DBMS产品提供定义数据库结构的实用程序 这些实用程序使用一种专用的数据定义语言(DDL) 某些DBMS产品含有一些规定 一旦数据库已被定义到DBMS 即将该数据库分配到物理介质 根据应用程序处理的特点 数据可以定位在指定表上或定位在同一磁盘上 它有些DBMS产品偏重于数据库数据的建立

如上所述 数据库定义 存储分配以及数据建立过程都将取决于应用需求和所选择的特定DBMS产品的特征

关系数据操作

为了开发数据库应用 需要使用一种语言来表达处理逻辑 关系数据操作语言共有四类

● 关系代数 它是一种语言 提供一组远算符处理关系数据库中的关系

● 关系演算 它是一种语言 在该语言中用户指定一组来自关系数据库内数据操作的结果

● 面向变换的语言 它们构成一类非过程语言 这类语言将表示为关系的输入数据变换成表示为单个关系的结果 SQL就是一种面向变换的语言

● 面向图形的系统 它们为用户提供一个关系结构的图形 如Borland的Paradox 和IBM公司的QBE(Query By Example)

用户可以采用多种方法与关系数据库进行联系

● 某些DBMS产品 包括有生成表格的工具并提供表格和报告的处理

● 通过查询语言提供一个接口 它们执行查询和更新功能 最重要的查询语言是SQL

● 与关系数据库联系的第三种方法是通过应用程序

扩展关系系统

众多的销售商都在积极扩展关系模型 这些扩展包括在关系表中存储复杂数据类型 存储过程 触发器以及二进制大对象(BLOB) 目前正在SQL 标准中考虑的SQL扩展将包括对对象的进一步支持 还有可能包括对用户定义数据类型及嵌套表的支持 向关系模型提供对象扩展的产品包括Sybase Informix Oracle和Borland

    SQL:集成客户/服务器体系结构的基本链路

SQL为前面讨论的集成客户/服务器体系结构提供一条基本链路 目前美国国家标准局(ANSI)已认可SQL作为操作数据库的正式工业标准 它是许多数据库管理系统(DBMS)产品都采用的数据存取语言

SQL允许用户在关系表数据上进行查询 建立新表 存取现有的远程表 操作数据 建立应用程序存取SQL数据 运行SQL语句 处理错误以及访问多个服务器 SQL数据库服务器是多用户关系数据库管理系统(DBMS)

SQL可以作为一个查询语言用于交互式使用或嵌入在应用程序中 在执行查询时 SQL接受一个或多个关系作为输入并产生一个关系作为输出 结果是一个表或平面文件 例如 一批不含有重复组的同一类型记录 在查询多个表时 SQL将这些表连接起来 SQL内还含有一些规定 用来向表中插入新数据 从表中删除数据或修改表中的数据

各种数据库服务器功能介绍

服务器数据管理包括若干软件 它们使用户可以访问网络中的任何节点以及确保多用户环境下的保密性 可恢复性和完整性 如前面所提到的 客户/服务器计算中的基本存取链路是SQL 它是一种高级非过程数据库语言 现在已开发出很多支持SQL 的后端服务器及DBMS 下面将描述这些产品

DB

DB 是一种由IBM公司开发的RDBMS 它使用SQL执行所有的数据库操作 数据定义 数据存取 数据操作以及授权功能 SQL语句由用户在一个客户机节点从键盘输入或嵌套在应用程序中

DB 的结构包括表 视图 表空间 索引 索引空间 数据库和存储组 这种RDBMS提供有允许用户动态建立和修改这些结构的工具 DB 还包括一些并行处理软件 以控制和限制干预 后备和恢复功能以及安全性保证等

并行处理通过锁来完成 当应用程序读数据库数据时 DB 在该数据上获取一个共享锁 允许其他应用程序读这个相同的数据 如果一个应用程序需要修改数据 那么DB 将一个互斥型锁放在该数据上 以阻止其它应用程序访问这个数据 DB 还提供一些关于锁的级别或锁的大小的任选项

DB 周期性地存储并检查所有数据库变化 所有驻留在系统缓冲区中的变化被写到数据库 并将一个变化的记录载入日志 以最近一次写到日志的变化起所建立的全部映像可用于完成系统故障的恢复 DB 包括一些用来从备份拷贝重新建立数据库的实用程序 这种实用程序含有一个选择项 允许用户只拷贝表空间中那些自最后一个备份后新被修改的页面

DB 还含有一些用来保护数据库的安全性规定

Borland对象成分体系结构(BOCA)

BOCA建立了一个既考虑开发工具又考虑数据库管理工具的客户/服务器体系结构 它将一级面向对象的工具 中间件和数据库服务器技术集中在一起提供客户/服务器的解决方案 该体系结构的组成部分有

先进的面向对象工具

Borland建立有广泛基础和紧密集成的面向对象的工具 这些工具充分利用了当前客户/ 服务器变革的优点 使用面向对象的方法学 建立了如下产品 Borland C++ Borland Delphi Paradox QuattroPro Visual dBase以及ObjectVision等

IDAPI

IDAPI(集成数据库应用程序设计接口)是Borland公司的SQL连通性解决方法 IDAPI使得开发人员能够以更高的效率建立数据库应用 允许用户在多种硬件和操作系统平台以及网络环境下访问 以多种数据库格式存储的数据

InterBase

InterBase是一种分布式SQL数据库服务器 它支持每个数据库系统查询数据并将信息返回到其它任何一个InterBase服务器 InterBase 的可变体系结构代表了关系系统技术的第三次浪潮 可变引擎使得InterBase可以以最少的锁支持高效事务处理和决策支持事务处理

Borland公司的面向对象技术使得开发人员可以通过构造模块化的应用成分来建立复杂客户/服务器系统 这些模块化应用成分可以很容易地开发 测试 维护和增强 并可方便地装配到复杂的应用程序包中 此外Borland公司的可视化技术极大地提高了软件生产率

Informix SQL服务器系列

Informix公司推出了多种产品来满足特定的客户/服务器需求 它们包括Informix On Line Informix TP/XA Informix Star Informix On Line/Optical和Informix On Line工作站版

Informix On Line是一个联机事务处理(OLTP)数据库服务器 具有可用性 数据完整性以及多媒体数据管理能力 它建立有效的数据存储方法进行快速数据存取 缓冲数据于内存最低限度地使用磁盘存取 利用多处理器特征 允许不同处理器同时存取 以及自动确定是有效的搜索策略等 从而获得极高的性能

Informix TP/XA将On Line连接到事务处理管理程序 支持那些涉及多个数据库以及多个DBMS(由不同的销售商提供)的事务处理 在众多RDBMS中 Informix 第一个向依从于X/Open XA的事务处理管理程序提供了这种基于标准的接口

Informix STAR是一种用于On Line的分布式客户/服务器数据库产品 它提供最佳的性能 并且具有最小的网络通信量 站点透明性以及在不同站点操作数据库的高度可靠性

Informix On Line/Optical是一种针对On Line用户的附加产品 这些用户想在他们的数据库系统上使用具有大容量存储能力的光学设备 On_Line/Optical允许用户在 写一次读多次 (WORM)的光学子系统上存储BLOB 用户必须拥有On Line/Optical On Line和一个光学子系统 那当然 如果没有这个On Line/Optical产品用户仍可以使用On LIne在磁存储设备上操作BLOB

Informix On Line工作站版是On Line管理员手册的图形化版本 该工作站版具有与硬件版本相同的技术内容 但它是构造在一个窗口化 点一揿式(Point and Click)图形接口 采用关键字交叉查阅 这使得用户可以在某一窗口中存取所需信息的同时 在另一窗口中配置监视或调节On Line

lishixinzhi/Article/program/Delphi/201311/25138

客户/服务器的开发工作涉及定义客户/服务器的体系结构 然后再将该结构与其它一些对于客户/服务器的实现至关重要的系统结构和技术集成起来 Delphi 的Client/Sever版支持用户开发客户/服务器结构的应用程序 本章中我们将阐述客户服务器体系结构原理 如何用Delphi构建客户/服务器的环境和Delphi存取远程SQL服务器的编程和注意事项

Delphi客户/服务器应用开发原理

客户/服务器体系结构

体系结构概述

客户/服务器系统的体系结构有以下两个特点

● 是集合智能用户工作站作为有效平台使用

● 平台和软件之间的互操作性

客户/服务器结构包括连接在一个网络中的多台计算机 那些处理应用程序 请求另一计算机的服务的计算机称为客户机(Client) 而处理数据库的计算机称为服务器(Server) 所有用户都拥有他们自己的计算机来处理应用程序

客户机计算机可以是大型机 小型机或微机 但是由于微机具有成本的优势 因而通常选择它们作为客户机 同样地 服务器通常是一台微机但在需要较大能力时 也可以使用一台大型机或小型机 在数据库环境下 通过若干称作中间件(Middleware)的程序设计接口 客户机可以与服务器通信 这些接口提供应用程序和数据库之间的连通性

客户/服务器结构也可以包括多个服务器 然而在这种情况下 每个服务器必定只处理一个不同的数据库或提供一个唯一的服务 (注意 使用两上或多个服务器来处理同一个数据库的结构不认为是客户/服务器系统 相反它是一个分布式数据库系统〕

表 归纳了计算机在客户/服务器系统中的既定作用

表 客户机和服务器计算机的作用

━━━━━━━━━━━━━━━━━━━━━━━━━━━

客户机功能         服务器功能

───────────────────────────

管理用户接口        从客户机接受数据库请求

从用户接受数据       处理数据库请求

处理应用逻辑        格式化结果并传送给客户机

产生数据库请求       执行完整性检查

向服务器发送数据库请求   提供并行访问控制

从服务器接收结果      执行恢复

格式化结果         优化查询和更新处理

━━━━━━━━━━━━━━━━━━━━━━━━━━━

客户机概述

如上所述 客户机运行那些使用户能阐明其服务请求的程序 并将这些请求传送到服务器 由客户机执行的计算称为前端处理(front end processing) 前端处理具有所有与提供 操作和显示数据相关的功能

客户机软件由网络接口软件 支持用户需求的应用程序以及实现网络能力的实用程序【例如电子邮件(E Mail)和群件(Groupware)】组成 网络接口软件提供各种数据传输服务 应用程序软件执行具体的任务 如字处理 电子表格和数据库查询生成 实用程序软件通常执行几乎所有网络用户都要求的标准任务

服务器概述

在服务器上执行的计算称为后端处理(back end processing) 后端硬件(back end hardware)是一台管理数据资源并执行数据库引擎功能(如存储 操作和保护数据)的计算机 在大型机环境下 后端网络(back end neork)提供大型计算机至大容量存储设备 控制器以及文件服务器的连接 在识别 评价和选择适当的服务器平台时 必须考虑将由该平台提供的服务 例如 一个数据库服务器可能需要快速处理能力 其他可能需要执行的网络服务有通信 应用程序 文件访问以及只读存储器(CD ROM)服务 随着新的应用技术的广泛使用 可被提供的潜在服务还将继续增加

服务器软件既包括遵循于OSI或其它网络结构的网络软件 又包括由该服务器提供给网络上客户机的应用程序或服务软件

中间件概述

中间件是一个软件层 它保护应用程序开发人员避免受到各种通信协议 操作系统以及数据库管理系统的影响 它为建立可与以前沿袭下来的应用程序并存的新应用程序打下了基础

中间件有好几种类型 它们包括应用程序设计接口(API) 远程过程调用(RPC) 网络通信 数据库访问以及计算机辅助软件工程(CASE)工具

由于客户/服务器系统需要集成各种不同结构的机器和技术 因而应用程序设计相当复杂 选择适当的中间件可以消除程序设计人员为每个单独协议和操作系统编写代码的麻烦

lishixinzhi/Article/program/Delphi/201311/25137


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/251836.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-14
下一篇2023-04-14

发表评论

登录后才能评论

评论列表(0条)

    保存