来到与两年前接触VB,现在学习VB.NET,这两个看起来真的不得不说,这是相对的似(ps:一分之差,只有三个字母),计等。但他们有又什么不同呢?都说VB.NET高级,比VB究竟高级在哪里了?是不是VB.NET能全然取代VB?

本文将带您揭开两方“大战”的结果。

1、背景介绍

VB.NET是微软公司在2002年推出的一种开发基于.Net平台使用程序的开发语言,也是微软公司极力推选的一种开发.Net平台使用程序的开发语言之中的一个。接下来让我们来基本了解一下VB.NET和其前一个版本号---VB 6.0的主要差别。

2、究竟谁是“嫡传”OOP?

VB与.NET经过多轮的验明正身,发现VB居然不是全然面向对象的,它不符合OOP三大特性(封装、继承、多态)中的继承性。而VB.NET才流的才是正统的OOP的新奇血液!

VB这着实让活跃在VB界的新手菜鸟们慌乱了一把~~

我们在使用VB6.0的时候。能够建立新的类、新的窗口,把它们看成对象。可是各个类之间无法实现继承,所以仅仅能称VB6.0是“基于OOP”的可视化程序设计语言,这也是它和.NET的最大差别

3、出场形式见“华丽转身”

VB非常明显,我们仅仅能在Windows应用窗口中见到他的身影。而VB.NET呢?

不仅仅是WindowsForm!

VB.NET还能够创建ASP.net和Web服务应用程序。还同意创建控制台应用程序和作为桌面服务执行的应用程序。

4、数据訪问功能的潜力比拼

   二者在数据訪问上的实力也有非常大差距,主要体如今数据訪问技能、详细实现要领和数据绑定三点上的不同

首先。在数据訪问技能上。CB6.0是通过ADO来实现对数据库訪问的,同一时候为了保证对早期版本号的兼容,也提供了

RDO(远程数据对象)和DAO(数据訪问对象)二种数据訪问技能。在VB.NET中是运用 ADO.NET来訪问数据库的,

ADO.NET是.NET框架的一部分。其相应的类库是.Net
FrameWork SDK的真子集。

事实上在VB.NET中也能够运用 ADO来訪

问数据库。但ADO在VB.NET中是以COM组件的形式出现的,通过加入引用才干够在VB.NET中运用。

加入引用的流程

事实上就是对COM组件互操作。经过互操作后的COM组件,已经并不是先前意义上的COM组件,而是转变成可供VB.NET直接

运用 的.Net类库。 

    在数据訪问的详细实现要领上。VB 6.0实现数据訪问主要是两种要领:其一是在程序设计阶段,可通过把数据

源绑定到ADODC控件或运用数据环境;其二在执行时,能够通过编程方式建立记录集RecordSet对象并与记录集对象交

换数据。

相同在VB.NET中实现数据訪问的要领主要也是两种:一是在程序设计阶段。通过建立 、配置数据适配器

(DataAdapter)和生成数据集(DataSet);二在执行中。通过编程方式动态建立
、配置数据适配器和建立 、生成数据集。

数据绑定上,VB是通过配置控件的属性来实现。一般是把控件的显示属性绑定到数据源中的对应字段。而.NET中,数据绑定的使用范围广泛的多。能够将不论什么控件的不论什么属性绑定到包括数据的不论什么结构中。

5、Web开发见真知

VB6.0是运用ASP(Active Server Page)建立在Web上的应用程序。在ASP中,编写Web页面并不是纯正的VB语言。而是VB脚本语言---VBScript。

ASP页面开发对工具要求低,但其是面向流程式开发,所以复杂一点的ASP代码都显得杂乱无章,使得程序设计比較麻烦。

VB.NET是运用ASP.NET来编写Web页面的。但在ASP.net中,运用的不再是脚本语言了,而是真实意义的编程语言。

VB.NET全然支持Web编程。且建立在新的框架结构上。它凭借ASP.net的Web应用程序、XML Web Services等基于Web上的功能。使得开发Web页面与开发Windows编程非常相似,Web页面代码也显得比較有条理了。


6、组件建立--你是怎么来的?

在运用VB和VB.NET编写应用程序时,尽管都能够通过从工具箱中选择组件。但二者在实现机理上却存在根本不同。在VB 6.0中,应用程序中建立的组件所有是COM组件,就可以在COM应用程序中运用的ActiveX控件、ActiveX
类型的DLL 和 ActiveX类型的EXE。

而在VB.NET中,向窗口中拖入的组件,都是基于继承,从.Net框架提供的SDK中对应的类继承。经过实例化后,通过加入功能才把组件加入到设计窗口中。


7、单线程?多线程!

VB6.0仅仅支持单线程而不支持多线程,.NET则全然支持多线程。

在并发问题和多任务管理方面。VB6.0支持多个单线程单元。只是它并不支持一个自由线程的模型。而VB.NET则通过使用CLR拥有了创建自由线程的功能。

它通过系统的System.Threading类直接创建多线程应用程序。


8、异常处理怎么看?

关于VB的异常处理,我们曾经经常使用的解决方法有例如以下几种:On Error GOTO语句的使用。即直接跳转到某命令行。Exit Sub,直接退出过程。以避免进入错误程序;On Error Resume Next,改变错误陷阱等等。

但在VB.net中,错误的捕获、处理和兴许进行工作(错误关闭)则变得更加完好和流畅了。

体如今Try …… Catch …… Finally程序段的使用。

9、与其它语言的“交流”

在说到这里的时候,不得不介绍一下MSIL,即Microsoft Intermediate Language,译为微软中间语言。

MSIL是将.NET转化为机器语言的一个中间过程。它是一种介于高级语言和基于Intel的汇编语言的伪汇编语言。当用户编译一个.NET程序时,编译器将源码翻译成一组能够有效地转换为本机代码且独立于CPU的指令。当执行这些指令时,实时(JIT)编译器将它们转化为CPU特定的代码。因为公共语言执行库支持多种实时编译器。因此同一段msil代码能够被不同的编译器实时编译并执行在不同的结构上。这给程序猿提供了极大的灵活性,程序猿能够选择自己熟悉的语言。而且再也不用为学习不断推出的新语言而烦恼了。——百度百科

.NET FrameWork下的高级语言之间支持混合语言编程原理:.NET编译器把源码编译成MSIL。而不是机器语言,然后把MSIL语言在.NET Framework的环境下解释成机器语言来执行。

总之,VB与.NET之间还是有非常大区别的,它们之间的关系不仅仅是版本号上的升级,更是VB.NET从OOP机制、数据处理、并发控制等思想方面的超越和Web页面、控制台程序等形式上的更新。

VB6.0“挑衅”.NET!的更多相关文章

  1. VB6.0中,DTPicker日期、时间控件不允许为空时,采用文本框与日期、时间控件相互替换赋值(解决方案)

    VB6.0中,日期.时间控件不允许为空时,采用文本框与日期.时间控件相互替换赋值,或许是一个不错的选择. 实现效果如下图: 文本框txtStopTime1 时间框DTStopTime1(DTPicke ...

  2. VB6.0 和VB.NET 函数对比

    VB6.0和VB.Net的对照表 VB6.0 VB.NET AddItem Object名.AddItem Object名.Items.Add ListBox1.Items.Add ComboBox1 ...

  3. 吐个槽,对VB6.0 还有VBS 说ByeBye

    往事不堪回首,折腾了个把月的老系统,心中郁结,不吐不快.系统架构是ASP +VBS +VB6.0 + SQL Server2000, 第一个版本开发完成大概是在2000年.基本是处于交接无力,看代码就 ...

  4. VB6.0 调用存储过程

    最近有在做一个需求,需要在VB6.0中调用存储过程,整理了一下,供大家参考, 范例: Function callStoredProcedure(sEmployeeID As String, Optio ...

  5. VB6.0和VB.Net的函数等对照表

    VB6.0和VB.Net的对照表 VB6.0 VB.NET AddItem Object名.AddItem Object名.Items.Add ListBox1.Items.Add ComboBox1 ...

  6. 【原创】VB6.0应用程序安装包的生成(Setup Factory 9.0制作安装包的方法)

    VB6.0应用程序安装包的生成,利用其自带的打包工具生成的安装程序很简陋,一点不美观:如果想让自己的应用程序安装的时候显得高大上一点,本教程提供使用Setup Factory 9.0制作安装包的方法. ...

  7. vb6.0安装程序制作图解教程

    如何制作vb安装程序,是在学习Vb6.0过程中比较常见的一个入门问题. 在此笔者介绍一个最简单的安装方法,就是用VB自带的打包程序进行打包,虽然比较普通,不过内部却有不少窍门,相信这一点知道的人可能不 ...

  8. VB6.0

    1. 安装包来自 http://msdn.itellyou.cn/ 下载的文件为: sc_vb6_ent_cd1.iso sc_vb6_ent_cd2.iso 2.安装时,"请输入产品的 I ...

  9. VB6.0调用DLL

    目录 第1章 VB6.0调用DLL    1 1 VC++编写DLL    1 1.1 使用__stdcall    1 1.2 使用 .DEF 文件    1 2 简单数据类型    2 2.1 传 ...

随机推荐

  1. 通过加载Kernel32来动态判断 当前操作系统32bit还是64bit

    工作原理:通过加载Kernel32来获取IsWow64Process 函数然后通过函数的地址操作,执行函数的操作. 在程序中只要我们获取了一个函数的地址,就可以找到正确的方法执行这个函数. 但是这种方 ...

  2. HTTP POST请求的Apache Rewrite规则设置

    最近自测后端模块时有个业务需求需要利用WebServer(我用的是Apache)将HTTP POST请求转发至后端C模块,后端处理后返回2进制加密数据.http post请求的url格式为:     ...

  3. 使用Jquery+EasyUI项目开发情况的框架是中评---员工管理源代码共享

    使用Jquery+EasyUI 进行框架项目开发案例解说之中的一个 员工管理源代码分享 在開始解说之前,我们先来看一下什么是Jquery EasyUI?jQuery EasyUI是一组基于jQuery ...

  4. phprpc 使用实例(同时有Java、Android和Delphi客户端的例子)

    PHPRPC 是一个轻型的.安全的.跨网际的.跨语言的.跨平台的.跨环境的.跨域的.支持复杂对象传输的.支持引用参数传递的.支持内容输出重定向的.支持分级错误处理的.支持会话的.面向服务的高性能远程过 ...

  5. isapi_rewrite运行在.net framework 4.0+iis 6.0环境下404错误解决方案

    今天以前的同事让我帮他上服务器看看,他把页面伪静态之后,出现404错误,为什么会出现这样的问题呢,仔细研究才发现,原因如下: 因为ASP.NET4.0在安装的过程中,已经在IIS6做了一些手脚,让它可 ...

  6. 浅谈Jquery的使用上篇

    一. 1.Jquery是什么?有什么特性? jQuery 是一个 JavaScript 函数库. jQuery 库包含以下特性: HTML 元素选取.HTML 元素操作. CSS 操作 .HTML 事 ...

  7. 开启cocos2dx 3.0的Console功能

    下面内容用于自己知识的备忘,想看具体内容,请參照例如以下地址. 原英文文地址: http://discuss.cocos2d-x.org/t/cocos3-0-tutorial-console-tut ...

  8. Copy xml 文件

    public static void copyFailFile(String bugID) throws Exception { File file = new File(".") ...

  9. Nginx分时段限制下载速度解决方案(原创)_于堡舰_新浪博客

    Nginx分时段限制下载速度解决方案(原创)_于堡舰_新浪博客 Nginx分时段限制下载速度解决方案(原创)    (2011-03-02 16:40:49)    转载▼    标签:    ngi ...

  10. Andorid Clip 实现自定义的进度条效果实例

    Android该系统提供了一个水平进度条为我们展现了运行使用进展情况,水平进度条显示用于运行进度Clip Drawable技术 下面我们通过一个具体的例子来说明Clip Drawable使用. 还有我 ...