增强的数据库浏览器
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模型一样建立映像模型, 并且用类将数据库的数据封装起来.
增强的EcoSpace设计器
EcoSapce 的功能在Delphi 2005中得到很多的增加, 包括拥有产生默认的XML模型映像文件, 将ECOI的数据库格式转为ECO II的格式, 拆包/包装一个现存的数据库. EcoSpace设计器同时增强了气泡式提示, 显示当前一系列需要完成任务的列表, 例如下图的PersistenceMapperBdp.
Delphi 2005 ECO II 设计时气泡式提示
工作任务列表会自动检查, 所以, 你永远都会得到一个最新提示, 提示你什么是已经完成的, 那一步还需要继续工作.
另外一个用气泡提示的例子, 当你打算打开一个新的ECO包时, 气泡提示会显示所有你选择的ECO包中定义的类名.
ECO II 项目对象
Delphi 2005 现在能产生几个不同的ECO II项目. 对于C#类型, 我们能创建一个ECO ASP.NET Web应用程序, 或者ECO ASP.NET Web Service, 或者 DLL中的ECO Package(所以我们能在另外的项目中引用这个EcoSapce来使用对应的DLL), 还有ECO WinForms 应用程序. 对于Delphi for .NET类型, 我们能创建ECO ASP.NET Web 应用程序, ECO ASP.NET Web Service和ECO WinForms 应用程序.
2.7 ALM
Delphi 2005 内嵌支持Borland 应用程序生命周期管理套件, 包括CaliberRM, StarTeam, 和 Janeva
整合StarTeam
StarTeam 提供源码版本控制的支持, 包括需求管理, 缺陷跟踪, 分组讨论记录, 远程协作开发. Delphi 2005 包含一个内置的StarTeam客户端, 可以从菜单StarTeam或者项目管理器的右键菜单中调用, 你可以在Delphi 2005 的IDE界面中操作StarTeam. 你能将一个项目放到StarTeam中, 可以检出文件, 也可以导入文件, 或者恢复到以前旧版本的代码. 锁定或者解锁StarTeam仓库中的文件, 等等操作.
此外, 历史管理器还支持StarTeam, 所以, 可以在本地的备份中或者StarTeam的仓库中访问,比较和恢复备份的文件.
内置Janeva
Delphi 2005 内置支持Janeva(在企业版和设计师版). Janeva能用来联接.NET客户端(C#或者Delphi for .NET编写)到 J2EE的EJB 或者 CORBA 对象中. 当安装了janeva(也就是安装了Janeva IDE 插件), 在项目管理器的项目节点上会新增两个菜单, Add J2EE Reference... 和 Add CORBA Reference..., 可以用来增加特定的引用.
菜单Add J2EE Reference...在你选择从一个.jar文件选择一个EJB时会出现一个对话框, 而当你Add CORBA Reference...会在你选择一个包含接口定义的CORBA对象的.idl文件时显示一个对话框.. 在导入.jar或者.idl文件后, 你将得到一个原生对象, 它可以直接在.NET客户端使用, 现在将不再需要额外的层(象Web Service 或其它网关类软件), 而是利用 Janeva 装配器直接联接到J2EE EJB或者CORBA对象上. 以前版本的Janeva插件(C#Builder带的)能产生C#代码, 但Delphi 2005 产生的装配件可以被任何.NET语言使用. 现在的Janeva 插件向导会根据janeva客户端软件产生相应的参数, 然后自动产生对应的app.config 文件.
*Janeva 要求分发你的应用程序时要带有运行时许可证, 你可在Borland 的销售许可中找到
2.8 编绎器/语言/调试器
Delphi 2005 编绎器, 语法, 调试器都有不少增强.
编绎器和语法的增强
Delphi 2005 编绎器实现了几个性能有关的增强, 使编辑速度加快了. 编绎器现在已经支持Unicode和UTF8格式的源代码文件, 可以使用Unicode来定义标识符和符号.
For ... in ... do
Delphi 语言增加了一个新的 for-loop 语法. 和 foreach 结构类似. 这个强大的特性可用来迭代访问一个集合的值.
内联函数
Win32和.NET的Delphi语言都增加了内联函数, 使用它能提升程序的性能. 它取代了直接呼叫例程, 而是直接将被呼叫的例程的代码放到呼叫代码的位置(节省了呼叫和返回的时间, 还有参数管理的时间). 这个对小的例程, 不在同一单元范围的例程, 或者带有多参数的例程非常有用. 而对大的例程, 在应用内联之前要仔细考虑效率和生成代码大少之间的利弊.
我们能直接用inline来标识一个内联例程, 还可以使用{$INLINE AUTO}这个编绎指示. 后一个操作, 会让编绎器自己选择那些看起来会提升系统性能的例程进行内联. 使用{$INLINE ON}编绎指示是你指定了从这个编绎指示开始的例程都将用内联方式.
有很多反对者认为在编绎器中并没有实现内联, 例如, 即使你能内联包(装配件)中的不内单元的例程,你不能跨包进行内联. 同样, 不可能内联虚方法, 动态方法或者消息方法, 同样不能内联接口和dispinterfaces.
多单元命名空间
上一个版本的Delphi for .NET 编绎器采用了将一个单元映像到一个命名空间的方法(这样单元的名字将就是命名空间的名字). Delphi 2005 中扩展了这种方法, 现在一个命名空间可以由几个单元组成. 例如带一个单元名为Comp.Group.MyUnit.pas, 左手边的Comp.Group是命名空间的名字, 而MyUnit.pas就是在命句空间里的一个局部单元范围. 这个可以让我们使用多个单元而设置他们同属于一个命名空间(处理ASP.NET 的自定义控件是, 现在能用一个单一的控件前缀).
Delphi2005新的命名空间功能带来的另一个效果是, 现在有可能使用Delphi2005来给现存的命句空间扩展功能. 例如, 可以新增一个MyUnit.pas单元给System Web 命名空间扩展新的类和类型 护展了的命名空间将成为所有包含System.Web.MyUnit.pas的应用程序和装配器的一部分.
增强的调试器
Delphi 2005 Win32的调试器现在增强了对没有带调节试信息的Win32堆结构的支持. 当在IDE中调试时, 还带有一个专门处理异常的对话框. 当一个异常被引发时, 将会有一个对话框弹出来让你有机会选择忽略这个异常类型 还是检查这个异常对象, 包括一个选项来决定是真正引发还是继续执行.
断点列表
内置编辑器也加强了断点列表, 现在很适合用在条件句中或者群组中, 启用和停用断点可以简单的在一个CheckBox 列表选择就可. 这样就不用弹出一个对话框选择, 可以加速设置断点.
Delphi 2005 带有可编辑字段的断点列表
在断点窗口还有新的工具条.通过它你能直接删除一个断点, 或者删除全部, 或者使全部立即都启用, 或者编辑某个断点的属性.
新的调试视图
Delphi 2005 包含4个新的Delphi 窗口. Borland Delphi8 for .NET提供了断点的调试窗口, 调栈窗口, 监视窗口,线程和事件日志. Delphi 2005 增加了FPU, 本地变量, CPU和模块窗口.
Delphi 2005 现在还提供了一个模块窗口, 可以显示应用域, 并且允许你操作应用域中的命名空间和配件的细节. 你能够按名字或者基地址来排序显示模块.
CUP窗口是显示当前源码, 它能显示IL(中间语言)和本地机器汇编语言,还有伪代码
Delphi 2005 混合Pascal, ILASM和机器码的CPU 窗口
并行调试
使用Delphi 2005 IDE不仅可以用项目管理器同时装载多个项目, 你还能同时运行Win32和.NET调试器。 你可以在同一个开发环境中调试Win32和.NET应用程序. 你甚至可以同时运行两个调试器, 在项目管理器中切换到不同的项目(从一个语言切换到另外一种)
总结
这个白皮书介绍了Delphi 2005 的关键新功能, 也介绍了一些已存在的技术的增强部分.
就如你所看到的, IDE拥有一个增强的欢迎页, 支持多语言, 备份历史文件支持(可选择内嵌的StarTeam), 浮动的VCL设计器, 同步编辑器, 实时错误提示, 实时帮助提示, 结构视图, 帮助查找, 更好的检索查找结果的功能, 工具面板向导帮助你更快的开始一个新项目.
重构也是Delphi 2005 中的一个重要的新特性, 提供了重命名符号, 声明变量, 声明字段, 抽出方法, 抽出资源字符串,到导入命名空间.
另外一个额外重大的支持是DUnit和NUnit单元测试, 内置于IDE的测试项目和测试例程向导.
在数据库方面, BDP组件更新了新的驱动, 增加了BdpCopyTable 组件, DataSync t DataHub组件来支持异构的数据库. 而RemoteServer新增了RemoteConnection组件来编写三层的.NET数据库应用(DataSync 和 DataHub, 如果你需要, 可以甚至是异构的数据库或者三层).
对于Web开发, ASP.NET的调试器得到增强, 新增了dbWeb控件来处理计算的数据, 声音, 视频和导向条事件, 支持DataGrid和DataList的模板编绎器, 最后, intraWeb同时支持Win32和.NET WEB应用开发.
企业核心对象(现在是ECO II)也加强了支持可伸缩性, 分布式开发, 支持ASP.NET(普通的和dbWeb控件), 并且具有在ECO模式中映像到已存在数据库的能力.
Delphi 2005 提供内嵌的Borland ALM工具, 包括StarTeam,和Janeva(可以联接J2EE和CORBA服务器).
最后, 但不是最不重要的, 在编绎器和Delphi语言的许多方面都得到增强,如新的 for…in 循环, 内联函数, 跨单元命名空间. 调试器得到增强, 使用了更好的断点列表新的.NET调试窗口, 和并发的Win32和.NET项目调试.
有史以来最好的Delphi
无论你的目的是在Microsoft Windows操作系统还是在Microsoft .NET1.1框架版本下开发组件或者应用程序,, Delphi 2005 对现代Windows开发提供了广泛的, 高生产力的, 高质量的支持。