VT(V1.10)+RC(V1.20)+RD(V1.20)_D7(RPC+三层数据库框架)

关键字: RPC 三层 数据库 框架
来 自: 转载
平 台: Win2k/XP/NT,Win2003
编辑器: DELPHI7 发布时间: 2009-11-20
分 类: 数据库控件 下载浏览: 432/1137

VT(V1.10)+RC(V1.20)+RD(V1.20)_D7(RPC+三层数据库框架)免费版(带绝大部分源代码,暂保留 uVTStreamUtils.pas 和 uRDDataResolver.pas 的源代码),可免费使用,版权保留。
编译环境为 D7,暂无帮助文档。
作者:荆棘;2CCC 帐号名是 syncgrey;欢迎加群 7689125。

一、使用方法
1.解压后,把 kbmMemTable,VT,RC,RD 四个路径添加到 Delphi IDE 路径中,如果已安装有 kbmMemTable,则不要加入 kbmMemTable 路径。
2.如果装有旧版本,请先卸载掉;卸载后最好先关闭 D7 IDE,开始-->运行,输入 regedit,回车,定位到 HKEY_CURRENT_USER\Software\Borland\Delphi\7.0\Palette,删除右侧的 RemData 或类似于 RemData.Hidden* 的键值。
3.依次编译并安装以下三个包:VT\SG_VTLibrary_D7.dpk、SG_RCLibrary_D7.dpk、SG_RDLibrary_D7.dpk。
4.Demos\RCFirstDemo 文件夹中,有 RC 远程方法调用的例子,并附有详细注释。
5.Demos\MegaDemo 文件夹中,有 RD 数据库操作的例子,分别生成运行 RDMegaDemoServer.exe 和 RDMegaDemoClient.exe(运行 DEMO 需要开启 SQL Server)。

二、版本更新历史

VT 1.10(2009-11-19)
  1、uVTObjectPools.pas 类名增加 VT 前缀,新增 TVTThreadComponentPool 线程安全对象池,TVTInterfacePool 接口实例池,TVTThreadInterfacePool 线程安全接口实例池。
  
RC 1.20(2009-11-19)
  1、新增了一个 TRDLocalADODataSet,功能同 TADODataSet 一样,主要是为了保持本地数据库操作时的接口一致。(2009-11-10)
  2、RC 的 MethodName 增加 Cardinal 编译选项,可在 AnsiString 和 Cardinal 之间切换,增加 Cardinal 是为了支持 D5、D6,因为 D5、D6 不支持 {$METHODINFO} 编译选项。(2009-11-10)
  3、修正了 TVTRCService._Release 中引用计数为 0 时不自动释放的问题。(2009-11-18)
  4、TVTRCServer 增加 ServerName(节点名)和 ServerLocators(其它服务节点定位表)属性,对于不是发给本节点的请求,会转发给正确的目标节点。
  5、TVTRCClient 增加 ServerName(节点名,默认留空)、Username、Password(用户名和密码)属性,增加 OnSendRequest、OnReceiveResponse、OnException 事件;TVTRCService/TVTRCServiceModule.Activate 方法中,增加了 Username 和 Password(与 TVTRCClient 中的同名属性对应)参数,提供简单的用户身份验证。
  6、修正了 TVTRCIndyTCPServer 动态更改端口号无效的问题(现在直接用 TVTRDIndyTCPServer.Port := 端口号)。
  7、增加 TVTRCLocalServer 和 TVTRCLocalClient。
  8、其它一些类属性的调整。
  
RD 1.20(2009-11-19)
 1、增加 TRDClientDataSet ctSQLText 模式下对 Where 的支持。(2009-11-10)
 2、修正了 NativeCommandText(经过 ParseSQL 的命令文本)后面的乱码字符。(2009-11-10)
 3、TRDConnection 增加 UseDataLinkFile 属性,可直接使用 DataLink 文件。(2009-11-10)
  4、修正了 TRDDataProvider.AS_UpdateData 中 Resolver.Connection 未置 nil,在程序退出时 TRDConnectionManager 先于 IRDConnection 释放而导致的问题。(2009-11-18)
  5、TRDDataProvider 增加 OnExecSQL 事件,可在这里获取执行的 SQL 语句和参数表。
  6、其它一些类属性的调整。
==========
1.01(2009.11.3):
 1、公开 uRDDataProvider.pas 的源代码。
 2、uRDBinDataStreamer.pas 添加 ftBytes, ftVarBytes 字段的流化代码,直接作为字符串处理。
 3、RC 库更新:把原来的 TVTRCService 更名为 TVTRCServiceModule,增加一个非可视化服务类 TVTRCService;把 ClassFactory 对服务的引用改为接口模式。
==========
1.00(2009.10.15):第一个公开版本

三、功能简介

VT 库
uVTAnsiStrUtils.pas:AnsiString 的辅助处理单元,其中部分代码从 QStrings 提取并作了改名处理。
uVTObjAuto.pas:从 D2009 中提取的 RTTI 库。
uVTObjectPools.pas:原创的对象池类。
uVTStreamPacket.pas:原创的二进制打包类,依赖 uVTStreamUtils.pas。
uVTStreamUtils.dcu(暂不公布源代码):原创的数据二进制流化库,可自动流化不包含对象或本地指针(AnsiString、WideString、Variant 除外)的静态数组、动态数组和结构体,,比如下面示例的类型都可正确流化:
  PRDParamInfo = ^TRDParamInfo;
  TRDParamInfo = packed record
    Name        : AnsiString;
    DataType    : TFieldType;
    ParamType   : TParamType;
    Size        : Integer;
    Precision   : Integer;
    NumericScale: Integer;
    Value       : Variant;
  end;

  PRDParamInfoArray = ^TRDParamInfoArray;
  TRDParamInfoArray = array of TRDParamInfo;

  TRDParamInfosArray = array of TRDParamInfoArray;
  
  PRDDataRequestInfo = ^TRDDataRequestInfo;
  TRDDataRequestInfo = packed record
    ConnectionName    : AnsiString;
    CommandText       : AnsiString;
    CommandType       : TRDCommandType;
    IncludeSchema     : Boolean;
    MaxRecords        : Integer;
    Params          : TRDParamInfoArray;
    PagingInfo        : TRDDataPagingInfo;
    ConditionInfoArray: TRDConditionInfoArray;
  end;

  TRDDataRequestInfoArray = array of TRDDataRequestInfo;
  
uVTStrings.pas:原创的字符串列表类,可通过编译指令,在 AnsiString 与 WideString 版本之间切换。
uVTStrUtils.pas:原创的字符串函数库,可通过编译指令,在 AnsiString 与 WideString 版本之间切换。
uVTThreadLists.pas:线程安全的列表类。 
uVTThreadTimer.pas:一个从 RO 中提取的线程定时器类。
uVTTypes.pas:类型声明单元。
uVTTypInfo.pas:从 System.pas 单元提取出来的 RTTI 函数,这些函数默认情况下 Delphi 无法访问,主要用于结构体和数组的流化和反流化。
uVTVariantUtils.pas:Variant 函数库。
uVTWideStrUtils.pas:从 Tnt 中提取的 WideString 处理函数。

RC 库(小巧高效的 RPC 框架)
1、采用二进制编码、解码,体积小,速度快。
2、带有服务池功能,避免对远程服务类的重复创建释放。
3、能将服务端的异常服务带到客户端。
4、可根据需要方便的扩充通讯协议通道。

RD 库(三层数据库框架,整体框架类似 DA,个人感觉比 DA 小巧易用)
1、客户端的数据库无关性:数据中间件可通过增加数据库驱动以支持新的数据库,切换数据库驱动以改变所使用的数据库类型。
2、支持数据库连接池功能,并带有连接超时机制。
3、中间件可把业务逻辑封装成 Scheam 中,向客户端提供 LogicalName,客户端通过 LogicalName 向中间件请求服务,避免了客户端对 SQL 语句的直接使用。
4、客户端支持直接执行 SQL 语句来取数据或更新数据。
5、客户端支持批量更新方式。
6、客户端在 ctLogicalName 模式下,支持分页显示或分批取数据。
7、用户可方便的扩充编写自己的内存表类、数据打包类。
8、中间件可自定义插入、更新、删除语句。
9、客户端支持简单的 ORM。

下载页面