Visual Studio .Net 7.0 尝鲜

徐蕴 2000-12-08 09:03:00
费尽力气终于把beta1版装上了,有耳目一新之感,也许有点夸张,但确实是改进和增强了许多,于细致之处见真功夫,
虽然还有好多好多的issue,但绝对值的期待。用它来开发真算是一种享受,至少我是这么认为。不过要track微软真是太辛苦了,
昨天是COM,今天是.NET,主流技术一直在变,明天是什么呢?
...全文
3220 34 打赏 收藏 转发到动态 举报
写回复
用AI写文章
34 条回复
切换为时间正序
请发表友善的回复…
发表回复
Sunlet 2000-12-14
  • 打赏
  • 举报
回复
请问vc7是否还可以trace源代码到windows api?
oldo 2000-12-14
  • 打赏
  • 举报
回复
我下的?Visual Studio .Net BETA1怎么不能安装?
"Extracting file failed.It is must likely caused by low memory (low disk space for swapping file.) or corrupted cabinet file."
我C盘和SETUP文件所在盘都有400M以上的空间?难道还不够?
怎么回事?
Orasis 2000-12-13
  • 打赏
  • 举报
回复
我也装了一套,一共三张光盘,在使用的过程中问题的确很多,不愧为Beta1,各位在使用中用C#向导生成应用时成功了没有,我的始终都是Bug报告,看来我用不了Wizard来生成应用了,各位大虾请多多帮忙
kaikaikaikai 2000-12-12
  • 打赏
  • 举报
回复
Visual Studio .NET 编程大奖赛


--------------------------------------------------------------------------------

要求: 利用Visual Studio .NET开发Windows 平台上的基于XML标准的企业级的Web应用
奖项设置:

一等奖: 人民币伍万元整
二等奖: 人民币叁万元整
三等奖: 人民币贰万元整

所有获奖选手将在Visual Studio .NET产品发布时作为特邀嘉宾参加
发布会并领取奖金(Visual Studio .NET中文版预计在2001年7-8月发布)
参赛选手:微软公司正版用户。

活动规则:

截止日期 2001年3月1日。
参赛选手应在截至日期前(以邮戳日期为准)提供一张光盘,包括程序安装和运行文件,介绍系统环境、配置说明、产品功能、使用指南的白皮书,以及准确的个人信息。

大赛结果将于2001年4月1日在微软中国公司网站上公布,并将直接通知获奖人员。同时将介绍获奖作品的详细情况。

如何获得Microsoft Visual Studio.NET beta 1的光盘:


从2000年12月1日起至2001年3月1日,凡从微软授权经销商处购买Visual studio 6.0,Visual Basic 6.0, Visual C++ 6.0, Visual Foxpro 6.0的用户。

从2000年12月1日起至2001年3月1日,凡从微软授权经销商处购买MSDN任何版本的用户。

从2000年12月1日起至2001年3月1日,凡从微软授权经销商处购买Microsoft Commerce Server 与Microsoft Biztalk Server的用户。
请将发票复印件与具体联络信息寄到:

北京市海淀区林业大学北路六道口100号,
北京迪美世纪信息咨询有限公司
Visual Studio.NET 编程大奖赛小组收
邮编: 100083
TEL: 010-62347582/7583
FAX: 010-62347620

迪美公司在十天内,将会寄出Visual Studio.NET Beta1 的光盘。

参赛作品请寄:

北京市海淀区林业大学北路六道口100号,
北京迪美世纪信息咨询有限公司
Visual Studio.NET 编程大奖赛小组收
邮编: 100083

补充说明:


微软公司将从12月份起在公司网站上设立“Visual Studio .NET 编程大奖赛”专区,发布有关Visual Studio .NET 产品的最新消息、技术文档、成功案例等,请有兴趣参赛的开发人员注意察看。

微软公司保留对此次活动的解释权。




yxlchw 2000-12-12
  • 打赏
  • 举报
回复
PB我没有用过,但VB和delphi,我用过,我是从VB转向Delphi,但我不是说VB不如Delphi,VB
开发的程序很稳定,这是我的感受,但我总感觉VB是业余的,初学不错,我现在delphi还不太
熟,delphi的资料不如VB完全,这可能和Borland的大陆的策略有关,但目前我至少感到,从
理论上Delphi比强,我认为:Delphi的开发平衡于VB与VC之间,我现在让我公司放弃VFP和
VB,转向Delphi,但我总担心delphi的以后会如何,delphi6会如何,delphi7又会如何?
kaikaikaikai 2000-12-11
  • 打赏
  • 举报
回复
to hdelphi :

I agree (Delphi == 经典) but... either VB or C++

Why Delphi ???








hdelphi 2000-12-11
  • 打赏
  • 举报
回复
to kaikaikaikai:

I know VB << Delphi < BCB >=VC

VB起码在7。0以前是垃圾!
GoodHope 2000-12-11
  • 打赏
  • 举报
回复
对于:kaikaikaikai有误导之嫌。
都什么时候了,VB6几年没有升级了,并不代表其它产品也停滞不前。VS是得过一些奖,Borland的产品得的奖就少了吗?为什么提都不提?是你不知道呢,还是有意不提?看看你引用中的一句“根据NSTL与微软公司的合约”,我对NSTL的公正程度多少要有些保留了。
“Visual Basic的编程强调ODBC和ADO数据库访问,这比Delphi的BDE要快。”ADO我没用过。不过ODBC比BDE要快?!除非是连接微软的数据库,BDE用的IDAPI是用汇编写的,会慢?我用过多种数据库,只有SQL Server下BDE比ODBC慢。
GoodHope 2000-12-11
  • 打赏
  • 举报
回复
另外我想说的一点就是,如果对一个东西不了解,就不要随便指责。不仅是对开发工具而言。像下面这些话都很搞笑,好像对这4个都很了解一样。

VB >=Delphi =< C++Builder !=VC
VB << Delphi < BCB >=VC

能真正掌握一门就不错了。就算都掌握了,就可以说这样的话了吗?!好好反省一下吧!
GoodHope 2000-12-11
  • 打赏
  • 举报
回复
唉,用VB开发?!VB开发的确是方便,不过的确只能用于小程序中,程序越大,麻烦就越多。有多少人做过时间跨度比较长(含升级)的。为了接手公司以前的产品搞得我机器上VB4、VB5都得装。而且有一个产品得要装了VB5的VB4中开发。当VB6出来后,都不赶用它了。所以公司在最后放弃了VB。可能你们认为是我水平不够,否则肯定能解决这些问题。不过对于公司来说,要的是能够销售并创造利润的产品,当一个产品稳定之后,能不做修改的就尽量不要做修改。因为一旦修改了,好多测试就得重新进行,进度就会受到影响,损失是相当大的。这一点在论坛上大家很少提及,然而在现实中却是相当重要的。希望能引起重视。
VC在这些方面做得比较好,Delphi/CB也不错。有些人说Delphi升级也有问题只能说明两件事:1,此人水平奇臭;2,此人使用了盗版构件。
有人认为VB的速度不是一个问题,实际上更真编译的差别太大了。尤其是在稍微复杂一点的数据处理中,VB的速度简直不可忍受。
所以说VB完全可以做开发,而且在某些方面做得还相当好。不过VB受到的限制也是相当多的,因此作为一个发展方向没有定,而又准备吃这碗饭的人,最好不要把VB作为首选。唉,其实能不吃这碗饭,最好就不要吃。要做好这行,迟早累死。我是上了贼船,下不去了。苦啊:(
舟中夜起 2000-12-10
  • 打赏
  • 举报
回复
http://home.kzinfo.net/getc/showbook.asp?type=全部图书&page=3
上面有studio.net开发文档
kaikaikaikai 2000-12-10
  • 打赏
  • 举报
回复

To hdelphi :
You must know:

VB >=Delphi =< C++Builder !=VC
kaikaikaikai 2000-12-10
  • 打赏
  • 举报
回复
Merci beaucoup !!!
徐蕴 2000-12-10
  • 打赏
  • 举报
回复
上面的那篇文章好像太长了,应该另外开一个话题嘛。
关于.net的邮件列表:
http://discuss.develop.com/
含金量还是挺高的。
darkstar13 2000-12-09
  • 打赏
  • 举报
回复
深圳D版已有的卖,在万商我见过,赶快啊
徐蕴 2000-12-09
  • 打赏
  • 举报
回复
beta1还不够稳定,大家如果感兴趣,可以加入.Net的邮件列表,好多高手,微软的同志们也积极参与,
每天100多封信哦,还可以看到鬼子们吵架,比较有趣,昨天看到英美两国高手的吵架,都对对方的英语看不惯。不过这些“有趣的垃圾信”不算太多,有用的信息还是很多的。不过我好多的看不懂:-)
vcmfc 2000-12-09
  • 打赏
  • 举报
回复
D版D版D版D版D版D版D版D版D版D版D版D版
ddddh 2000-12-09
  • 打赏
  • 举报
回复
哈哈,delphi完了,嘿嘿
hdelphi 2000-12-09
  • 打赏
  • 举报
回复
这篇文章狗屁不通,又长又臭。VB这种烂货,去死吧!
kaikaikaikai 2000-12-09
  • 打赏
  • 举报
回复

Banchmark


快速应用程序开发工具

NSTL关于微软产品的声明

这个报告由NSTL提供。根据NSTL与微软公司的合约,对于微软公司产品所提供的服务,NSTL不保证数据的精确、充分和完整。对于所有引用报告的内容的个人或团体,NSTL不做任何授权,一切后果自负。本报告中提到的产品如果把报告内容用于商业的或其它的目的,NSTL也不做任何授权。


评测说明

NSTL是为微型计算机业界进行硬件和软件测试的最主要的中立机构,主要是向PC界提供高质量的服务和测试工具。对新推出产品或已有产品的兼容性、性能、可用性、容错测试以及BIOS评估等方面进行评价,NSTL有丰富的实施客观测试的经验。NSTL凭借熟练和完备的能力,完全可以给客户提供高质量的、有效的方法完成测试。

微软公司与NSTL签定合约,让其对Windows 95和Windows NT上主要的快速应用程序开发(RAD)工具进行比较。参加评估的产品是:微软公司的Visual Basic 6.0,Sybase公司的PowerBuilder 6.0和Inprise公司(先前是Borland国际公司)的Delphi 4.0。


可用性/生产能力的评价结果(概要)

三种产品中Visual Basic最易于使用。到目前为止Visual Basic具有最好的数据库开发工具,创建数据库窗体和报表十分简单,只要把数据库的字段从数据库浏览器窗格里拖到窗体或报表中。Visual Basic使您在开发环境中可以完全控制数据库:可修改和创建表,可编辑和调试存储过程,可在开发环境中可视化地创建SQL查询。

操作Web站点也同样十分简单。第一次创建Web站点时,只需简单地双击app wizard(Web站点已经建立),然后点击“run”,您就有了一个漂亮的站点。使用Visual Basic也可以动态调试的Web站点,点击debug选项就会在Internet Explorer中打开相应的页。有了这个调试器,Visual Basic成了唯一支持COM的工具。Visual Basic有最好的在线文档,与其Web站点保持实时的连接。

Delphi 4.0在加入了代码浏览器和多项目管理器后,与其以前版本相比生产能力有很大提高。但不幸的是,其代码中的错误以及不完全的文档使人们在学习使用时感到吃力。Delphi的数据库编程工具在三者中是最差的。Inprise SQL Explorer是一个独立的数据库浏览应用程序,几乎没有与开发环境的进行集成。用于调试Microsoft Internet Information服务器的代码段是错误的,而用于调试Transaction Server的代码段没有任何用处。在Delphi中配置Borland Desktop Engine是件困难的问题,其帮助文档或管理工具中几乎没有什么指导。

PowerBuilder 6.0比以前的版本有所改进,但仍然很不够。即使是PowerBuilder极力鼓吹的DataWindows,与Visual Basic中新的拖放式数据库工具相比仍显得繁琐,新的调试器比老版本的要好,但仍没有达到Visual Basic或Delphi调试器的高度。

在PowerBuilder开发环境中其Web开发模型一直是最差劲的。PowerBuilder的Web模型容易掌握,但由于不能动态调试Web站点,因此没什么吸引力。不过另一方面,PowerBuilder具有优秀的集成化报表方案以及完整的在线文档。


性能评价结果(概要)

Visual Basic和Delphi性能的比较不相上下,二者都带有很好的代码编译器。Visual Basic的编程强调ODBC和ADO数据库访问,这比Delphi的BDE要快。在Delphi中,也可以使用不完整的ODBC和ADO以获得较好性能,代价是许多支持可视化的工具不可用。Delphi带的ISAPI Web模型比Visual Basic基于COM的模型更快,不过二者都很快,差别不大,而Visual Basic的Web站点可更好地升级到多处理器的机器上。两种编译器都十分快,编译几乎是在瞬间完成。从性能上看,Delphi与以前的两种版本相比几乎没有改进,Visual Basic 6.0由于使用了新的OLEDB驱动程序,数据访问性能有很大提高(比5.0),其他方面的性能与5.0类似。

在性能方面PowerBuilder不在同一档次上。它在客户机/服务器方式下很慢,在三层开发时更慢,而在Web应用中慢得令人认为它停止运行了。ISAPI连接不工作,使性能问题更加糟糕。6.0版与5.0版相比没有明显的性能改善。


功能评价结果(概要)

Visual Basic在多个重要领域都十分有用。其调试器在很多方面都表现出色,它可以很方便地跟踪进COM调用和SQL Server存储过程,只有Visual Basic可以使我们在不窃用注册表的情况下调试IIS应用程序,它同样还支持对Microsoft Transaction Server(MTS)组件的调试。它有最完整的扩充开发环境的自动模型。在三种测试产品中,Visual Basic是唯一支持自身生成Alpah代码的产品,这对于创建快速Web服务器十分有用。

Visual Basic带有最强大的“附件包”,企业版中带有Source Safe、SQL Server 6.5、SNA Serve、Microsoft Transaction Server、Microsoft Repository、Visual Modeler以及Microsoft Message Queuing Server等产品的开发版。除了标准的关系数据库接口外,Visual Basic还提供与CICS、IMS、AS/400以及VSAM数据源的接口。

Delphi还具有一些Visual Basic和PowerBuilder中没有的功能。它支持所有的主Web服务:ISAPI、NSAPI、CGI和WIN-CGI。Delphi已经集成了对CORBA的支持,Visual Basic和PowerBuilder不支持。Delphi自带的插件,对指针的支持,以及对自由流程应用程序的支持,还可为高级程序员提供更多方便。Delphi具有最小的附件包,不提供源控件包,提供的SQL开发平台是很少配置的InterBase。Delphi提供Midas和OLEnterprise支持三层结构。

PowerBuilder的附件(主要是ObjectCycle和SQL)并不吸引人。PowerBuilder自身除了支持对传统SQL数据源的访问外还支持对Lotus数据库的访问。PowerBuilder是唯一支持在UNIX平台上执行代码的产品,不过Visual Basic和Delphi在所有支持浏览器的平台上支持Web应。PowerBuilder对Web站点的开发提供很少的支持。


结论和建议

Visual Basic是功能最强的企业开发工具包,它可以提供优越的性能,最易于掌握和使用,具有无可比拟的特性,新的OLEDB驱动程序使其在所测试的工具中具有最快的数据访问速度。Visual Basic新的数据库工具是市场上最强大的数据库编程工具,对于与COM相关的应用,使用Visual Basic无疑是最好的。由于其特殊的调试器和自带的COM对象模型,创建ActiveX控件和Microsoft Transaction Server组件十分简单。新的ADO支持以及与Microsoft Transaction Server的集成,使得用Visual Basic开发三层应用十分简单。对于Web开发,相信所有已使用了这一平台的众多开发人员一定为Visual Basic对ASP和IIS的集成所吸引。95%的Visual Basic的开发人员都是开发以数据库为中心的应用程序,新版本的产品将使程序开发更加简便,使产品更加快捷,因此升级到6.0是不用置疑的。

Delphi可提供与Visual Basic相似的性能,但没有Visual Basic吸引人的用户界面,也不具有拖放式的数据库编程工具,与Visual Basic所用的OLEDB驱动程序相比,Borland Desktop Engine更慢,更不可靠,更难管理。Delphi中的ActiveX和COM组件可提供与Visual Basic相类似的性能,但相对难于编程。Delphi有一些高级编程的特性,但程序员更愿意使用C++完成这些工作。如果有紧急的CORBA需求,那么Delphi 3程序员必须进行技术升级。Delphi其他方面的特征,如代码浏览器和微Object Pascal的增强都没有太引人注目。

在Windows平台下做开发选择PowerBuilder是不明智的,做客户机/服务器开发还可以对付,做Web或三层开发令人难以容忍。它的性能问题、错误以及不好的调试器(比早些版本好多了,但仍很差)使其十分不适合这方面的工作。即使您必须在PowerBuilder下工作,那么也只有调试器值得升级。


面向客户机/服务器的RAD

合作开发最常用的范型是客户机/服务器编程方法:客户应用程序运行于Windows 95环境下,通过网络连接到数据库服务器。为评价每种工具对客户机/服务器编程的支持,我们考查四种基本功能:

数据库集成。在开发环境下访问SQL(或非SQL)数据源是否比较简便,创建数据库查询以及据此建立窗体和报表是否比较简便。
存储过程。在开发环境中控制存储过程是否比较简便?创建(及调试)使用存储过程的代码是否比较简便?
生成报表。创建可以作为最终应用程序的一部分运行的SYSIWYG报表是否比较简便?
扩充开发环境。创建新的ActiveX控件及COM组件是否比较简便?把第三方的特定COM/ActiveX组件添加到工具中是否比较简便,创建定制/私有组件以及附加工具的工具是否比较简便?

数据库集成

新的可视化数据库工具使Visual Basic在数据库访问能力方面超过了Delphi和PowerBuilder。数据库数据会一直保持在桌面上(不仅是形式上的);可缩减的“数据视窗”窗格可使数据库如Explorer一样成树状显示,从而可以把数据库对象拖到开发环境中;数据视窗中的弹出式菜单可实现在开发环境中创建和修改数据库对象;表、视窗、存储过程以数据库结构图都十分方便于访问。

在新的“Data Environment”下可以放入不可见的编程要素如存储过程和定制查询等,Data Environment支持对特定程序所使用的数据库对象进行快速浏览,Data View可对数据库全局状态进行查看。Data Environment还支持对数据库分级,以创建drill-down报表。在Data Environment下,可以把数据库对象拖到可见的应用组件上,包括数据库窗体以及新的WYSIWYG报表生成工具。使用“点击右键拖动”,可以立即对数据在窗体中如何进行处理作出选择:绑定控件、数据网格或是新的分层网格。

在PowerBuilder开发环境中可以完成许多Visual Basic可完成的工作,但在集成和可访问方面不可同日而语。用PowerBuild开发时您必须使用许多固定模式的对话框,而不是进行直接操作。

Delphi与流行的SQL数据库的集成比较差,Delphi中的SQL Explorer与Delphi的集成很少,对数据库的操作都没有太大帮助,大部分开发人员更喜欢使用数据库厂家提供的浏览工具(如Enterprise Manager)。


使用存储过程

为了增强实现安全性、商务规则和数据一致,以及为提高性能,开发人员要大量使用存储过程,所有的工具至少支持一些自身编程对象“包容”的存储过程。

Visual Basic有对存储过程最高级的支持,尤其是在使用Microsoft SQL Server的情况下。只要一个简单的导入操作,我们可以使用所有存储过程,就好像它们是Visual Basic的方法。在数据浏览窗中双击一个存储过程,可以对存储过程进行编辑/调试。存储过程可以和源码控件以及调用它们的客户端应用程序结合在一起,下面是一个执行存储过程的Visual Basic代码段:

Visual Basic存储过程调用:

cn.is_valid_publisher "9999"

is_valid= cn.rs_is_valid_publisher(0)

.rs_is_valid_publisher..Close

Delphi对存储过程的支持比较初级,存储过程每次一个地连接到项目中,参数使用对话框映像为自身的Delphi类型。在Delphi开发环境下,存储过程可被执行,但不可修改。下面是同一存储过程的Delphi语法:

Delphi存储过程调用:

with is_valid_publisher_sp do begin

ParamByName('@a').AsString := '9999';

Open;

Is_valid := Fields[0].AsInteger;

Close;

end;

PowerBuild对存储过程没有可视化支持,它们不能作为编程对象导入。另外,PowerBuilder用特殊的语法实现对存储过程的调用。

PowerBuilder存储过程调用:

long id

declare is_valid_publisher_sp procedure for is_valid_publisher @id=:id;

execute is_valid_publisher_sp;

fetch is_valid_publisher_sp into :is_valid;

close is_valid_publisher_sp;

这种方法存在一定的优点和缺点,它与程序员所熟悉的嵌入式SQL相兼容,但对于有可视化编程/面向对象背景的程序员而言,这种方法有些不自然。


制作窗体

利用新的拖放式数据库集成,在创建窗体方面Visual Basic比Delphi更加优越。二者都可以指导程序员按照Wizard从基本的数据库开始,但Visual Basic只要简单地把需求拖到窗体中,更加方便。在Visual Basic中修改窗体也更简单,因为拖放操作把三个操作组合到了一起:创建、命名以及连接新的控件。Visual Basic还带有更丰富些的控件集(尽管并没有明显的优势)。Visual Basic对定制数据源的支持更简便,在窗体Wizard中有支持,Delphi也支持定制数据源,但要平稳集成需做较多的工作。

Visual Basic已经把COM/ActiveX对象模型作为了自身的对象模型,市场上还没有其他开发环境可以在与ActiveX控件的平稳集成方面与其竞争。Delphi的设计者为使ActiveX组件可工作在Delphi中,已做了很多工作,但与Visual Basic相比还有一些差距。Delphi 4中的浏览器与3.0相比是一大进步,但它与Visual Basic的对象浏览器比缺少在线帮助以及方法描述。Delphi的弹出式完整编辑器与Visual Basic编辑器相比不够优雅,功能也差一些。Pascal不能象Basic那样按名传递参数,或是按名调用,这使有些控件用起来比较繁琐。我们不能说这些特性使程序更加漂亮,但确实有很多现有的对象得益于这些特性。

Visual Basic在6.0版中还引入了一个新的窗体生成工具,功能与Internet Explorer差不多。这种称为DHTML的窗体,即使应用程序在本地运行,看起来也象是一个Web站点(与新的HTML帮助文件相似),这种窗体在象传统Visual Basic窗体一样使用事件处理模型的同时,引入了Internet Explorer丰富的格式处理功能。

Delphi提供了一些Visual Basic没有的很好的纹理控件。大多数Delphi自身的控件都带有源码,它们静态连接到最终的窗体对象。除了可以方便地跟踪进源代码查找错误外,代码静态连接到对象会使得窗体感觉更加生动。读源代码是获得编程经验最好的方法,您可以使用系统提供的源代码对陈旧的表格进行重用:进行剪贴就够了。

PowerBuilder 6.0也做了一些努力试图改善用户界面,但仍停留在原来版本那种低效率的界面形式上。PowerBuilder坚持每次只向用户展示一种功能,如果试图激活一个已打开的对象而不是去找到这个已打开的对象,PowerBuilder就会报错。PowerBuilder的工具条以奇怪的方式变幻,但又不能不理它们,因为很多操作只能在工具条下进行。

在ActiveX/COM集成方面PowerBuilder已经落后于Delphi和Visual Basic了,它只支持动态派发。Visual Basic和Delphi在编译时可以安全检查出的错误,在PowerBuilder中会只到运行时才报错。不支持静态键入也影响了系统性能。PowerBuilder虽然标价很高,但所带控件最差。


生成报表


无纸办公需要些什么?管理人员还是需要报表,在客户机/服务器编程工具中报表生成器是一个重要部分。

Visual Basic现在具有良好的报表生成器,这要归功于数据库拖放操作的加入。通过添加新的Active组件,新的报表设计器可方便地进行扩充。

尽管如此,在Visual Basic强大的功能中报表生成器仍是一个薄弱环节。新的报表只能在可执行程序中使用,在DLL中不行。这样报表对于Web站点设计者就不大有用,因为Visual Basic Web服务器一般是DLL格式,而且HTML输入只能定向到一个文件。在Visual Basic中生成Crosstab报表仍需使用Crystal报表。

Delphi报表生成器有许多与Visual Basic相似的缺陷,包括差的Web集成。另外,Delphi的报表生成器没有完整的说明文档,不方便使用。好处是其代码可用。

PowerBuilder仍然具有最强大的报表功能,只有它具有可以直接在Web应用程序中使用的报表生成器。PowerBuild支持Crosstab报表,nested报表以及其他一些吸引人的特性。其用户界面可以与Visual Basic报表产生器相比,而且支持更多类型的报表。


创建组件

RAD工具是要使用组件者,现在的RAD工具也提供创建新软件组件的功能。使用根据自己的需要制作的组件,开发组可以增强其客户机/服务器编程项目的功能。

对于客户机/服务器开发人员来说,创建自己的组件是相对比较新的技术。由于可以把组件迅速集成到成品中,开发环境才得以流行。但在很多情况下,使用这个工具开发组件是比较困难的,或是不可能的。PowerBuilder现在仍然如此,不可能创建新的控件或其他组件,Delphi和Visual Basic都有较强的创建组件的能力。

在Visual Basic中创建新控件比较容易,创建时使用创建应用窗体的使用的窗体设计器。这些控件本身是ActiveX控件,可立即在任何ActiveX容器中使用。主要的不足之处在于DLL运行时间长以及流程受到限制(只对于apartment模型)。除了DLL运行时间的缺陷外,Visual Basic控件通常要比Delphi和PowerBuilder的类似的控件小。

Delphi提供了与Visual Basic类似的创建控件的方法。另外,使用Delphi 4还可以选择小控件方式(动态连接)和零运行时间方式(静态连接)。零运行时间方式只能在非数据库控件或基于MIDAS的控件方式下工作,产品带的所有数据库控件,都需要使用BDE。不仅BDE要作为单独的程序进行安装,按照许可协议它还必须由Inprise许可的安装安装人员安装(也就是安装防护)。MIDAS允许只在服务器上安装BDE,但它需要另外为每台服务器付许可费。从这方面看Delphi 4比Delphi 3.0退化了,在Delphi 3.0中不需另外的许可证,可以从基于服务器配置的BDE中借用控件。

PowerBuilder组件只对于其他PowerBuilder应用程序有用,在使用多种语言的公司中,使用这些组件所受的限制将使其他一些优点变的没有意义。组件不能静态键入,也不能被调试,用户只能在单独安装了PowerBuilder的机器上使用这些组件。PowerBuilder坚持每发送一个应用带一许可证,但其技术仍瞄向使用向最终用户收费的许可证。


面向企业的RAD

这三种工具都以某种方式宣称自己适合于“企业”软件开发,不过这可以从多个方面解释。在本报告中,我们从三个基本方面来看企业软件开发:

创建新类型服务器的能力。为了升级和支持功能,创建可用企业广域网访问的“事务逻辑”组件十分有用。这些组件可能可以或根本不能运行在象Microsoft Transaction Server这样的事务管理软件下。
支持非正规数据源的能力。相对而言只有较小比例的企业信息存放到了关系数据库中,企业软件必须能从非关系型数据库、普通文件或其他不基于SQL的数据源中获取数据。
支持有几十个程序员的工作组开发项目的能力,。与源代码控件的集成是一先决条件,不过其他一些工具如建模工具以及组件仓库等,对于大型项目的开发组来说也很有用处。

创建新服务器

对RAD工具另一个新的需求领域是“三层”应用程序的设计,三层逻辑是指客户端、“事务逻辑”服务器以及后端数据库服务器。

Delphi和Visual Basic中的三层设计是基于DCOM的,而PowerBuilder有自己的分布对象模型库。这种状况反映了Delphi和Visual Basic集中面向Windows,而不是象PowerSoft那样设计目标是多种操作系统。在PowerBuilder中首次出现分布对象时,所有支持PowerBuilder的平台上还不支持DCOM和CORBA。

在Visual Basic中创建三层逻辑比较容易,因为COM是Visual Basic自带的对象模型,创建分布式对象和创建本地对象一样容易。多个COM组件可在相同的工作环境下创建,然后在代码可正确工作后再分布到其他地方。调试器有很多支持多组件测试的强大功能,对COM调用的跟踪可以使调试者跟踪到其他的过程然后返回。当组件被另一个应用程序创建时,断点生效,即使不是在调试器的控制下启动应用程序,也仍然如此。这对于测试NT服务使用的组件十分有用。有时候会困扰您的问题是开发环境的单流程特性,这时必须求助于Visual Studio的调试器。遗憾的是这种多流程的调试器还没有被集成到Visual Basic开发环境中。

6.0中一个简单却十分重要的改进是,向CreateObject加第二个参数时允许计算机安装制定的要求创建这个对象(这在Visual Basic 5.0中是不可思议的)。6.0中另一个重要的改进是支持ADO。ADO允许结果集合从服务器交回,在客户端进行浏览。创建新的独立的ADO数据源(非从SQL数据库中取回)十分方便,只要向数据组中填充数据即可。

Microsoft Transaction Server可加速三层应用程序的实现。使用MTS,可在几乎没有编程的负担的情况下获得分布式处理支持、安全序列以及性能管理能力。尽管使用Delphi和PowerBuilder也可以创建MTS对象,但Visual Basic提供了开发MTS组件最便捷的方式。通过在对象浏览器中设置一个属性,COM组件就变成了一个纯粹的MTS组件。Visual Basic支持COM调试的功能很多,您可以轻松地从客户软件通过MTS跟踪到服务器组件,就好象没有中间层的存在一样。相比较而言,Delphi需要在两个开发环境中切换(一个用于客户端,一个用于服务器端),而PowerBuilder根本不支持在这种环境下的调试。

在Delphi中创建三层逻辑要困难一些。尽管使用Delphi创建DCOM和CORBA对象十分简单,但Delphi自身的对象不能简单地传送到外部的客户程序,一种类型的库只能由提供的类型库工具创建,其他的都不能完成。其较差的文档资源也令开发人员感到十分不方便。

Delphi在其MIDAS产品中提供了与ADO相似的特性,MIDAS甚至比ADO有更多的配置选项。二者都可以在DCOM或TCP连接之上操作(ADO工作在TCP上需要远程数据服务(RDS)的支持)。另外MIDAS技术支持在加入DCE的CORBA和OLEnterprise上应用。MIDAS只支持Inprise产品,不象基于Microsoft的ADO模型那样有足够多的第三方支持能力。Delphi的调试器不能象Visual Basic那样跟踪进程的COM调用,这需要安装一些其他配件以使调试工作正常进行(尤其是与MTS一起时)。

MIDAS必须另外付费进行许可验证(与ADO不同),支持CORBA的部分也必须在编译器之外另付许可费用。在竞争如此激烈的市场领域中,Inprise是否会坚持这么做,让我们拭目以待。这些特性是否会吸引开发人员进行另外的投资呢,现在还不清楚。

通过创建“自由流程”程序,Delphi可提供更大的灵活性,自由流程对创建服务器对象很有好处。Visual Basic的顶尖高手也可以做到这些,但要冒一定风险,他有可能会跟踪到自己的流程之外,而Delphi自带的编译器可灵活地处理多流程程序。

PowerBuilder对流程的控制比Visual Basic还要差,调试器在多组件的环境中毫无用处。PowerBuilder中的调试方法一般是先在单用户非分布的环境中测试组件(任何语言都可做到),然后期望它可以在分布式多组件的环境下正常工作(不是好的做法)。

PowerBuilder差劲的性能决定其在开发服务器应用时无所作为。在一个快速的客户端,可以花费一定的处理器周期运行PowerBuilder脚本,但在一个需要为几百个用户并发服务的服务器上,不可能使用PowerBuilder。


非关系型数据源

企业的大部分数据仍然未放置到关系型数据库中:普通文件、继承型数据库,或者是字典服务器或消息服务器上的新数据。三种产品都支持程序员对非关系型数据库的数据源进行处理。

Visual Basic和PowerBuilder解决这个问题使用的方法相类似,首先把从数据源收集来的数据放到一个通用的记录容器对象中,然后把数据的集合送到客户端。这个过程最基本的内容是有一个未连接到SQL源的记录容器对象。

Delphi的方法遵循了传统的OOP模式:要创建自己的数据源,必须在自己定制的对象中实现IProvider接口。这种方法对于OOP程序员来说可能比较熟悉,但要人从头学起就比较困难。使用这种方法的好处是可以创建更加灵活的高性能数据源。Visual Basic也支持这种方法,途径是创建OLEDB源。

使用非关系型的数据源另一方面的工作是把数据收集到服务器以为客户端服务。尽管人们一直用ODBC接口放置非关系型的数据,但ODBC并不太适合这类应用。如果处理的不是SQL数据源,ODBC所需的SQL会在性能上带来麻烦。在处理非SQL数据源方面,新的OLEDB/ADO模型是更灵活的模式。

通过编写访问ADO对象模型的代码,所有程序都可以处理OLEDB数据源。

Basic中的ADO

Dim rs As New ADODB.Recordset

Dim r As String

rs.Open "select * from publishers", "DSN=pubs;UID=sa;PWD=;DATABASE=pubs"

While Not rs.EOF

r = r & rs(0)

rs.MoveNext

Wend

Visual Basic是唯一完全支持其他ADO的开发环境,所有的数据库浏览器和Wizard程序都支持ADO数据源。

Delphi中的ADO

Var
rs: Recordset;
r: string;
Begin
rs:= CoRecordset.Create;
rs.Open('select * from publishers','DSN=pubs;UID=sa;PWD=;DATABASE=pubs'
adOpenForwardOnly,adLockReadOnly,adCmdText);
while not rs.EOF do
Begin
r := r + rs.Fields[0].Value ;
rs.MoveNext;
end;
除了语法有些不同外,Delphi代码和Visual Basic代码看起来非常相似。在第6行我们可以看出,在Visual Basic和PowerBuilder中我们需要提供作为缺省参数的参数,而在Delphi 4中就可以不提供,它会自动支持缺省参数。Delphi 4中的Object Pascal支持缺省参数,但还不支持类型库导入特性。Delphi还要做很多工作以把ADO数据源与Delphi控件绑定,目前Delphi 4中的所有工具都不支持ADO。

PowerBuilder中的ADO

string r
rs = CREATE OLEObject
rs.ConnectToNewObject("ADODB.Recordset.1")
rs.Open("select * from publishers", "DSN=pubs;UID=sa;PWD=;DATABASE=pubs")
do while Not rs.EOF
r = r + rs.Fields[0].Value
rs.MoveNext
Loop
PowerBuilder不支持COM接口的静态键入。在我们看来,这一点只是对不多用ADO编程有影响。其语法十分简洁(与Visual Basic例子相近),但一些语法错误只有在运行时才能发现,而不是在编译时。动态键入对性能也有较大影响,在处理外部对象模型的语法时,PowerBuilder不提供弹出式的帮助信息。


工作组编程

三种产品都面向多种程序员的企业级项目,这意味着它们最低也要有源代码控件的集成。新遇到的问题是源代码控件和预先创建的软件组件,即组件仓库等价的问题,另外许多基于OOP的项目都寻求可视化的建模器进行类设计。最流行的可视化类设计方法是基于Unified Modeling语言(UML)的,UML超越了先前的Booch和DMT方法。

Visual Basic和PowerBuilder自身都提供一个源代码控件系统,同时有将这些控件系统与其他源代码控件系统相集成的接口。Visual Basic可提供被广泛使用的Source Safe产品(微软提供),而PowerBuilder提供知名度稍低的ObjectCycle(同是Sybase提供)。二者中Source Safe更容易使用,与项目管理器相集成得更好。ObjectCycle的特性是,它唯一建立在关系数据库基础上的源代码控件系统,这种设计以前做过专门的介绍。

Delphi不提供源代码系统,但提供集成第三方系统的接口。Inprise的市场部门特别强调Delphi可集成广泛使用的PVCS。

Visual Basic提供最完整的库以及三种产品中唯一的可视化建模器。Visual Basic使用Microsoft Repository,它包含了多种语言和对象模型。它还提供Visual Component Manager,为向仓库中插入和取出组件提供了GUI接口。Microsoft Repository本身是基于关系型数据库的,这一特点便其方便于制作专门的报表和扩充。可视化建模器基本上是Visual Basic中Rational Rose的完整子集,Rational Rose是市场上最流行的可视化建模器之一。

比较而言,Delphi和PowerBuilder只提供自己的对象库,Delphi不基于关系数据库,所以生成报表相对困难,两种产品都不提供可视化建模器。

Visual Basic还提供Application Performance Explorer,这个工具可以测试使用不同数据库及接口(如ADO和ODBC等)的两层或三层方案不同配置下的性能。在进行编程之前研究不同方案并进行测试是很有好处的,当然这种工具不是一种常用的工具。


RAD对Web站点的支持

现在许多企业的编程项目把Web作为基本组件。尽管客户机/服务器仍然是现有企业结构中的重要部分,现在RAD工具已重新定向到支持创建具有Web配置的应用程序。这个报告中测试的三种产品都支持开发Web配置的应用程序,支持相同级别的抽象概念。与标准的Web CGI开发相类似,所有工具都方便于解析HTTP请求,提供图形界面来支持设计用HTML格式显示的数据库查询。三种工具都不支持HTML编辑器和HTML窗体设计器。三者都支持使用外部工具,我们可以方便地使用InterDel和FrontPage等工具,当然还有Notepad。三种产品都支持GUI数据库窗体和报表作为Netscape插件或ActiveX控件在浏览器中运行。

Visual Basic是最方便实现Web站点的工具。不需改动配置,用Web启动Wizard建立一个工作的Web站点,随后可以进行修改。调试时可在应用程序加载Web站点的同时,在Internet Explorer中打开它,真是太棒了。InterDev用户在看到Active Server Page(ASP)和Visual Basic的集成情况时一定十分高兴,通过用Visual Basic重写丰富的页面,可方便地改善ASP站点。在ASP下,完整的应用程序可作为COM对象运行,一个完整应用程序最低应该包括一个自动记录的COM对象、一个管理器COM对象、Visual Basic运行时间DLL以及一个Visual Basic自动产生的ASP保存页。整个站点的性能十分好。

Visual Basic使得使用cookie跟踪用户会话变得十分简单。按照标准ASP模型,用户第一次访问Web应用程序时,系统自动建立一个会话cookie,Web对象引用会话系统对象获取和存储当前会话的信息。另外会话被自动设置超时。另外的两种产品若使用cookie,Web开发人员必须编写cookie跟踪代码,在PowerBuilder中使用cookie尤其糟糕。

Visual Basic也存在一些缺陷。从Web DLL我们不能访问新的报表生成器,为完成这一工作,我们必须启动一个Active执行服务器,然后进行过程外的调用。即使在内部执行体中,我们也只能把报表写到文件而不能直接送回浏览器,这很不值得.这样的Web站点会比基于C++/ISAPA的系统更慢。

Delphi在这项工作上遇到了极大挑战,使用Delphi,分布工作十分难,下面是一些问题和方案的列表(以免您被要求用Delphi开发Web站点):

实现“Hello, World”Web站点。与Visual Basic不同,使用Web站点Wizard不能建立一个可工作的站点,不过在参考书的指导下,一个小时内还是可以让其工作起来。
向站点加载任务,站点崩溃。
在调试器中按照说明运行IIS,不能正常工作。在IIS文档中寻求帮助,可找到运行IIS过程的指导。现在我们可以让IIS在Delphi调试器中运行了。
现在Web站点最多可工作在有10个访问加载的情况,否则就崩溃,显示“too many connection error”这样的信息。在打印文档中查不到帮助。在在线帮助中找到关于“Max Connection”属性的帮助,现在“Hello, World”Web站点可工作在多达100个流程的情况下。
启动数据库,会出现错误,显示“BDE out of memory”,重新启动Delphi,会出现“BDE Directory Locked”错误,重启机器,这次未出现前面的错误,可正常工作。
加载的站点又出现“duplicate database name”错误,指出如何在最初创建单一的数据库名。为什么数据库会话可自动获得它们所需的单一名字,而数据库不行呢?
对站点加载访问又出现“BDE out of memomy”错误。查看BDE管理帮助手册,看看BDE需要多少内存,不清楚;它现在用了多少内存,不清楚。在手册中只能找到一些设置错误、挂起情况、错误信息和参数使用的说明。天哪,它又可以工作在负载下了。
与Visual Basic类似,Delphi的报表也不能在Web应用下访问。不过Delphi有一个TQueryTableProducer组件,可支持可视化地创建简单数据库查询,以及用一些简单代码连接Web站点。

与Visual Basic相比,Delphi的真正实力在于对Web服务器的支持,Visual Basic是对IIS的支持。Delphi不支持与Active Server page的集成,但也可以通过其他一些措施完成。Delphi的配置方法在三者中是最简单的,直到把可执行代码放到脚本目录就完成了安装。

完全的Delphi应用程序在某些测试中性能很好,但在另一些测试中可能会出人意料得很差。Delphi的运行时间库不能很好地在SMP机上升级,在使用多个处理器时比较困难。它所提供的运行时间源码具有一些“临界段”,会影响Delphi的性能。

在服务器环境下BDE的健壮性也是潜在的问题,它偶尔会产生内存漏洞,使Delphi应用程序不能正常工作(返回“BDE out of memory”)。一种可能的解决方法是重启Web处理机(清除BDE),另一种方法就是不使用BDE。在进程之间共享有限内存情况下使用BDE令人不放心,这样可能会使某些关键任务的应用程序被同一机器上其他使用BDE的应用程序破坏。即使BDE具有稳固的状态(只有在所有BDE应用程序重新启动时BDE才重新启动),但还没有工具能查询它的健康和操作特性。

用PowerBuilder进行Web站点开发被证明过于繁琐。三种工具中只有PowerBuilder不允许在浏览器中进行调试应用程序,相反每个功能块都必须作为单独应用程序进行测试,然后期望它能正确运行在Web浏览器中。配置后应用程序的性能是不可知的。

PB Web方案的健壮性是可怕的,我们甚至不能保证运行几秒钟的ISAPI时整个Web服务器不崩溃。甚至在我们使用原来的CGI时,偶尔也会见到PowerBuilder CGI模块出现保护错(至少使用CGI时Web服务器仍在运行)。因为应用程序保护错误层出不穷,我们不推荐用PB Web做任何Web开发,甚至是Web站点的改进。

与其他两种产品不同,一个PowerBuilder Web应用程序必须按自己的过程运行。一个PowerSoft提供的执行模块把Web服务器生成的ISAPI、NSAPI及CGI请求映像为PowerBuilder远端过程调用,这些额外开销影响了服务器的性能。PowerBuilder应用程序的配置包括PowerBuilder小模块,即一个启动应用的小执行体,一个真正应用程序代码的DLL,一个支持PowerBuilder Web库的DLL以及将它们组合在一起的一个pbweb.ini文件。

在使用IIS和Netscape 3.51分别测试ISAPI和NSAPI时,我们一直不能无错地运行很长的时间,SyBase内部的消息以及使用PowerBuilder 6.0的开发人员也证实了相同的问题。离开CGI就不能提供工作区,但可以预测PowerBuilder中的CGI性能很差。

三种产品中PowerBuilder是唯一可在Web应用程序中有效使用可视化设计报表的工具。由于所有数据窗口都可以按HTML串格式输出,因此在Web站点中使用它意义不是很大。PowerBuilder还是唯一可以展开到Solaris、HP/UX和AIX服务器的产品,不过Solaris、HP/UX和AIX服务器只支持CGI,不支持PowerBuilder在Windows中的一些其他Web开发特性。


性能评测结果

    Visual Basic
Delphi
PowerBuilder

概括(比数的方法,越大越好)

总体
与PowerBuilder相比的速度
9.3
9.0
1.0

SQL
与PowerBuilder相比的速度
1.8
1.2
1.0

字符串
与PowerBuilder相比的速度
2.7
1.9
1.0

编译器
与PowerBuilder相比的速度
53
89
1.0

Web
与PowerBuilder相比的速度
18.2
19.1
1.0

SQL(毫秒,越小越好)

  调用存储过程
2.8
3.8
4.0

  准备好的查询
2.8
4.2
8.9

  复杂查询:计算中值
5.4
8.9
7.5

编译器(毫秒,越小越好)

编译器
COM调用
1.8
.70
290

  Tak
5.9
5.4
210

  Sieve
17
8.2
490

  Permutations
160
120
7,800

字符串测试(毫秒,越小越好)

字符串
格式字符串
140
47
820

  查找所有串
0.4
11
21

  查找一个(向前)
4.4
3.1
0.7

  查找一个(向后)
3.4
3.3
1.0

  全部替换
100
100
1100

Web(页/秒,越大越好)

Web/SQL
Web插入记录
58
110
2.5

  Web查询23个记录
50
25
2.3

Web
Hello, world
120
230
11(1)

  Hello, world x 1K
80
29
1.8(1)

  Hello, program
120
120
9.5(1)

  Shared State
110
230
9.5(1,2)

测量结果到两位精度(1%)

ISAPII为100个流程(Visual Basic和Delphi),CGI为10个流程(PowerBuilder)

测试系统为两台200MHz的Pentium Pro计算机

SQL Server 6.5

Windows NT 4.0, service pack 3, option pack(IIS 4.0)

使能所有编译器的优化

1 CGI应用崩溃

2整个应用崩溃


 

Delphi和Visual Basic所带编译器生成代码的代码相近,用Delphi编译的结果比Visual Basic编译的结果稍快。但Visual Basic带的组件(很多用汇编和C++实现)比Delphi带的组件更快,Visual Basic基于OLEDB的数据库访问组件也无可质疑地比Delphi的基于BDE的数据库访问组件更快。

PowerBuilder生成的程序最慢,总体性能PowerBuilder要比Visual Basic和Delphi慢九倍,源代码速度要比Visual Basic和Delphi慢50倍。

PowerBuilder的ActiveX组件在没有预先绑定支持的情况下特别慢,比Delphi使用ActiveX组件慢400倍以上,与Visual Basic相比约慢200倍。我们知道,在PowerScript中没有明确的方法可进行预先绑定。

限制Web站点使用CGI,使PowerBuilder比其对手慢了很多,我们不得不把并发的流程降到10以使CGI的工作能与服务器的性能相匹配。即使只有10个并发访问,我们的两台200MHz服务器在整个测试中还保持在100%的利用率。

PowerBuilder自带的编译器,在5.0中曾着力宣传,在6.0中却不被重视(p-code又被重新利用)。尽管自带编译器很慢,但PowerBuilder的p-code更慢(慢8到20倍)。

 


测试说明

总体速度
  使用比值法,用PowerBuilder时间除其他工具的时间

SQL
调用存储过程
调用一个简单的存储过程检查一个记录是否存在

  简单查询
与存储过程类似的查询,但不使用存储过程

  计算中间量
在21个记录的集合中寻找中间值(Pub.sales)

编译器
COM调用
对程序中的COM进行10K次调用

  Tak(整型)
如果y大于或等于x,Tak(x,y,z)=z。这是非递归的停止条件。否则,如果y比x小,Tak(x,y,z)=Tak(Tak(x-1,y,z),Tak(y-1,z,x),Tak(z-1,x,y))

  Sieve
在小于100K的整数中寻找素数,做100个循环。

  Permutations
寻找0到8的整数之间所有的置换。这个算法用于数据最小化和其他代码优化,取自C++标准库。

字符串
格式化字符串
联接1000个从整型转换来的含10字符的字符串。

  查找所有字符串
在10000字节的字符串中查找100个含某两字符的字符串。

  向前查找
在10000个字符的串尾查找10个字符的串。

  向后查找
在10000个字符的串首查找10字符的串,从字符串的最后开始查找。

  全部替换
在一个10000字节的串中,用两字符的串替换某个字符,完成100个。

Web
插入记录
插入单个40字节的记录响应Web页访问,使用100个流程统计页每秒。

  查询23个记录
利用从SQL服务器返回的23个记录创建HTML表格(Pubs数据库,author字段),使用100个流程统计页每秒。

  Hello, world
一个只是动态产生"Hello, world"的Web页,它体现了动态Web页的最小开销。使用100个流程统计页每秒。

  Hello, world x 1K
大的Web页(16K),用于测试所生成Web页的传输开销。使用100个流程统计页每秒。

  Hello, program
测试提交一个窗体并返回响应所用时间。使用100个流程统计页每秒。

  Shared State
更新一个应用计数器,显示从程序启动开始共有多少次访问。使用100个流程统计页每秒。


 


功能性评测结果

  Visual Basic
Delphi
PowerBuilder 6.0 Enterprise

COM支持
     
后绑定
Yes
Yes
Yes

预先绑定
Yes
Yes
No

命名参数
Yes
Yes
Yes

在服务器内
Yes
Yes
Yes

在服务器外
Yes
Yes
No

对象浏览器
Yes
Yes
No

Apartment流程
Yes
Yes
No

自由流程
No
Yes
No

调试器
     
跟踪进入
Yes
Yes
Yes

跟踪跳过
Yes
Yes
Yes

显示调用栈
Yes
Yes
Yes

条件断点
Yes
Yes
Yes

观察变量
Yes
Yes
Yes

显示CPU寄存器
Yes(Visual Studio Debbuger)
Yes
No

调试机器代码
Yes(Visual Studio Debbuger)
Yes
No

显示反汇编
Yes(Visual Studio Debbuger)
No
No

单步通过存储过程
Yes
No
No

多流程
  Yes
No

停止COM创建对象
Yes
只在进行中可以
No

跟踪COM调用
Yes
No
No

跟踪有MTS的COM调用
Yes
No
No

远程调试器
No
Yes
No

编辑器
     
可扩充环境
Yes
Yes
No

拖放
Yes
Yes
Yes

多功能窗口
Yes
Yes
No

语法额颜色标注
Yes
Yes
Yes

函数功能
Yes
Yes
No

在编辑器中设置断点
Yes
Yes
No

编程语言
     
对象的再利用
Yes
COM对象
Yes

类继承
No
Yes
Yes

多重抽象接口
Yes
Yes
No

模板/类
No
No
No

栈分配对象
No
No
No

方法重载
No
Yes
 
运算符重载
No
No
No

缺省参数
Yes
Yes
No

Apartment流程
Yes
Yes
No

自由流程
No
Yes
No

函数指针
只用于调用
Yes
No

运行时间类型检查
Yes
Yes
Yes

按名调用
Yes
No
Yes

"标准"调用方式函数
Yes
Yes
No

"C"调用方式函数
No
Yes
No

用户定义联合类型
No
Yes
No

通过值传递用户定义的类型
Yes
Yes
Yes

通过指针传递用户定义的类型
Yes
Yes
Yes

返回用户定义的类型
Yes
Yes
Yes

通过值传递数组
Yes
Yes
Yes

通过指针传递数组
Yes
Yes
Yes

返回数组
Yes
Yes
Yes

例外
Yes
Yes
No

内嵌汇编
No
Yes
No

调用Windows API
Yes
Yes
无调用

使用源文件进行定位
Yes
Yes
No

提供运行时间库的源代码
No
Yes
No

数据绑定
     
绑定控件与数据库查询
Yes
Yes
Yes

绑定控件与ADO/OLEDB对象
Yes
No
No

绑定控件与用户创建的数据源
Yes
Yes
Yes

绑定存储过程
Yes
Yes
Yes

创建OLEDB数据源
Yes
Yes
No

编写报表
     
输出HTML
Yes
No,查询可用HTML格式,但不是QuickReport
Yes

输出双字节码
Yes
No
正在Beta测试

Cross列表报表
No
No
Yes

编译器
     
警告未用到的变量
No
Yes
No

警告使用未初始化的变量
No
Yes
No

警告未用到的赋值
No
Yes
No

警告对循环变量的赋值
No
Yes-视为错误
No

警告无返回值的函数
No
Yes
Yes─视为错误

随意地删除Pentium FDIV错
Yes
Yes
No

随意删除数组限定检查
Yes
Yes
No

创建Windows API DLL's
No
Yes
No

创建单独可执行体(无需DLL)
No
Yes
No

面向的平台
     
Windows 95/NT
Yes
Yes
Yes

Unix
通过HTML
通过HTML
Yes

NT/Alpha
Yes
No
No

Windows CE
Yes
No
No

Web特征
     
调试作为服务的Web服务器
Yes
No
No

调试作为应用的Web服务器
No
Yes
No

在浏览器中嵌入窗体
Yes
Yes
Yes

在浏览器中调试窗体
Yes
Yes
No

ISAPI
Yes(通过ASP)
Yes
No

NSAPI
No
Yes
Yes

CGI
No
Yes
Yes

联接轮询
Yes
Yes
Yes

创建可下载的控件
Yes
Yes
需要单独安装

GUI窗体可被嵌入到Web浏览器中
Yes
Yes
Yes

创建Web界面的本地应用
Yes
Yes
No

为Web界面提供源代码
Yes
Yes
Yes

Wizard/代码产生工具
     
Client/Server Wizard
Yes
Yes
Yes

3 Tier Wizard
Yes
Yes
Yes

创建Web应用
Yes
Yes
Yes

NT服务
No
Yes
No

Wizard Wizard(生成Wizard)
Yes
No
No

属性页Wizard
Yes
Yes
No

安装/配置Wizard
Yes
Yes
Yes

Web配置Wizard
Yes
Yes
Yes

数据窗体Wizard
Yes
Yes
Yes

存储过程生成工具
Yes
Yes
No

设计/分析
     
UML对象范型
Yes
No
No

代码结构分析器
No
No
Yes

设计模拟器
Yes
No
No

组件结构分析器
Yes
No
No

组件
     
日历
Yes
Yes
Yes

Tab
Yes
Yes
Yes

Wizard
Yes
No
No

网格
Yes
Yes
Yes


Yes
Yes
Yes

控件列表(控件转发器)
Yes
Yes
Yes

分级网格
Yes
No
No

制图
Yes
Yes
Yes

Modem/Telephony
Yes
No
No

FTP/HTTP/SMTP
Yes
Yes
No

TCP
Yes
Yes
No

Web Browser
Yes
Yes
No

MAPI
Yes
No
Yes

Lotus Notes
通过MAPI
通过SMTP/POP
自带API

丰富的文本
Yes
Yes
Yes

发展
Yes
Yes
Yes

提供的服务器
     
数据库服务器
SQL Server
InterBase
SQL Anywhere

源代码控件
Source Safe

Object Cycle

SNA
SNA服务器



组件仓库
Yes
No
No

字符串功能
     
查找子串
Yes
Yes
Yes

反向查找子串
Yes
   
查找并替换
Yes
   
无用串的收集
Yes
Yes
Yes

数据管理
     
创建/编辑/查看查询
Yes
Yes
Yes

可视化地创建/修改表格/查看
Yes
不通过SQL
Yes

编辑存储过程
Yes
No
No

对数据库图解
Yes
No
No

将存储过程与源控件集成
只对SQL Server
No
No

创建组件
     
CORBA支持
No
Yes
Yes

  Yes
Yes
Yes

ActiveX文档
Yes
No
No

Netscape插件
第三方
Yes
Yes

轻(无窗口)控件
Yes
No
No


 


可用性评测结果

  Visual Basic
Delphi
PowerBuilder

调试器
很好

一般

编译速度(调试)
很好
很好
很好

编译速度(正式)
很好
很好


编译警告/错误

很好


编辑器
很好
很好
一般

语言




安装/配置

很好


Wizard




报表生成器
很好
一般


查询生成器
很好
一般
一般

数据库设计器
很好
一般
一般

多流程支持
一般



代码浏览
很好



SQL语法


很好

COM接口
很好

一般

Win32 API

一般


使用cookie
很好



共享Web状态
很好

一般


Visual Basic比Delphi易于学习,二者都明显比PowerBuilder易于掌握和使用。使用哪个产品需要开发的代码量是相近的(见附录A的代码),基于此,我们可以认为对于熟练的开发人员来说,使用每个产品的生产能力水平应是相近的。由于Visual Basic和Delphi提供了更好的编程条件,因此我们可以认为Visual Basic和Delphi的程序员每天编写的已进行调试代码行,应比PowerBuilder开发人员多。

Visual Basic比Delphi更容易学习。象现在这样编程项目不断更换,Visual Basic可提供使人们迅速跟上项目的发展的环境。Delphi程序员可以做得更好一些,不过在高复杂性、高性能需求方面,二者都不能与基于C++的产品相比。

Visual Basic有最佳编辑器和调试器,被证明最可靠,编译速度快。程序员使用的用户界面友好,在线文档的组织优秀。Visual Basic自身的对象模型是COM,因此没有语言比它更适于使用或创建ADO和MTS这样的组件。Visual Basic是最方便于创建Web站点的RAD工具。

Delphi可静态连接执行,这一点很受欢迎。Visual Basic的设计是派发在运行时间动态连接到一起的应用程序,这表明需要一个启动程序分布组件和修改注册表。运行时间问题可以由安装时的错误得出;或是更坏的情况,由其他人安装时出现错误得知。Delphi的优点是可以生成单独执行体以及DLL's,只需把它们复制到最终目的就完成了配置。Delphi中大部分常用的组件是静态连接到可执行体中的,例外情况比较典型的是Borland Desktop Engine,它必须与大部分Delphi应用程序一起安装。在三层结构支持下,可以把无BDE的Delphi应用程序放到客户端,但在服务器端仍然需要安装。

Delphi与Visual Basic以及PowerBuilder相比有更强的代码分析能力。使用Delphi能在下述代码中发现一些错误,但使用Visual Basic不能找到。Delphi在发现可检测到的编程错误时会发出提示,这些提示有助于我们不进入调试器就发现并解决一些错误。

Private Function foo() As Long

Dim x As Long

Dim y As Long

For x = 1 To 3

x = 2

Debug.Print x

Next

x = 5

End Function

在PwerBuilder下开发测试代码要花很长的时间。它没有支持Web页的调试器,这就要求我们必须开发另外的测试代码。其调试器虽然比5.0有了很大改进,但与Delphi或Visual Basic相比它与编辑环境的集成还差很远。

在PowerBuilder开发环境下浏览类是困难的,同时查看或打印多个函数也很困难,这样程序员就倾向于写更长的、可读性差的函数。6.0的环境比5.0有很大提高,但还是很不完善。


选择RAD工具

每种工具都比它们的前一个版本有了很大改进。为便于维护现有的项目,我们建议您对现有的工具从较低版本进行升级(例如是为Web项目使用PowerBuilder 6.0,5.0更稳定些)。如果是为新开展的项目选择工具,需要审慎地作出决定。

对三种工具都没有使用经验的程序员会发现Visual Basic更容易学习。学习时间是最初的开发时间,因此使用Visual Basic可以使他们可以更快地投入到生产性编程工作,从而提高开发组的生产能力。不是Visual Basic本身可提供的组件(如对象模板,组件仓库和源代码组件)可从第三方获得。如果您的开发组已经熟悉了Visual Basic,那么没有什么理由换成别的工具。Visual Basic现在具有与PowerBuilder类似的数据库集成能力,与Delphi相当的自身编译速度。

熟悉PowerBuilder的编程开发组,应该用心考虑选用其他的工具。Delphi和Visual Basic都能提供更好的编译和调试工具,Visual Basic还可提供更好的数据库集成工具。PowerBuilder的性能一直是个问题,在实现Web和多层分布式软件时更是不适用。与Delphi和Visual Basic比,即使是熟练的PowerBuilder开发人员,也要花费很多时间对程序进行调试(由于调试器的限制)和调整(由于性能问题)。由于PowerBuilder开发服务器代码的性能很差,因此PowerBuilder程序很难转向多层应用环境。由于无法克服的性能问题,PowerBuilder项目方案有更大的可能性被推翻重来,这也意味着用PowerBuilder实现真正可用的企业应用程序时,生产效率更低。

对于各种RAD工具,PowerBuilder的开发人员转换到Visual Basic是最容易的。PowerScript主要的是Basic变量(受C的影响),当然比Java, C++或Delphi的Pascal更接近于Basic。Visual Basic中的数据库工具可在一天内掌握,因此重新学习Visual Basic所用的时间很少。

熟练的Delphi开发组面临的选择最困难。选择了Delphi后,Delphi程序员可以与Visual Basic程序员一样高效地编程。Delphi的编译器也十分吸引人:它可生成快速的代码。Delphi的COM集成能力也不错,和除Visual Basic外的其他产品一样简便(包括微软的其他开发语言)。

尽管有这些方面的优势,但Delphi毕竟不是主流。寻找优秀的Delphi程序员是困难的,而培训新程序员代价较高──比Visual Basic高。Delphi所带工具集功能最弱(无源代码控件、无模板、很弱的库),对每三方支持也不够。Delphi最大的不足在于Borland Desktop Engine,它在健壮性和可管理性方面不能达到企业软件的标准。相比较而言,Visual C++和Inprise公司自己的C++ Builder一点不比Delphi难掌握,却可以广泛利用第三方的支持。对于新的项目,程序员和管理人员应该仔细考虑更换到一个更简便的环境(如Visual Basic)或是同样较难但功能更强大,更符合标准的环境(如C++)。






最近更新:1999年3月4日

加载更多回复(14)

16,473

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧