BorlandDelphi2005的启动画面
1,简介
BorlandDelphi2005是目前delphi的最新版本,提供了在MicrosoftWindows的操作系统和Microsoft.NET框架1.1版本下的快速开发环境,同时可用Delphi语言(适应win32和.NET1.1)与C#(只能适应>NET1.1)开发
产品总览
Delphi2005可以看成拥有三个不同的特性:一个使用Delphi语言(Delphi7的后继版本)的Win32特性,和两个.NET特性:一个使用Delphi作为开发语言(Delphi8的后继版本),另外一个使用C#作为开发语言.关于这裹说到的最后一个特性,Delphi2005是从BorlandC#Builder1.0升级而来的.
结论就是,Delphi2005是作为Delphi3到8和C#Builder开发者的下一个版本,它在Win32下的快速应用开发和在.NET框架下一样优秀.
关键特性
-支持三个不同的特性:DelphiforWin32,Delphifor.NET和C#都同处于一个开发环境(和调试环境)中.
-可以比较容易的在同一个开发环境中移植Win32应用程序到.NET中
-新增一些Delphi语言的新特性如多单元命名空间,for…in…do循环,内联函数,和其它的代码优化技术.
-支持WinForms,ASP.NETWEBForms在可视化环境中的开发,就如Borland自己在.NET和Win32上的VCL框架上应用程序的开发一样.
-支持异质的数据访问(可以使用所有的ADO.NET数据适配器—不仅仅是BdpDataAdapter),多层的数据应用开发可使用新的DataSync,DataHub,RemoteServer和RemoteConnection控件.
-支持重构来重新组织你的源代码,以便提升代码的可维护性和成功重用代码的可能性.
-支持DUnit和NUnit的单元测试,可以在DelphiforWin32,Delphifor.NET和C#项目中使用极限单元测试框架来来提高你代码的质量.
-支持ECOII(EnterpriseCoreObjectsII)-一种UML相应的对象模型框架和对象持久性,通过Borland数据提供者支持多种数据库,并且现在也支持ASP.NET.
-支持ASP.NET的DBWeb控件能使开发更简单的设计,开发和分发功能强劲的带数据驱动的Web应用程序.
-支持版本控制和团队开发,通过额外的插件StarTeam,能针对你的项目做特别的务份和提供一个历史列表视图,
-通过janevaforDelphifor.NET和C#应用程序的解决方案,内置支持J2EE企业级EJB,或者CORBA服务器.
2.BorlandDelphi2005
这个白皮书将能从不同的范围分类来讨论BorlandDelphi2005一些重要的增强功能.首先,将会提及到IDE方面的增强,接着是重构,使用DUnit和NUnit的单元测试,在数据访问和Web方面的增强,ALM的支持,最后谈到Delphi编绎,语言和调试器方面的增强.
2.1IDE
Delphi2005的可视开发环境(IDE)在下面提到的各方面都有了意义重大的扩展和增强.
欢迎界面
欢迎界面已经重新设计过了,不仅显示最近打开过的项目,还显示Borland开发者网络和RSS的最新新闻(需要到internet的联接)
多样化的特性
Delphi2005支持多样化的特性,体现在同时支持DelphifroWin32,Delphifor.NET,和C#项目.这裹有个小小的有用提示,一个个性化图标会在IDE工具条上显示当前选择的类型(DelphiforWin32对应,Delphifor.NET对应,而C#对应).
项目管理器
Delphi2005带的项目管理器现在能显示整个项目的目录结构(如果是ASP.NET项目,甚至还提供了在当前项目目录下创建和管理子目录的功能),这样能更直观的让你知道文件的放置位置和决定那个文件是要分发给用户的.在一个项目组中,我们能够增加项目到不同的目标中(和特性中),或者从一个项目移动到另外一个中—也就是将一个立即特性转到另外一个中.
现在项目管理器和对象检视器已经能够配合使用,只要你要项目管理器选择一个文件,对象检视器就会显示对应文件相关的信息,如文件名,文件的全路径,还会加上相关的属性如文化,名字,装配器的版本号,或者本地副本的选项,.大部分显示的属性是只读的(用灰色字体显示),当然,部分是能够改变的,如文件名,本地副本的状态,.项目管理器同时能感知StarTeam,并且在管理存储在StarTeam中的项目时,能根据输入命令提供相关的上下文感知提示.
备份和历史列表
BorlandDelphi2005在你的项目目录下提供一个隐藏的给你的源码提供简易的维护多级别务份和历史列表的功能,.这代替了旧的用~文件名的方式.那个__历史列表目录能够包含项目的多个版本(默认是最后十个维护的版本),并且能够作为本地的文件版本控制仓库.
历史视图被用来对你的项目文件当前版本的检查和备份不同的版本,而且还提供了一个非常有用的(智能的)比较不同版本间文件区别的视图.直观的显示你在源代码中做的加入或移除或修改的动作.除了能浏览代码的改变之外,你还能撤销以前做的改变,回到你以前备份文件的时间点.
历史视图同时支持StarTeam给你的项目提供更加完全的团队视图历史列表(参考ALM部分)
浮动的VCL设计器
BorlandDelphi2005现在提供了对自由浮动设计器的选择,就象以前的Delphi7和更前的版本(相对于固定设计器的Delphi8).默认的情况是使用嵌入式的设计器,但是你能在Delphi的提供的选项中找到对应的VCL设计器的那个对话框,然后去除嵌入设计器的选项来取消嵌入效果.
Delphi2005工具选择对话框
这个功能不仅能让你同时观察你的Form设计情况和源代码,还让你能够在设计时同时观察多个Form和数据模块.
同步编辑
BorlandDelphi2005提供一个新的同步编辑功能,它允许你在一个选择的代码区域内修改多个出现的变量(例如,允许你同时对它们重命名).注意这个功能比较有限的,只适应用小区域的源代码修改中使用(如一个过程或方法中的代码),如果你想在一个大的代码区修改标识符,建议你还是使用重构,它使用带有语法和语义分析引擎.
Delphi2005同步编辑的效果
错误实时提示
BorlandDelphi2005的IDE提供了一个新的功能叫错误实时提示(ErrorInsight),可以在你输入delphi,C#,HTML代码的同时高亮显示输入的错误语法.错误实时提示会在错误的语法下面显示一个红色的斜体提示,该信息将包括关于对应错误的更多信息.这个功能甚至能够帮你在开始编绎项目之前就能修正源代码中的语法错误.此外,对于未声明的标识符各误拼写的关键词和保留字,错误实时提示还能误别出该符号并没有在当前范围声明(就好象在一个命名空间中的类型在被使用前,必须用uses或者using标识出来)
关联查找
BorlandDelphi2005IDE拥有一种增强的方法来查找关联代码,它后台是使用重构引擎,可以通过查找结果来导航到你的源代码.你能查找本地(在一个单独的源文件中)的符号引用(如字段,方法,属性,变量等),或者你能在项目的所有源文件中查找和检查所有相关引用,
相关引用用一个树状列表列出,每个节点直接对应的项目中的代码.如果你双击一个节点,代码编辑器将出现并显示到对应的源代码.这是一种简便快速的访问源文件的方法.
Dlphi2005关联查找树状列表查找结果
关联查找结果总是可以在菜单”views”下找到,树状列表甚至能在同时包含不同的查询结果,并且显示上一次的查询结果.
帮助实时提示
新的帮助实时提示针对标识符提供了类似类,属性,方法或者事件在输入时类似的行为.帮助实时提示在不同的状况下会有两种不同的显示方法:或者用弹出气泡的方式,或者和弹出的代码实时提示结合在一起显示.
当将鼠标移过一个标识符是时就会弹出一个气泡式窗口的实时帮助提供.它将会针对特定的标识符产生一个工具性的提示窗口来显示相关的信息,包括到在线帮助的相关链接.
你还能得到一个和代码实时提示合成的帮助实时提示窗口,在裹面会根据代码实时提示窗口中选中的节点对应的条目给出进一步的帮助提示.在你选择了一个属性,方法或者事件后,又需要知道那一个才能满足你想要的目的的时候,显得特别有用.
Delphi2005帮助实时提示配合代码实时提示时
帮助实时提示一样能对你自己定义的类和方法产生相关提示.
结构视图
Delphi2005IDE左上角包含了一个结构视图.这个窗口在某些场合特别有用.它能显示代码编绎器中源代码的继承结构.同样,它也能显示HTML设计器中包含的HTML控件,就象VCL窗体设计器显示可视化控件的继续结构一样.对于源代码结构,结构视图还能动态的在顶层出现一个”错误”节点显示错误实时提示窗口中找到的所有语法错误.
Delphi2005结构视图
当检看可视控件的结构时,你能双击结构视图中对应的条目来定位到窗体设计器中对应的控件.当你观察相应HTML源代码的结构时,你能双击相应的条目来转到代码编绎器中对应的声明位置.
查找结果
现在当你执行一个查找时,结果会根据文件名分组显示在一个直观的树状控件中.你能直接通过文件浏览它们,也能打开节点来观察在相应文件中找到的每一个对应点.
工具面板
现在工具面板的定位机制已经得到增强,你只要输入控件的第一个字母就能立即得到一个只包含起始字母与你输入相符的过滤后的类别列表.并且会高亮显示显示你输入的字母,和能够在你继续输入字母时进一步的过滤.按”enter”键将会在设计器中的窗口放置上一个当前选择的控件.
工具面板向导
除了显示控件(在设计视图)或者代码摘要(当处于代码编绎器中)之外,工具面板现在还能在对象仓库开始一个新项目时显示一个向导,并将对象仓库中的类别转成工具面板上的类别.这个功能允许你能够用快捷键轻易的在向导中创建新的文件,项目,对象.
2.2重构
重构是一种对存在的源代码重新组织结构的过程,在没有修改代码的行为和输出的前提下,使代码更容易被重用和维护.
BorlandDelphi2005带的重构支持包括许多用用的特性,有”提取方法”到声明新的变量或字段,到提取成资源字符串,再到重命名标识符和复位义命名空间和uses子句.
Delphi2005重构菜单
重命名标识符[Delphi/C#]
WhiletheSyncEditfeatureallowsyoutolexicallyrenameidentifiersinaselectedsectionofsourcecode,forlargersectionsofsourcecodeDelphi2005refactoringofferstheoptiontorenamesymbols(likefields,methods,properties,variables,etc.)usingRefactor-Rename.Therefactoringdialogwillevenallowyoutoviewallreferencesbeforerefactoring(soyoucanverifyallplaceswheretherenamewillbemade).
虽然代码同步编号器可以让你在选择的源代码区域中重命名标识符,对于范围更大的源代码,Delphi2005的重构提供了rename这个功能来修改标识符(如字段,方法,属性,变量等).重构对话框甚至还可以让你在重构之前先浏览所有涉及到的引用(这样,你能验证所有被修改到的地方).
Thisfeatureaddsrealrefactoringintelligencetothestandardsearchandreplacefunctionality,bynotjustrenaminganysymbolwithinthecurrentscope,butonlythosethatareindeedthesameastheselectedsymbol.Forexample,ifyouhavebothamethodXandalocalvariableX,andyouwanttorenameonlythemethodX,Refactor-RenameensuresthelocalvariableXwillbeleftalone,asitrecognizesit’snotthesameasthemethodX).
这个智能重构的特性被融合到查找,替换功能中,但它不仅用在修改当前范围的所有标识符,还能只修改与选择的标识符真正相关联的代码.例如,如果你同时有一个方法名为X和一个局部变量X,当你只是想修改方法X的名字时,重构中的重命名功能会确保忽略对局部变量X的修改,因为它能区分变量X和方法X并不相同.
变量声明[Delphi]
当在写代码的时候,偶尔会还没有声明一个变量就先使用了.Delphi2005的重构允许你使用重构中的DeclareVariabl来自动声明这类变量,它会显示一个对话框来让你指定变量对应类型,然后增加这个变量的声明到当前区域.
这个选项只在当前变量还没有声明时才可用,当然应变是这样,这样的好处是,它还允许你将精力集中在代码和算法逻辑中,而不用移动到代码的首端来增加一个变量的声明.变量声明和错误实时提示配合得很好,当在错误实时中出现一个高亮显示的未声明变量提示时,只要简单的右击这个变量来声明就可.
字段声明[Delphi]
和声明未声明的变量类似,Delphi2005重构提供了重构--DeclareField来允许你你给一个类声明字段.如果在同范围内要声明的字段和已经存在的字段名有冲突,重构将会出现一个对话框来让你解决冲突.
这个功能将会在给类扩展增加功能时节省很多时间,不会再强迫你转到类的声明部分,然后手工给字段定义.
抽出方法[Delphi]
Delphi2005重构功能允许你选择源代码的一部分(可能这部分在几个不同的地方重复出现,或者其它地方需要相同的功能),并将这部分代码抽出来转为一个方法,这个重构生成的方法将根据声明的变量自动取得相应的参数列表,而原来选择部分代码的位置将会由一个呼叫新重构方法的代码取代.将一个长的代码段分割成几个方法能够提高代码的可重用性和可维护性.
抽出资源字符串[Delphi]
再也没有比用硬编码引用字符串来实现部分源代码的国际化多语言支持困难了.Delphi2005重构功能现在允许你将使用到的字符串抽出来生成资源(在你的代码实现部分增加资源字符的声明)
导入命名空间[Delphi/C#]
有时,你会用到在其它命名空间中定义的类,方法,字段或者类型,为了将相应的命名空间增加到uses子句中(相对BorlandDelphi)或者using子句中(相对C#),Delphi2005的重构提供了自动将选择标识符对应的命名空间导入的功能.参看重构中的ImportNamespace..
这个功能将让你省下很多查找命名空间的时间
2.3NUnit/DUnit单元测试
单元测试是一种给代码增加测试的开发方法,它通过运行测试项目来运行和验证他们自己,并根据源码的有效性产生报告.最好的效果,单元测试应该在一开始就正确应用,当你在写实际代码的同时就应该增加相应测试单元到其中(一些人甚至认为你应该先写测试代码,再写真正代码来测试),单元测试在重构中也扮演了重要的角色,如果只是为了验证重构后的源码是否有改变原来的行为,这是一个正确的选择.
DUnit/NUnit
单元测试框架平时也称为极限测试框架,和极限编程有关.Delphi2005包括DUnit(相对Win32和.Net)和NUnit.DUnit( http://dunit.sourceforge.net/)是Delphi版本的单元测试框架(同时适应Win32和.NET),而NUnit( http://www.nunit.org/)是和种.NET语言无关的单元测试框架,能同时用在C#和Delphifor.NET上.
测试项目向导
对每一个项目而言,你能通过测试项目向导增加一个对应的测试项目到项目组中.对于DelphiWin32项目,将是使用DUnit测试框架,.对于Delphifor.NET项目,你能选择使用.NET版本的DUnit测试框架,或者选择NUnit测试框架,而最后对C#项目来说,将是使用NUnit测试框架.DUnit(相应于.NET和Win32)和NUnit测试框架都提供了可以选择生成图形界面或者控制台方式来执行来显示测试结果.
测试样例向导
在一个测试项目裹面,你能使用测试用例向导来增加一个特定的测试用例以便对项目中的某些单元进行测试.对每一个单元,你能选择需要的类和方法增加到测试用例中.同时,也会生成一个测试样例的例子,让你以后可方便的参照增加自己的测试代码.
测试运行者
只要给测试项目中增加测试用例,就会产生独立的测试运行环境,你就能在Delphi2005的IDE中开始运行相关的测试,并且观察运行结果.你能得到所有错误和运行失败(如果有的话)的反馈报告,并且出错时,测试将会停止,并在控制台显示出结果.
使用单元测试,能帮助提高你代码的质量,可维护性,和可重用性.Delphi2005IDE整合了单元测试使更容易实现单元测试.
2.4数据库
Delphi2005提供对ADO.NET,VCL,VCLfor.NET的数据访问做得一样的好!
ADO.NET数据访问支持
Delphi2005实现了不少数据访问功能的增强,最显着的是ADO.NET方面,但在BDE,dbExpress和新增的dbGOforADO.NET也有不少改进.
增强的Borland数据提供者
现在有不少ADO.NET对应的Borland数据提供者得到改进,包括支持interBase的Boolean字段,Oracle包机制,本地数据表支持,获得数据结构表,还有支持Sybase12.5.
还有如下的经过认证的BDPADO.NET数据提供者驱动:BorlandInterBase7.5(也能在InterBase7.1,7.0和6.5上工作,但没经过认证),Oracle10g(同时也能在Oracle9.2.0和9.1.0上运行),IBMDB2UDB8.x(能上7.x上工作),此外,还能在MicrosoftSQLServer2000,MicrosoftMSDE2000,MicrosoftAccess2000,和Sybase12.5上工作.
增强的设计器
数据库设计中一个重要组成部分ADO.NET设计器在Delphi2005中也得到增强.增加了新的存储过程测试支持,这样你就能测试指定存储过程,包括输入参数,然后运行存储过程并且检查返回参数的值(如果有的话)
Delphi2005测试SUB_TOT_BUDGET存储过程对话框
数据表映像功能帮助你为BdpDataAdapter指定映像到相应的数据表.你能设定DataTable上的栏目到一个带有更具体描述的内存表DataSet中映射关系.你也能增加或移除内存数据表中的栏目.
对象设计器现在也为SQLConnection控件提供了一个联接字符串编辑器,允许你指定ADO.NETprovider的联接字符串.
异类数据支持,BDP远程对象
新ADO.NET控件中提供了RemoteServer和RemoteConnection这两个控件来支持快速开发三层的应用程序(使用.NET远程对象的结构).另外两个新的ADO.NET控件,DataHub和DataSync,支持将不同类数据库聚合到一个数据集.这四个控件能组合使用,这会导致分布式应用程序会使用大量不同的ADO.NET数据提供者.在这个结构,DataHub和RemoteConnection处于瘦客户层中,而RemoteServer和DataSync控件将处于服务层,并联接到数据提供者.
BdpDataAdapter的自动更新功能也得到增强,现在能解决多数据表更新,并且能处理更多的错误情况.
数据迁移
BDP控件组中有一个特别的控件bdpCopyTable中支持数据迁移操作,它使你能够将BDP支持的数据表复制到另外一种类型上.
数据集类型(.NET)
数据表类型现在能够编绎成标准.NET装配件.它还支持WebServices的数据集.项目管理器提供一个上下文相关的菜单来设置数据集中的关联和数据表编辑集合,这样,你能更方便的修改数据集类型
增强的数据库浏览器
BDP数据提供者相应的数据库浏览器已经在几个地方作了增强。现在可以简单的将数据从一个BDP数据提供者迁移到另外一个,这个功能能够允许你将一个数据表从一个BDP数据提供者复制另外一个上面.这样会复制和重新建立复制目标数据表的元数据,即使这个数据根本就是来之不同的数据源,如将Oracle的数据迁移到MSSQL上.这和BdpCopy控件的行为类似.
数据库浏览器还有查看额外的元数据的能力,并且允许你直接在数据库浏览器中查看和修改数据库模型,你能直接在裹面创建新的数据表,修改数据表还有删除存在的数据表.
同时,你还可以直接在数据库浏览器中拖拉一个存储过程到窗体设计器中,这样,将会创建一个BdpConnection(如果需要)和一个BdpCommand实例,并且自动设置BdpCommand的参数对应到指定的存储过程.
VCL和VCL.NET的数据库支持
Delphi2005中对VCL和VCL.NET的数据库支持由BDE,dbExpress和dbGoforADO,以及InterBaseExpress(IBX)组成,这些数据访问技术同时在于VCL和VCL.NET的项目中可用,这样,提供了一个无缝的升级Win32程序到.NET的方法.
dbGOforADO
在创建一个VCL.NET的应用程序,Delphi2005现在同时支持Win32和.NET的dbGOforADO,这样使移植Win32dbGOforADO的应用程序到.NET框架变为可能,dbGOforADO控件需要安装MDAC2.8来支持.
dbExpress
dbExpress控件组扩展了TSimpleDataSet来支持.NET,并且提升了TSQLStoredProc的执行效率,同时也对元数据进行改进.
下列的驱动现在已经通过认证可直接用在dbExpress:BorlandInterBase7.5(同时也能使用InterBase7.1,7.0和6.5,但没经过认证),Oracle10g(能使用Oracle9.2.0和9.1.0),IBMDB2UDB8.x(能使用7.x),MicrosoftSQLServer2000,IBMInformix9.x,SQLAnywhere9(能使用ASA8),MySQL4.0.x,andSybase12.5.
BDE
针对VCL和VCL.NET应用程序的Borland数据库引擎(BDE),用来支持本地的dBASE和Paradox数据集访问.BDEfor.NET版本现在已经改进,不再需要指定路径,能自动装载BDE相关的DLL文件了,它还改进了访问BLOB的性能,还新增了几个以前没有的,针对.NET的BDE控件,它们是:TUpdateSQL,TNestedTable,和TStoredProc.
IBX
InterBaseExpress(IBX)提供VCL和VCL.NET应用程序直接联接到InterBase的功能.
2.5Web
Delphi2005包含了大量在VCL(Win32和.NET)和ASP.NET下增强的Web开发技术.
Web部署管理器
Delphi2005亲增了一个Web部署管理器,能使用在ASP.NETWebForm各ASP.NETWEBService项目中,同时期intraWeb能够同时适应VCL和VCLfor.NET.Web部署管理器能够联接到目录(本地的或者网络上的)和FTP目标.部署管理器的窗口还能同时显示本地的文件(从项目目录中)和远程的文件(从目录或者FTP位置),而且你只需单击一个选项就可实现整个项目的部署.你还能执行比较,移除文件等到操作.部署的设置就与你的项目文件保存在一起,所以,你能以一致的配置方式在不同的时间部署你的项目.这个是一种非常有效和快捷的部署方式.
除了支持ASP.NET和IntraWeb项目之外,Web部署管理器还能扩展来支持的其它不同的项目类型.
Web数据控件
Web数据控件能用来编写功能强大的数据驱动的ASP.NETweb窗体应用.Delphi2005引入了大量新的Web数据控件,包括DBWebAggregateControl,DBWebSound,DBWebVideo,和DBWebNavigationExtender等,.
DBWebAggregateControl能用来显示数据集中各个栏目的聚合值,实际上可能用来显示平均值,计数值,最小值,最大值,总额.
DBWebSound和DBWebVideo控件被加进来支持音频和视频格式.可以通过一个DBWebDataSource控件联接到数据集对应的字段或给它一个URL路径.
DBWebNavigationExtender控件在下列这种情况下非常有用,就是你想将数据修改发送到数据集,而又不想使用DBWebNavigation控件时(特别是控件中那个ApplyToServer按钮).DBWebNavigationExtender是一个非可视化控件,能被用来扩展标准的Web控件--如按钮—它带有的功能和DBWebNavigator的按钮一样.所以,你能用它来编写一个自己的导航条控件.除了这四个新Web控件外,DbWebDataSource控件被扩展增加了一个OnAutoApplyRequest事件,并且现在支持嵌套的更新和删除.
除了DbWebDataSource之外,Web数据控件现在还能联接到EcoDataSource—一个联接到ECOIIExpressionHandler的控件.
Delphi2005还提供了一个新的Web数据控件向导让你能编写兼容于ASP.NET控件的自己的Web数据控件(同样能联接到DbWebDataSource或者EcoDataSource)
Web数据控件现在支持XML缓存,这个强大的功能能给web客户端实现一个服务端公文包.
Web数据导航
Delphi2005Web数据控件现在拥有控制导航命令的功能,它使用相应的导航API,如RegisterNextControl,RegisterPreviousControl,RegisterFirstControl,RegisterLastControl,RegisterInsertControl,RegisterDeleteControl,RegisterUpdateControl,RegisterCancelControl,RegisterUndoControl,RegisterUndoAllControl,RegisterApplyControl,RegisterRefreshControl,和RegisterGoToControl.
服务端控件
ASP.NET的HTML类控件现在能在后台文件用代码表示成控件了,通过选用”RunASServerControl”这个选项,将会增加一个runat=server属性到控件的脚本中,这就好象在控件的源码文件中直接声明.
模板编辑器
Delphi2005现在为DataGrid和DataList增加了一个模板编辑器,让你能够定义和更容易的编辑你自己定制的栏目模板.
IntraWeb
当使用VCL(Win32或者.NET)时,Delphi2005支持使用AtoZedSoftware(www.atozed.com)公司的IntraWeb来开发应用.IntraWeb允许快速的所见即所得式来设计Web应用程序,很象ASP.NET,但还是有很多地方不同.IntraWeb对的优点就是对用户来说不用关心底层的HTML语法和能够帮用户管理网页的状态,这些ASP.NET是做不到的.IntraWeb类的WEB应用程序和非可视化的VCL控件是兼容的,如数据访问面板中的BDE,dbExpress,dbGoforADO和InterBaseExpress(这个意味着可以从Win32迁移升级到.NET),相反,ASP.NET的应用程序要拥有数据访问的能力必须使用原生的.NET控件,如ADO.NET和BDP.
2.6企业核心对象ECOII
BorlandC#Builder1.0和Delphi8带了第一版的ECO,现在在Delphi2005中得到了极大的加强来适应有高伸缩性要求的企业应用开发.相对初始版本,在ECOII有不少改进增强.
其中最重要的增强总结如下:
-支持可伸缩性,分布式应用程序
-支持ASP.NET(WebForms和WebServices)
-支持映像到一个存在的数据库
-针对易用性优化,以使使用ECO流程更加容易
可伸缩性,分布式应用
最重要的部分是,ECOII现在具有企业级的伸缩能力.相对第一版本的client/server解决方案,ECOII同时支持client/server和远程解决方案.当你编写有伸缩能力的ASP.NET或者WinForms应用程序时,有几个可能采用的结构.都非常简单易用.在同进程中或不同多进程中,想同步多个不同缓存对象如EcoSpaces时,可以用新增的PersistenceMapper来管理,.同步持久性的映射关系可以在同进程内部自我执行,或者,更可能的情况,在服务器中的一个进程运行.
ECOIIandASP.NET
现在使用Dephi2005,我们能够组合ECOII和ASP.NET一起使用,同时适合ASP.NETWeb窗体和ASP.NETWeb服务方式.Borland的Web数据控件通过给EcoSapce绑定到一个新的EcoDataSource组件来导出对象,这是用OCL的表达方式来输出一个数据源,并且还能产生一个数据感知的ASP.NETWEB窗体中.同样的操作能适合任何常用的原生ASP.NETWeb控件.ECO组件,如ExpressionHandler,能够提供一个可以当成DataSet的元素列表,并且可绑定到任何ASP.NET组件上,如DataList和DataGrid.因为对ASP.NET应用程序提出的请求都是无状态的,我们能够在session或者在应用层次上维护EcoSpace的状态.
ECOII使用乐观锁,当发生冲突时,会使用冲突决议来决定执行正确的动作.特别在当一个EcoSapce检测到在后台数据库的数据和在EcoSpace中保存的”旧值”不同时,它将会注册一个冲突到EcoSpace内部列表中.开发者能调用RetrieveChanges来得到其它EcoSapces中发生的任何改变,还可用GetChanges来收集未解决的冲突,并决定如何处理(通常由最终用户控制决定如何解决)
Delphi2005设计时的ECOIIASP.NETWeb窗体
映像到现存的数据库
带有ECOII的Delphi2005现在有可能利用现存数据库来实现应用程序持久性.它是利用一个新加强的使用XML文件模型驱动的对象-关联映像来实现.这个强大的菜单达已存在的MSSQLserver,ORACLE或者InterBase数据库,并且如UML模型一样建立映像模型,并且用类将数据库的数据封装起来.
增强的EcoSpace设计器
EcoSapce的功能在Delphi2005中得到很多的增加,包括拥有产生默认的XML模型映像文件,将ECOI的数据库格式转为ECOII的格式,拆包/包装一个现存的数据库.EcoSpace设计器同时增强了气泡式提示,显示当前一系列需要完成任务的列表,例如下图的PersistenceMapperBdp.
Delphi2005ECOII设计时气泡式提示
工作任务列表会自动检查,所以,你永远都会得到一个最新提示,提示你什么是已经完成的,那一步还需要继续工作.
另外一个用气泡提示的例子,当你打算打开一个新的ECO包时,气泡提示会显示所有你选择的ECO包中定义的类名.
ECOII项目对象
Delphi2005现在能产生几个不同的ECOII项目.对于C#类型,我们能创建一个ECOASP.NETWeb应用程序,或者ECOASP.NETWebService,或者DLL中的ECOPackage(所以我们能在另外的项目中引用这个EcoSapce来使用对应的DLL),还有ECOWinForms应用程序.对于Delphifor.NET类型,我们能创建ECOASP.NETWeb应用程序,ECOASP.NETWebService和ECOWinForms应用程序.
2.7ALM
Delphi2005内嵌支持Borland应用程序生命周期管理套件,包括CaliberRM,StarTeam,和Janeva
整合StarTeam
StarTeam提供源码版本控制的支持,包括需求管理,缺陷跟踪,分组讨论记录,远程协作开发.Delphi2005包含一个内置的StarTeam客户端,可以从菜单StarTeam或者项目管理器的右键菜单中调用,你可以在Delphi2005的IDE界面中操作StarTeam.你能将一个项目放到StarTeam中,可以检出文件,也可以导入文件,或者恢复到以前旧版本的代码.锁定或者解锁StarTeam仓库中的文件,等等操作.
此外,历史管理器还支持StarTeam,所以,可以在本地的备份中或者StarTeam的仓库中访问,比较和恢复备份的文件.
内置Janeva
Delphi2005内置支持Janeva(在企业版和设计师版).Janeva能用来联接.NET客户端(C#或者Delphifor.NET编写)到J2EE的EJB或者CORBA对象中.当安装了janeva(也就是安装了JanevaIDE插件),在项目管理器的项目节点上会新增两个菜单,AddJ2EEReference...和AddCORBAReference...,可以用来增加特定的引用.
菜单AddJ2EEReference...在你选择从一个.jar文件选择一个EJB时会出现一个对话框,而当你AddCORBAReference...会在你选择一个包含接口定义的CORBA对象的.idl文件时显示一个对话框..在导入.jar或者.idl文件后,你将得到一个原生对象,它可以直接在.NET客户端使用,现在将不再需要额外的层(象WebService或其它网关类软件),而是利用Janeva装配器直接联接到J2EEEJB或者CORBA对象上.以前版本的Janeva插件(C#Builder带的)能产生C#代码,但Delphi2005产生的装配件可以被任何.NET语言使用.现在的Janeva插件向导会根据janeva客户端软件产生相应的参数,然后自动产生对应的app.config文件.
*Janeva要求分发你的应用程序时要带有运行时许可证,你可在Borland的销售许可中找到
2.8编绎器/语言/调试器
Delphi2005编绎器,语法,调试器都有不少增强.
编绎器和语法的增强
Delphi2005编绎器实现了几个性能有关的增强,使编辑速度加快了.编绎器现在已经支持Unicode和UTF8格式的源代码文件,可以使用Unicode来定义标识符和符号.
For...in...do
Delphi语言增加了一个新的for-loop语法.和foreach结构类似.这个强大的特性可用来迭代访问一个集合的值.
内联函数
Win32和.NET的Delphi语言都增加了内联函数,使用它能提升程序的性能.它取代了直接呼叫例程,而是直接将被呼叫的例程的代码放到呼叫代码的位置(节省了呼叫和返回的时间,还有参数管理的时间).这个对小的例程,不在同一单元范围的例程,或者带有多参数的例程非常有用.而对大的例程,在应用内联之前要仔细考虑效率和生成代码大少之间的利弊.
我们能直接用inline来标识一个内联例程,还可以使用{$INLINEAUTO}这个编绎指示.后一个操作,会让编绎器自己选择那些看起来会提升系统性能的例程进行内联.使用{$INLINEON}编绎指示是你指定了从这个编绎指示开始的例程都将用内联方式.
有很多反对者认为在编绎器中并没有实现内联,例如,即使你能内联包(装配件)中的不内单元的例程,你不能跨包进行内联.同样,不可能内联虚方法,动态方法或者消息方法,同样不能内联接口和dispinterfaces.
多单元命名空间
上一个版本的Delphifor.NET编绎器采用了将一个单元映像到一个命名空间的方法(这样单元的名字将就是命名空间的名字).Delphi2005中扩展了这种方法,现在一个命名空间可以由几个单元组成.例如带一个单元名为Comp.Group.MyUnit.pas,左手边的Comp.Group是命名空间的名字,而MyUnit.pas就是在命句空间里的一个局部单元范围.这个可以让我们使用多个单元而设置他们同属于一个命名空间(处理ASP.NET的自定义控件是,现在能用一个单一的控件前缀).
Delphi2005新的命名空间功能带来的另一个效果是,现在有可能使用Delphi2005来给现存的命句空间扩展功能.例如,可以新增一个MyUnit.pas单元给SystemWeb命名空间扩展新的类和类型护展了的命名空间将成为所有包含System.Web.MyUnit.pas的应用程序和装配器的一部分.
增强的调试器
Delphi2005Win32的调试器现在增强了对没有带调节试信息的Win32堆结构的支持.当在IDE中调试时,还带有一个专门处理异常的对话框.当一个异常被引发时,将会有一个对话框弹出来让你有机会选择忽略这个异常类型还是检查这个异常对象,包括一个选项来决定是真正引发还是继续执行.
断点列表
内置编辑器也加强了断点列表,现在很适合用在条件句中或者群组中,启用和停用断点可以简单的在一个CheckBox列表选择就可.这样就不用弹出一个对话框选择,可以加速设置断点.
Delphi2005带有可编辑字段的断点列表
在断点窗口还有新的工具条.通过它你能直接删除一个断点,或者删除全部,或者使全部立即都启用,或者编辑某个断点的属性.
新的调试视图
Delphi2005包含4个新的Delphi窗口.BorlandDelphi8for.NET提供了断点的调试窗口,调栈窗口,监视窗口,线程和事件日志.Delphi2005增加了FPU,本地变量,CPU和模块窗口.
Delphi2005现在还提供了一个模块窗口,可以显示应用域,并且允许你操作应用域中的命名空间和配件的细节.你能够按名字或者基地址来排序显示模块.
CUP窗口是显示当前源码,它能显示IL(中间语言)和本地机器汇编语言,还有伪代码
Delphi2005混合Pascal,ILASM和机器码的CPU窗口
并行调试
使用Delphi2005IDE不仅可以用项目管理器同时装载多个项目,你还能同时运行Win32和.NET调试器。你可以在同一个开发环境中调试Win32和.NET应用程序.你甚至可以同时运行两个调试器,在项目管理器中切换到不同的项目(从一个语言切换到另外一种)
总结
这个白皮书介绍了Delphi2005的关键新功能,也介绍了一些已存在的技术的增强部分.
就如你所看到的,IDE拥有一个增强的欢迎页,支持多语言,备份历史文件支持(可选择内嵌的StarTeam),浮动的VCL设计器,同步编辑器,实时错误提示,实时帮助提示,结构视图,帮助查找,更好的检索查找结果的功能,工具面板向导帮助你更快的开始一个新项目.
重构也是Delphi2005中的一个重要的新特性,提供了重命名符号,声明变量,声明字段,抽出方法,抽出资源字符串,到导入命名空间.
另外一个额外重大的支持是DUnit和NUnit单元测试,内置于IDE的测试项目和测试例程向导.
在数据库方面,BDP组件更新了新的驱动,增加了BdpCopyTable组件,DataSynctDataHub组件来支持异构的数据库.而RemoteServer新增了RemoteConnection组件来编写三层的.NET数据库应用(DataSync和DataHub,如果你需要,可以甚至是异构的数据库或者三层).
对于Web开发,ASP.NET的调试器得到增强,新增了dbWeb控件来处理计算的数据,声音,视频和导向条事件,支持DataGrid和DataList的模板编绎器,最后,intraWeb同时支持Win32和.NETWEB应用开发.
企业核心对象(现在是ECOII)也加强了支持可伸缩性,分布式开发,支持ASP.NET(普通的和dbWeb控件),并且具有在ECO模式中映像到已存在数据库的能力.
Delphi2005提供内嵌的BorlandALM工具,包括StarTeam,和Janeva(可以联接J2EE和CORBA服务器).
最后,但不是最不重要的,在编绎器和Delphi语言的许多方面都得到增强,如新的for…in循环,内联函数,跨单元命名空间.调试器得到增强,使用了更好的断点列表新的.NET调试窗口,和并发的Win32和.NET项目调试.
有史以来最好的Delphi
无论你的目的是在MicrosoftWindows操作系统还是在Microsoft.NET1.1框架版本下开发组件或者应用程序,,Delphi2005对现代Windows开发提供了广泛的,高生产力的,高质量的支持。