2.4 数据库
Delphi 2005 提供对ADO.NET , VCL, VCL for .NET 的数据访问做得一样的好!
ADO.NET 数据访问支持
Delphi 2005 实现了不少数据访问功能的增强, 最显着的是ADO.NET 方面, 但在BDE, dbExpress和新增的dbGO for ADO.NET 也有不少改进.
增强的Borland 数据提供者
现在有不少ADO.NET对应的Borland数据提供者得到改进, 包括支持 interBase 的Boolean 字段, Oracle 包机制, 本地数据表支持, 获得数据结构表, 还有支持 Sybase 12.5.
还有如下的经过认证的BDP ADO.NET 数据提供者驱动: Borland InterBase 7.5(也能在InterBase7.1,7.0和6.5上工作, 但没经过认证), Oracle 10g (同时也能在Oracle 9.2.0 和 9.1.0上运行), IBM DB2 UDB 8.x(能上7.x 上工作), 此外, 还能在Microsoft SQL Server 2000, Microsoft MSDE 2000, Microsoft Access 2000, 和Sybase 12.5上工作.
增强的设计器
数据库设计中一个重要组成部分ADO.NET设计器在Delphi 2005 中也得到增强. 增加了新的存储过程测试支持, 这样你就能测试指定存储过程, 包括输入参数, 然后运行存储过程并且检查返回参数的值(如果有的话)
Delphi 2005 测试SUB_TOT_BUDGET存储过程对话框
数据表映像功能帮助你为BdpDataAdapter指定映像到相应的数据表. 你能设定DataTable上的栏目到一个带有更具体描述的内存表DataSet中映射关系. 你也能增加或移除内存数据表中的栏目.
对象设计器现在也为SQLConnection控件提供了一个联接字符串编辑器, 允许你指定ADO.NET provider的联接字符串.
异类数据支持, BDP 远程对象
新ADO.NET控件中提供了RemoteServer 和 RemoteConnection这两个控件来支持快速开发三层的应用程序(使用.NET 远程对象的结构). 另外两个新的ADO.NET控件, DataHub和DataSync, 支持将不同类数据库聚合到一个数据集. 这四个控件能组合使用, 这会导致分布式应用程序会使用大量不同的ADO.NET数据提供者. 在这个结构, DataHub和RemoteConnection处于瘦客户层中, 而RemoteServer和DataSync 控件将处于服务层, 并联接到数据提供者.
BdpDataAdapter的自动更新功能也得到增强, 现在能解决多数据表更新, 并且能处理更多的错误情况.
数据迁移
BDP控件组中有一个特别的控件bdpCopyTable中支持数据迁移操作, 它使你能够将BDP支持的数据表复制到另外一种类型上.
数据集类型(.NET)
数据表类型现在能够编绎成标准.NET装配件. 它还支持Web Services的数据集. 项目管理器提供一个上下文相关的菜单来设置数据集中的关联和数据表编辑集合, 这样, 你能更方便的修改数据集类型
增强的数据库浏览器
BDP 数据提供者相应的数据库浏览器已经在几个地方作了增强。 现在可以简单的将数据从一个BDP数据提供者迁移到另外一个,这个功能能够允许你将一个数据表从一个BDP数据提供者复制另外一个上面. 这样会复制和重新建立复制目标数据表的元数据, 即使这个数据根本就是来之不同的数据源, 如将Oracle的数据迁移到MSSQL上.这和BdpCopy控件的行为类似.
数据库浏览器还有查看额外的元数据的能力, 并且允许你直接在数据库浏览器中查看和修改数据库模型, 你能直接在裹面创建新的数据表, 修改数据表还有删除存在的数据表.
同时, 你还可以直接在数据库浏览器中拖拉一个存储过程到窗体设计器中, 这样, 将会创建一个BdpConnection(如果需要)和一个BdpCommand实例, 并且自动设置BdpCommand的参数对应到指定的存储过程.
VCL和VCL.NET的数据库支持
Delphi 2005中对VCL和VCL.NET的数据库支持由BDE, dbExpress和 dbGo for ADO,以及InterBase Express(IBX)组成, 这些数据访问技术同时在于VCL和VCL.NET的项目中可用, 这样, 提供了一个无缝的升级Win32程序到.NET的方法.
dbGO for ADO
在创建一个VCL.NET的应用程序, Delphi 2005 现在同时支持Win32和.NET的 dbGO for ADO, 这样使移植Win32 dbGO for ADO的应用程序到.NET框架变为可能, dbGO for ADO控件需要安装MDAC 2.8 来支持.
dbExpress
dbExpress 控件组扩展了TSimpleDataSet来支持.NET, 并且提升了TSQLStoredProc的执行效率, 同时也对元数据进行改进.
下列的驱动现在已经通过认证可直接用在dbExpress: Borland InterBase 7.5 (同时也能使用 InterBase 7.1, 7.0 和6.5, 但没经过认证), Oracle 10g (能使用 Oracle 9.2.0 和 9.1.0), IBM DB2 UDB 8.x (能使用 7.x), Microsoft SQL Server 2000, IBM Informix 9.x, SQL Anywhere 9 (能使用 ASA 8), MySQL 4.0.x, and Sybase 12.5.
BDE
针对VCL和VCL.NET应用程序的Borland 数据库引擎(BDE), 用来支持本地的dBASE和Paradox数据集访问. BDE for .NET 版本现在已经改进, 不再需要指定路径, 能自动装载BDE相关的DLL文件了, 它还改进了访问BLOB的性能, 还新增了几个以前没有的, 针对.NET的BDE控件, 它们是: TUpdateSQL, TNestedTable, 和 TStoredProc.
IBX
InterBase Express (IBX)提供VCL和VCL.NET应用程序直接联接到InterBase 的功能.
2.5 Web
Delphi 2005 包含了大量在VCL(Win32和.NET)和ASP.NET下增强的Web开发技术.
Web部署管理器
Delphi 2005 亲增了一个Web部署管理器, 能使用在ASP.NET Web Form各ASP.NET WEB Service项目中, 同时期intraWeb能够同时适应VCL和VCL for .NET.Web部署管理器能够联接到目录(本地的或者网络上的)和FTP 目标. 部署管理器的窗口还能同时显示本地的文件(从项目目录中)和远程的文件(从目录或者FTP位置), 而且你只需单击一个选项就可实现整个项目的部署. 你还能执行比较, 移除文件等到操作. 部署的设置就与你的项目文件保存在一起, 所以, 你能以一致的配置方式在不同的时间部署你的项目. 这个是一种非常有效和快捷的部署方式.
除了支持ASP.NET和IntraWeb项目之外, Web部署管理器还能扩展来支持的其它不同的项目类型.
Web数据控件
Web 数据控件能用来编写功能强大的数据驱动的ASP.NET web 窗体应用. Delphi2005 引入了大量新的Web数据控件, 包括DBWebAggregateControl, DBWebSound, DBWebVideo, 和 DBWebNavigationExtender等,.
DBWebAggregateControl能用来显示数据集中各个栏目的聚合值, 实际上可能用来显示平均值, 计数值, 最小值, 最大值, 总额.
DBWebSound和DBWebVideo控件被加进来支持音频和视频格式. 可以通过一个DBWebDataSource控件联接到数据集对应的字段或给它一个URL路径.
DBWebNavigationExtender控件在下列这种情况下非常有用, 就是你想将数据修改发送到数据集, 而又不想使用DBWebNavigation控件时(特别是控件中那个ApplyToServer按钮). DBWebNavigationExtender是一个非可视化控件, 能被用来扩展标准的Web控件--如按钮—它带有的功能和DBWebNavigator的按钮一样. 所以, 你能用它来编写一个自己的导航条控件. 除了这四个新Web控件外, DbWebDataSource控件被扩展增加了一个OnAutoApplyRequest事件, 并且现在支持嵌套的更新和删除.
除了DbWebDataSource之外, Web数据控件现在还能联接到EcoDataSource—一个联接到ECO II ExpressionHandler的控件.
Delphi 2005 还提供了一个新的Web数据控件向导让你能编写兼容于ASP.NET控件的自己的Web数据控件(同样能联接到DbWebDataSource 或者 EcoDataSource)
Web数据控件现在支持XML缓存, 这个强大的功能能给web客户端实现一个服务端公文包.
Web 数据导航
Delphi 2005 Web数据控件现在拥有控制导航命令的功能, 它使用相应的导航API, 如RegisterNextControl, RegisterPreviousControl, RegisterFirstControl, RegisterLastControl, RegisterInsertControl, RegisterDeleteControl, RegisterUpdateControl, RegisterCancelControl, RegisterUndoControl, RegisterUndoAllControl, RegisterApplyControl, RegisterRefreshControl, 和 RegisterGoToControl.
服务端控件
ASP.NET的HTML类控件现在能在后台文件用代码表示成控件了, 通过选用”Run AS Server Control”这个选项, 将会增加一个 runat=server 属性到控件的脚本中, 这就好象在控件的源码文件中直接声明.
模板编辑器
Delphi 2005 现在为DataGrid和DataList增加了一个模板编辑器, 让你能够定义和更容易的编辑你自己定制的栏目模板.
IntraWeb
当使用VCL(Win32或者.NET)时, Delphi 2005 支持使用AtoZedSoftware (www.atozed.com)公司的IntraWeb来开发应用. IntraWeb允许快速的所见即所得式来设计Web应用程序, 很象ASP.NET, 但还是有很多地方不同. IntraWeb 对的优点就是对用户来说不用关心底层的HTML语法和能够帮用户管理网页的状态, 这些ASP.NET是做不到的. IntraWeb 类的WEB 应用程序和非可视化的VCL控件是兼容的, 如数据访问面板中的BDE, dbExpress, dbGo for ADO和InterBase Express(这个意味着可以从Win32迁移升级到.NET), 相反, ASP.NET的应用程序要拥有数据访问的能力必须使用原生的.NET控件, 如ADO.NET和BDP.
2.6 企业核心对象 ECO II
Borland C#Builder 1.0和 Delphi8带了第一版的ECO, 现在在Delphi 2005 中得到了极大的加强来适应有高伸缩性要求的企业应用开发. 相对初始版本, 在 ECO II有不少改进增强.
其中最重要的增强总结如下:
- 支持可伸缩性, 分布式应用程序
- 支持 ASP.NET ( Web Forms 和 Web Services)
- 支持映像到一个存在的数据库
- 针对易用性优化, 以使使用ECO流程更加容易
可伸缩性, 分布式应用
最重要的部分是, ECO II 现在具有企业级的伸缩能力. 相对第一版本的client/server 解决方案, ECO II 同时支持client/server 和远程解决方案. 当你编写有伸缩能力的ASP.NET或者WinForms应用程序时, 有几个可能采用的结构. 都非常简单易用. 在同进程中或不同多进程中, 想同步多个不同缓存对象如EcoSpaces 时, 可以用新增的PersistenceMapper来管理,. 同步持久性的映射关系可以在同进程内部自我执行, 或者, 更可能的情况, 在服务器中的一个进程运行.
ECO II and ASP.NET
现在使用Dephi 2005, 我们能够组合ECO II和ASP.NET一起使用, 同时适合ASP.NET Web窗体和ASP.NET Web 服务方式.Borland 的Web数据控件通过给EcoSapce绑定到一个新的EcoDataSource组件来导出对象, 这是用OCL的表达方式来输出一个数据源, 并且还能产生一个数据感知的ASP.NET WEB 窗体中. 同样的操作能适合任何常用的原生ASP.NET Web 控件. ECO 组件, 如ExpressionHandler, 能够提供一个可以当成DataSet 的元素列表, 并且可绑定到任何ASP.NET 组件上, 如DataList 和 DataGrid. 因为对ASP.NET应用程序提出的请求都是无状态的, 我们能够在session 或者在应用层次上维护EcoSpace的状态.
ECO II 使用乐观锁, 当发生冲突时, 会使用冲突决议来决定执行正确的动作.特别在当一个Eco Sapce检测到在后台数据库的数据和在EcoSpace中保存的”旧值”不同时, 它将会注册一个冲突到EcoSpace内部列表中. 开发者能调用RetrieveChanges来得到其它EcoSapces中发生的任何改变, 还可用GetChanges来收集未解决的冲突, 并决定如何处理(通常由最终用户控制决定如何解决)
Delphi 2005 设计时的ECO II ASP.NET Web 窗体
映像到现存的数据库
带有ECO II的Delphi 2005 现在有可能利用现存数据库来实现应用程序持久性. 它是利用一个新加强的使用XML文件模型驱动的对象-关联映像来实现. 这个强大的菜单达已存在的MS SQL server, ORACLE 或者 InterBase 数据库, 并且如UML模型一样建立映像模型, 并且用类将数据库的数据封装起来.
Delphi 2005 中将Northwind导入到ECO II模型