PowerBuilder 8.0 vs. Visual Basic6.0竞争分析 PowerBuilder 8.0 新特性 ■ 工作环境 新的工作环境允许开发小组控制多步进行的开发工作,包括一个或多个标准的客户服务器应用程序,一个或多个分布式组件应用程序和一系列web-targets。 ■ Targets(对象) 每个应用程序的部署对象都可能不同。对象包含关于应用程序和所需的部署类型的信息。 ■ Web Targets(Web对象) Sybase的PowerSite产品被全面整合到PowerBuilder的环境中,允许开发人员开发PowerBuilder应用程序、EAServer组件和/或HTML、JavaScript? web组件。 ■ 增强的对EAServer的支持 它能够轻松的与EAServer协作,特别为EAServer设计的功能使开发过程更简单并不会出错。 ■ 增强的稳定性和速度 PowerBuilder 8比PB 7性能更好且更稳定。 ■ 增强的源代码控制 源代码控制同其它非二进制代码环境中提供的方法一致。 ■ 增强的生产力 除了工作空间和对象之外,IDE拥有额外的功能来增强开发人员的生产力。包括增强的自动脚本、新的更强大的向导、用于部署应用或增强IDE的命令行界面, PowerBuilder 8的系统环境实现了以前版本所没有的潜在功能。 ■ 异常处理 类似Java?的异常处理现在成为PowerBuilder语言的一部分。这使得应用更为强健。 ■ DataWindow TM 增强 DataWindow是PowerBuilder中最强大的单独控件,它得到了增强,为Web-DataWindow功能添加了JavaScript的自动生成。 PowerBuilder 8.0 优势特性vs. VB 6.0 ■ DataWindow DataWindow 是一个非常强大的控件,它允许用多种格式和访问形式访问数据,编辑数据并生成报表。 HTML DataWindow 在基于浏览器的瘦客户解决方案中为开发人员提供了同样的DataWindow 功能。PowerBuilder能够在运行时建立查询、创建DataWindows并保存这些信息以供将来使用。这为PB程序的用户提供了特别的查询和报表功能。 VB没有与PB DataWindow相同的数据访问、编辑和报表功能。此外,运行时你无法创建一个VB Active Data Object (ADO)控件,而在PB中可以 ■ 面向对象 面向对象的开发一直是PowerBuilder的强项。利用PB中的图形化继承模型,对象的继承变的非常容易。 VB不是面向对象的。微软的一些控件就是为了弥补这个不足。比如,VB中的listbox和filelistbox控件。在面向对象的语言中filelistbox控件是一个特殊的listbox控件,因此能够被开发人员进一步特别处理。 ■ 平台无关 PowerBuilder的应用程序能够在Windows上运行,它的组件目前可以利用EAServer在Java环境中部署,未来还可以利用其它的第三方应用服务器。PowerBuilder 的客户可以通过EAServer访问CORBA, COM或JAVA组件,因此它是最灵活多变的工具。在PB中开发组件并将其部署到EAServer,还意味着PB组件能被外部的任意平台上的客户轻松访问。 VB的一个主要弱点就是它的平台相关性。如果运行微软之外的操作系统,用户就无法使用Visual Basic。VB与其它厂商产品的整合比较麻烦,微软想借此将开发人员锁定在MS SQL Server?和 MS Visual SourceSafe等自己的工具上。因此它不如PowerBuilder那么开放。 ADO是VB沿用的数据访问标准。这是另一个微软自定的标准,目前只受到微软自己工具的支持。 ■ 应用服务器整合 与EAServer 的整合意味着PowerBuilder的开发人员,能够使用COM 或CORBA中的任何一种对象模型来进行分布式组件开发。PowerBuilder的不可见对象能够作为CORBA 兼容的组件被部署到EAServer中,使得这些组件能够被任何前端软件访问。PowerBuilder的组件开发仍然很容易并且现在包括了远程调试。PB 也能将COM 组件部署到MTS。 VB只能运行于微软的MTS应用服务器,并且只遵循COM对象模型。 ■ 工作适应性 PowerBuilder 8.0适合于开发小型、中型和大型企业应用。商业数据和商业逻辑能够很轻松的用PB的对象模型进行封装,如果使用EAServer, PowerBuilder允许你将应用部署到任何平台。Web-targets和增强的EAServer整合使得PowerBuilder 成为一个开发分布式应用的强大工具。 PowerBuilder客户应用还能够连接到EAServer中的EJB, 进一步利用它的访问能力连接多种组件。 VB最适合用于开发中小型的应用,因为在可重用性方面它还存在缺陷。VB模型不支持任何Java访问,因此不能访问Java服务器和组件。 ■ 版本迁移 PowerBuilder的源代码移植起来非常简单。 VB用户没有通往.Net简单清晰的迁移途径。绝大多数VB 6编写的应用程序将不具备与.NET的向前兼容性。你会发现更多VB 6编写的应用需要某些类型的修改。看起来.NET更青睐C#语言,C#将是Java的竞争对手。而VB将被打入冷宫。 ■ 可伸缩性 PowerBuilder 能被用于开发小型、中型和大型客户-服务器应用程序。它也可以用于分布式环境。 Visual Basic主要适于开发中小型应用程序和微软自定的分布式组件。它只遵从微软自己的对象模型标准。产品并不开放。 PowerBuilder 8.0 超越VB 6.0的面向对象优势 ■ 内建的控件 PowerBuilder 自带一个包含175个控件的控件类集合,还能基于这些控件创建客户类。它还带有一个全面的类库,用来促进企业级客户服务器应用、分布式应用和组件的开发。除此之外,在PB环境中还可以访问任意的OLE或ActiveX? 控件。 ■ 外部控件 OLE 和 ActiveX控件能够轻松的被加进PowerBuilder环境中,或者通过内建的OLE支持功能进行访问。 ■ Internet 控件 PB包含了几个用于Internet访问的控件,不过它真正的特性是将PowerSite 产品集成进了整个开发环境。能够在一个环境中开发功能完备的Web网站已经让开发人员感到非常满意,而与EAServer的整合更是让 PowerBuilder成为强大的Internet开发工具。 Visual Basic没有自带内建的Internet控件,它要依靠第三方的控件。这样的缺点就是缺乏现成的Internet控件解决方案,就需要更多的评估时间――同时还需要更多的花销并与更多的厂商打交道,这也会增加系统的复杂度,带来更高的总成本。 ■ 业界标准的对对象模型的支持 PowerBuilder能够被编译成COM组件。通过与EAServer的集成, PowerBuilder 代码能够被当做 CORBA 组件进行部署,这使得PB组件能够被任何前端工具所访问。此外,PowerBuilder 8 提供了访问EAServer中部署的EJB的方法,打开了更多的访问通路。 Visual Basic仅仅支持微软的COM模型,它只允许组件被建为ActiveX 控件,而这种控件只能被用于MTS或COM环境。 ■ 其它(邮件, OLE等) PowerBuilder 直接支持MAPI,还可以通过第三方控件支持其它协议。能利用EAServer 还意味着PB能访问J2EE所有的系统,包括JavaMail。 PowerBuilder 8.0 超越VB 6.0的生产力优势 PB的DataWindow在数据访问方面具备优势,因为它在数据表示风格、数据访问支持和HTML生成功能方面样样出色。IDE的改进能够让开发人员更容易的使用更多的功能,对面向对象开发模型的支持使PB能够开发更大的系统。VB不能提供PowerBuilder/EAServer 整合系统所能提供的各种功能。微软的反Java战役使它在此领域也受到了伤害,而目前基于Java的应用仍在持续增长。 ■ 开发人员的生产力 对于客户服务器应用的开发来说, PowerBuilder 基础类库 (PFC)已经非常出色。PB本身内建了许多标准的商业功能,用于开发可靠的标准化客户服务器应用。此外,用于分布式开发的类库使得这些应用程序能够快速的被移植成分布式应用程序。 PowerBuilder 8 开发环境拥有几项对开发人员至关重要的辅助功能,包括workspaces(工作空间)、系统树以及与EAServer更紧密的整合。它的代码和/或对象能够轻松的被转为组件,使得整个应用能平滑得变为分布式应用程序。 在PB中能开发出DataWindow,它是PowerBuilder最重要的数据处理元素,DataWindow 能够在分布式应用中被重复使用,并能通过ASP或JSP页面进行访问,它是非常强大的工具,能显著减少整体成本。 ■ 软件重用带来的生产力 PowerBuilder的一个主要优势就是重用性。Visual Basic缺乏重新使用对象的能力。每个被创建的PowerBuilder对象都将变成一个可重用的类,创建一个对象的过程非常简单,只需选择 File|Inherit菜单,然后再选择File|Save菜单就可以创建新的对象类。一个对象已经存储后,立即能够被任何开发人员或者当前程序的任何对象使用。应用程序之前的共享可以采用类库的方式,或者直接在项目中包含所需的对象类的类库。额外的Powersoft Foundation Class Library (PFC,基础类库)给PowerBuilder带来更多的竞争优势。PFC是一个完备、经受实战考验的类库,它能支持绝大多数繁重的开发工作。它针对许多通常需要编程的领域进行了精心的设计。考虑到每个PowerBuilder 对象都是一个可重用的类或父类,PFC给PowerBuilder 的开发人员提供了能够与许多C++类库匹敌的工具库。利用定制的组件对类库进行扩充是相对简单的过程。组件的创建非常简便,在使用前只需将它们包含进项目中。VB的面向商业的类库功能相对弱的多。 PB能在运行时添加组件 (该组件在编译程序的时候并没有包含),这也是一个胜过Visual Basic的优点。PowerBuilder中拥有语言特性支持late-binding(推迟-绑定)和动态函数调用。因此,在PB中能编写可以随时扩充的应用程序。而Visual Basic 是一个early-binding (先期-绑定)的语言因此很难提供类似的功能。经过精心设计,一个应用程序能够通过调整所包含的类库,在运行时进行 "自行构建 "。应用程序可以预先编写代码访问那些在编译时没有被包含的组件,从而实现这个功能。PowerBuilder的另一个优势是它的代码能够由外部设计工具生成,比如Rational Rose 和 Riverton HOW。除此之外,在PowerBuilder 产品包中有一个Sybase PowerDesigner的演示版本,它能根据数据或者对象模型生成标准的基于PFC的代码。 ■ 第三方整合 诸如OCX和ActiveX等第三方控件能够通过标准的COM接口得到支持。此外,开发人员能够通过EAServer连接访问任意的CORBA 组件。有一个向导能够快速列出所有可用的组件和它们各自的方法。 PowerBuilder 8.0 超越VB 6.0的开发功能优势 类 别 PowerBuilder 8.0 Visual Basic 6.0 2-层客户-服务器 优秀的用于2层客户服务器的开发工具。非常易用,简化了客户服务器应用程序的复杂度。面向对象的开发 VB不适合开发大中型企业级应用 N-层 借助适当的设计技术,使用PB和EAServer非常易于开发3层应用。 EAServer同其它应用服务器比较不同之处在于,它内置了针对所有主流分布式计算标准的支持,包括CORBA, COM, EJB和本地的PowerBuilder。 PB特别擅长开发分布式客户应用,由于它能使用COM和CORBA接口,PB的客户程序能够使用包括EJB在内的许多技术。 VB支持的范围比较窄,只能开发用于MTS/IIS的ActiveX控件。VB只能为基于COM的服务器开发分布式应用的客户端,限制了它在整个企业范围的应用。 Internet开发-Web客户 PowerBuilder提供了Web DataWindow,使开发人员在开发HTML、JavaScript、 DynaScript和Web页面时也能包含Java Applet VB对动态HTML页面的多媒体支持不足,不适合用于复杂的大中型企业级系统。它面向更小型的系统。 Internet开发-Web服务器 PB既能够开发客户端的HTML,也能开发服务器端的HTML和JavaScript、DynaScript和VBScript,PB允许开发人员使用包括JavaApplet在内的绝大多数的Web技术,Web DataWindow提供了访问Web服务器中数据的强大机制 不支持Java或JavaScript。必须在微软的平台之上,只能使用IIS Web服务器。 没有类似DataWindow的工具,所以也没有Web DataWindow Internet开发-应用服务器 与EAServer的整合使得PB成为非常强大的工具,既能开发客户端组件也能开发服务器端的组件。EAServer与PB产品一同发行因此每个开发人员都能访问到应用服务器。他们还能建立部署于MTS中的COM组件。未来PB还将支持第三方应用服务器。 VB不能访问其它流行的应用服务器数据库应用 DataWindow使应用开发更为简易。PFC类库包括了针对数据库应用量身定做的可继承的类,支持复杂的数据连接、应用管理、错误处理和其它功能。DataWindow作为一个控件,在应用程序中非常有用,因为它并不连接到任何数据源 ADO(活动文档对象)在数据访问方面不如DataWindow,因为需要大量的控件才能实现DataWindow的功能。同时,开发人员必需创建多个ADO才能满足数据需求,也就是说必需个别设定每个数据连接的信息 PowerBuilder 8.0 超越VB 6.0的开发环境优势类 别 PowerBuilder 8.0 Visual Basic 6.0 综合情况 IDE功能强大,提供了包括继承在内对一个对象的所有特性的访问能力。开发人员可以直接通过一个组件面板访问组件,该面板包括标准的PB控件,还能向工具条上添加用户控件,或者通过开发库直接选取对象。 IDE可以完全进行定制,开发人员能够为不同的任务保存不同的布局。AutoText功能可以通过提供下拉式的选项列表(包括函数和事件)来生成代码。 对象属性表是动态生成的,因此继承得来的对象在属性表中会自动显示其父类变量。父类事件和函数脚本也能在类中很容易的察看到。 包含了多个向导和助手,用于开发常用或非常用的任务,比如构建用于EAServer的组件。生成器向导允许你指定每个组件的目标。 每个开发出来的PB对象都自动成为一个可继承的类。PB无需构建VB中的"模板"。 数据库访问通过DataWindow Painter构建而成,它提供了功能完善的SQL设计器、"实时"的数据显示、包括图形在内的用户化表示格式、OLE对象嵌入和嵌套的报表。 DataWindow可以由SQL、存储过程或外部资源生成,例如在通过EAserver服务器访问时可由组件方法生成。 VB只能开发用于MTS/IIS的ActiveX控件,不适合用于分布式环境。没有额外的ActiveX控件,VB就无法访问CORBA或Java。这就限制了VB本身支持的分布模型。 在微软(MTS/IIS)以外的分布式开发环境中,VB的角色有时十分模糊,它大多数时候仅仅是一个优秀的ActiveX控件开发工具。 访问其它组件要比PB复杂的多,因为在使用控件前它需要将用户控件添加到组件库中。这就需要支付比较高的控件成本,并且投入更多成本管理更多的厂商。同时,许多公司提供的控件太小并且在财务上不够可靠。 代码处理 Syntax-hightlighted(突出语法)代码和自动缩进功能是PB在代码处理方面的优点。用户可以通过弹出式菜单访问所有的"代码块"。系统函数也可以通过这个方法察看。 当前窗口的事件和函数都被清晰的标识出来,代码显示每次只限于一个方法。PB用单独的流来维护每个事件/函数,因此不会导致重叠或混淆。 支持Java的Throw、Catch和Finally,从而能够圆满的处理错误。 提供出错处理函数以便开发出自动化的错误处理程序。系统错误会被自动处理,也可以手动送到调试器。 垃圾收集功能能清理执行代码中开发人员留下的冗余代码。 Code Profiler(代码模仿器)可以分析代码的潜在问题或瓶颈所在。 系统树允许用户将对象函数或属性用鼠标拖放到代码窗口。 VB的代码显示窗口结构不如PB。所有的表单(窗口)代码都在一个流中连续显示。如果有大型复杂的对象,可能导致不同函数/事件之间划分不清。 当方法代码超过20行,开发就变的比较迟缓,需要进行更多的组织和跟踪工作。 VB不支持Java的Throw、Catch和Finally错误处理机制。它仍然借助基本的不太完善的On Error语句来处理错误。 内建的报表功能 PB在产品中包含了获得专利的Data Window和InfoMaker 查询及报表工具,它们能帮助用户生成报表。 Web Data Window被用于在Web上进行数据输入和生成报表。PSR被用于能分发、能操作的报表。即便生成报表的程序早已不知去向,用户也能够修改报表中的一些部分。 VB的Web报表功能不够强健,它的ADO方案也不如PB强健和全面。 VB的报表风格同PB内建的功能相比限制更多。