.net框架主要是哪几部分组成.NET开发框架的几个主要组成部分:首先是整个开发框架的基础 , 即通用语言运行时以及它所提供的一组基础类库;在开发技术方面,.NET提供了全新的数据库访问技术ADO .NET , 以及网络应用开发技术ASP .NET和Windows编程技术Win Forms;在开发语言方面,.NET提供了VB,VC,C#, Jscript等多种语言支持;而Visual Studio .NET则是全面支持.NET的开发工具 。下面就让我们来一步步的来了解它们:
通用语言运行时,即Common Language Runtime。Microsoft .NET 给开发人员带来了一种全新的开发框架,而通用语言运行时则处于这个框架的最低层,是这个框架的基础 。开发人员对于所谓的C运行时、VB运行时、Jave虚拟机这些概念已经非常熟悉了,而通用语言运行时则为多种语言提供了一种统一的运行环境 。另外它还提供了更多的功能和特性,比如统一和简化的编程模型,用户不必迷惑于Win32 API和COM;避免了DLL的版本和更新问题(常称为DLL地狱),从而大大简化了应用程序的发布和升级;多种语言之间的交互,例如我们甚至可以在VB中使用C编写的类;自动的内存和资源管理等等 。Microsoft .NET正是基于通用语言运行时,实现了这些开发人员梦寐以求的功能 。
基于通用语言运行时开发的代码称为受控代码,它的运行步骤大体如下:首先使用一种通用语言运行时支持的编程语言编写源代码,然后使用针对通用语言运行时的编译器生成独立于机器的微软中间语言(Microsoft Intermediate Language),同时产生运行所需的元数据,在代码运行时再使用即时编译器(Just In Time Compiler)生成相应的机器代码来执行 。
当然对于开发者而言,他们除了关心通用语言运行时提供那么多新特性外,它究竟给开发者提供了什么样的编程接口,这就是基础类库(Base Class Library) 。这组基础类库包括了从输入输出到数据访问等各方面,提供了一个统一的面向对象的、层次化的、可扩展的编程接口 。它使用一种点号分隔的方法,使得查找和使用类库非常容易 。例如基础类库中的根,它的命名空间是System,提供数据访问的类库的命名空间是System.Data 。在使用时,开发者只需在自己的应用中添加所需的基础类库的引用,然后就可以使用这个类库中的所有方法、属性等等 。跟传统的Windows编程相比,使用和扩展基础类库都非常容易,这使得开发者能够高效、快速的构建基于下一代互联网的网络应用 。
几乎所有的应用程序都需要访问从简单的文本文件到大型的关系型数据库等各种不同类型的数据。在Microsoft .NET中访问数据库的技术是ADO .NET 。ADO .NET提供了一组用来连接到数据库 , 运行命令,返回记录集的类库,与从前的ADO(ActiveX Data Object)相比,Connection和Command对象很类似,而ADO .NET的革新主要体现在如下几个方面:
首先,ADO .NET提供了对XML的强大支持 , 这也是ADO .NET的一个主要设计目标 。在ADO .NET中通过XMLReader,XMLWriter,XMLNavigator,XMLDocument等可以方便的创建和使用XML数据,并且支持W3C 的 XSLT、DTD、XDR等标准 。ADO .NET对XML的支持也为XML成为Microsoft .NET中数据交换的统一格式提供了基础 。
其次,ADO .NET引入了DataSet的概念,这是一个驻于内存的数据缓冲区,它提供了数据的关系型视图 。不管数据来源于一个关系型的数据库,还是来源于一个XML文档,我们都可以用一个统一的编程模型来创建和使用它 。它替代了原有的Recordset的对象,提高了程序的交互性和可扩展性,尤其适合于分布式的应用场合 。
另外,ADO .NET中还引入了一些新的对象 , 例如DataReader可以用来高效率的读取数据,产生一个只读的记录集等等 。简而言之,ADO .NET通过一系列新的对象和编程模型,并与XML紧密结合,使得在Microsoft .NET中的数据操作十分方便和高效 。ASP .NET是Microsoft .NET中的网络编程结构,它使得建造、运行和发布网络应用非常方便和高效。我们可以从以下几个方面来了解ASP .NET:
1. ASP .NET网络表单
ASP .NET网络表单的设计目的就是使得开发者能够非常容易的创建网络表单,它把VB中的快速开发模型引入到网络开发中来,从而大大简化了网络应用的开发 。具体的说:在ASP .NET中可以支持多种语言,不仅仅支持脚本语言,通用语言运行时支持的所有语言在ASP .NET中都可以使用;代码和内容分开,在现在的ASP(Active Server Pages)开发中,内容和脚本交错,维护和升级很困难,将他们分开可以使得开发人员和设计人员能够更好的分工合作 , 提高开发效率;另外在ASP .NET中通过引入服务器端控件,将类似VB的快速开发应用到了网络开发中来,这样大大提高了构建网络表单效率,并且服务器端控件是可扩展的,开发者可以建造自己需要的的服务器端控件 。
2. ASP .NET网络服务
网络服务(Web Service)是下一代可编程网络的核心 , 它实际上就是一个可命名的网络资源,可用来在Internet 范围内方便的表现和使用对象,就像使用今天的 COM对象一样,不同的是使用和表现网络服务是通过SOAP(简单对象访问协议)甚至HTTP来实现的 。在ASP .NET中,建造和使用网络服务都非常方便:
在ASP .NET中建造网络服务就是编写一个后缀为.ASMX的文件 , 在这个文件中加入想要表现出来的方法就可以了,网络服务的建造者不需要了解SOAP,XML的细节,只需要把精力集中在自己的服务本身,这也为独立软件服务开发商提供了很好的机会;使用网络服务最简单的方式就是使用HTTP协议(HTTP GET 或HTTP POST),用户只需要直接访问网络服务(.ASMX文件)的URL即可;当然用户还可以通过SOAP在自己的应用中更灵活的使用网络服务 。
3. ASP .NET应用框架
ASP .NET应用不再是解释脚本 , 而是编译运行,再加上灵活的缓冲技术,从根本上提高了性能;由于ASP .NET的应用框架基于通用语言运行时,发布一个网络应用,仅仅是一个拷贝文件的过程,即使是组件的发布也是如此 , 更新和删除网络应用 , 可以直接替换/删除文件;开发者可以将应用的配置信息存放XML格式的文件中,管理员和开发者对应用程序的管理可以分开进行;提供了更多样的认证和安全管理方式;在可靠性等多方面都有很大提高 。
传统的基于Windows的应用(Win Forms),它仍然是Microsoft .NET战略中不可或缺的一部分 。在Microsoft .NET中开发传统的基于Windows的应用程序时,除了可以利用现有的技术例如ActiveX控件以及丰富的Windows接口外 , 还可以基于通用语言运行时开发 , 可以使用ADO .NET、网络服务等,这样也可以实现诸如避免DLL地狱、多语言支持等.NET的新特性 。从上面的介绍中我们已经知道Microsoft .NET开发框架支持多种语言,在目前的测试版中已经支持 VB,C,C#和Jscript四种语言以及它们之间的深层次交互
。而且微软支持第三方生产针对Microsoft .NET的编译器和开发工具,这也就是说几乎所有市场上的编程语言都有可能应用于Microsoft .NET开发框架 。这样开发者可以任意选择自己喜爱的语言,这种开放和交互的特性正是开发者所热爱的 。
需要特别指出的是 , 微软在Microsoft .NET中推出了全新的C#语言,这种全新的面向对象的语言使得开发者可以快速的构建从底层系统级到高层商业组件的不同应用 。C#在保证了强大的功能和灵活性的同时 , 给C和C带来了类似于VB的快速开发,并且它还针对.NET作了特别设计,比如C#允许XML数据直接映射为它的数据类型等等,这些特性结合起来使得C#成为优秀的下一代网络编程语言 。
与此同时Microsoft .NET对原有的VB和C也做了很大的改进,使得它们更加适应Microsoft .NET开发框架的需求 。例如在Visual Basic .NET中增加了继承等面向对象的特性,结构化的出错处理等等;可管理的C扩展,大大提高了利用C来开发Microsoft .NET应用的效率等 。
Visual Studio .NET作为微软的下一代开发工具 , 它和.NET 开发框架紧密结合 , 是构建下一代互联网应用的优秀工具,目前已经有Beta测试版面世 。Visual Studio .NET通过提供一个统一的集成开发环境及工具 , 大大提高了开发者的效率;集成了多种语言支持;简化了服务器端的开发;提供了高效地创建和使用网络服务的方法等等 。.NET框架的一个主要目的是使COM开发变得更加容易
。COM开发过程中最难的一件事是处理COM基本结构 。因此 , 为了简化COM开发 , .NET框架实际上已自动处理了所有在开发人员看来是与“COM”紧密相关的任务,包括引用计算、接口描述以及注册 。必须认识到 , 这并不意味着.NET框架组件不是COM组件 。事实上 , 使用Visual Studio 6.0的COM开发人员可以调用.NET框架组件,并且在他们看来,后者更像是拥有iUnknown数据的COM组件 。相反,使用Visual Studio.NET的.NET框架开发人员则将COM组件视作.NET框架组件 。
为了避免引起误解,这里需对这种关系加以特别说明:COM开发人员必须手动去做大多数.NET框架开发人员可以在运行时自动执行的事情 。例如,必须手写COM组件的安全性模块,且无法自动管理模块占用的内存 , 而在安装COM组件时,注册条目必须放进Windows注册表中 。对.NET框架而言,运行时实现了这些功能的自动化 。例如,组件本身是自我描述型的,因而无需注册到Windows注册表中便能安装 。
当把COM与Microsoft事务服务器(MTS)和分布式COM(DCOM)结合在一起时,就变成了COM。COM 提供了一组面向中间层的服务 。特别是COM 提供了进程管理功能和数据库与对象连接池处理功能 。在将来的版本中 , 它还将提供一种称为分区的功能——专门为应用程序服务提供商设计的更强大的进程隔离功能 。
COM 服务主要面向中间层应用程序开发,并主要为大型分布式应用程序提供可靠性和可扩展性 。这些服务是对.NET框架所提供服务的补充;通过.NET框架类 , 可以直接访问这些服务 。.NET框架有几个要素值得一提
。首先是它的安全系统和配置系统 。这两个系统协同工作,有力地遏止了运行不安全代码的可能性,并大幅度减少了号称“DLL Hell”的对应用程序进行配置时所面临的挑战 。
安全系统是一个高度细化、基于事实的系统,它赋予开发人员和管理员多种代码处理权限(而不仅仅是“on”或“off”) 。将来,还会根据代码本身的核心要素来决定如何实施上述权限 。
例如,当.NET框架应用程序被下载到某一系统中时,它会申请一组权限(诸如对临时目录的写入权限) 。运行时将收集有关应用程序的事实信息(诸如:它是从何处下载的、是否用了有效签名、甚至它访问系统的准确程度),并按管理策略决定是否允许应用程序运行 。运行时甚至还可告之应用程序它无法授权申请的所有权限,并允许应用程序自行决定是否继续运行 。
有这种安全系统作保障,许多应用程序配置问题便会迎刃而解 。开发人员和管理员(最终是用户)所面临的最大挑战之一是版本的管理问题 。如果在您新装了某个应用程序之后,一切都限于瘫痪状态,而在这之前系统一直运行得非常良好,那么最大的可能是新安装的应用程序重写了一些共享库,并极有可能修正了现有应用程序正使用的程序错误 。这种情况出现的频率很高,以致人们将它称为:“DLL Hell” 。
.NET框架拥有的几项高级功能可以彻底消除“DLL Hell”现象 。首先,它有一个非常强大的内部命名系统 , 能够有效地防止两个库因互相重名而被错当为对方的情况发生 。除此之外 , 它还提供一项被称作“并行”配置的新功能 。如果前例中新安装的应用程序确实重写了共享库,现有应用程序可对该库进行修复 。等现有应用程序再次启动时 , 它会检查所有的共享文件 。如果发现文件被更改 , 同时这些更改又是不兼容的,则它可以请求运行时提取一个它可以使用的版本 。得益于强大的安全系统,运行时可以安全地执行该操作,这样应用程序就完成了本身的修复工作 。
总之,Microsoft .NET开发框架在通用语言运行时的基础上,给开发者提供了完善的基础类库、下一代的数据库访问技术ADO .NET、网络开发技术ASP .NET,开发者可以使用多种语言及Visual Studio .NET来快速构建下一代的网络应用 。随着相关的互联网标准及技术的普及,可以预言将会有越来越多的开发者采用这种开发结构,开发出丰富多样的下一代互联网应用来 。
vb.net连接数据库的是每次要操作数据的时候就打开数据库,不操作的时候就关闭 。连接数据库如果采用的 ADO.NET 进行连接 , 默认情况下会有一个你看不见的 连接池 来管理这些连接,然后 你每次程序里的关闭数据库,只是把连接放回连接池,方便下次重新连接 。
所以不用就关 , 避免连接池连接数过多 。
基于java jsp asp php vb安卓系统毕业设计与实现论文源码下载?及时送上了计算机毕业设计相关资源 合意的换请采纳一下,大家顺遍点下赞吧
在线考试制卷系统(任务书,论文,源码)
net小型证券术语解释及翻译系统的设计与开发(源码,论文)
原创vf员工培训管理系统(任务书,论文)
asp科研信息管理系统(任务书,开题,论文,源码)
android小型企业工资管理系统(源码,论文)
asp出租车管理系统(任务书,论文,源码)
vb.net实验室计算机的ip地址自动设置程序——服务器端(任务书,论文,源码)
rsa可视化算法程序的实现与研究(任务书,论文)
j2ee数控加工技术教学素材资源库的构建(任务书,论文,源码)
eims系统-oa子系统的设计与开发(任务书,开题,论文,源码)
jsp网上购书(任务书,论文)
vb图书管理系统(任务书,论文)
vc户籍管理系统(任务书,论文,源码)
php基于bs结构的工艺品销售系统的实现(源码,论文)
net模块化动态电子商务网站的开发(任务书,论文,源码)
pb电信人事管理系统设计(任务书,论文)
vb成本费用计算系统(源码,论文)
jsp出租车管理系统(任务书,开题,论文,源码)
asp.net求职招聘网站设计(源码,论文)
vb.net机房监控系统(全套)
vf学生办证管理系统(任务书,开题,论文,源码)
jsp基于网络超市商品销售管理系统(任务书,论文,源码)
jsp团员管理
asp.net一个动态文学网站
vf基于jme平台的掌上网络商店-服务器端的开发
c#报警系统
net(vc)办公自动化管理系统
jsp计算机等级考试查询系统jdbc
vb.net商品配送中心库存仿真软件设计
jsp网络购物
net在线英语自学系统——知识库管理的设计
jsp企业进销存管理系统
php某公司进销存信息管理系统
pb干部档案管理系统
delphi学生信息管理系统毕业设计
asp学生信息管理系统
asj2eetoc电子商务网站
delphi图书管理系统(毕业程序翻译%通过)
jsp网上商城系统
jsp客户关系管理系统
jsp企业人事管理系统
c#办公管理系统
jsp搜索引擎的研究与实现
jsp网络房产信息超市
php会员管理系统
j2ee基于usbkey的文件加密工具—-客户端的实现
net网上图书订阅系统的设计
php网站流量统计
asp.net团员管理
android文件传输
delphi并行接口器件功能演示的可视化设计学位
php房屋租赁管理信息系统jdbc
数据采集电路pcb的设计与制作
androidsmart系统-考试监控及阅卷模块的设计与开发
java流动资金贷款业务系统
asp电脑配机
vf物流管理系统--仓储管理子系统的实现
简化的cpu逻辑功能的仿真实现
net网上教材管理系统
net高校学生宿舍管理系统
vc药品公司进销售存管理系统
基于des加密算法的word加密插件的实现
asp.net基于asp.net的房产中介系统
c#简单图片转化
asp基于asp的反垃圾邮件管理系统的设计
delphi航空客运订票系统
c#windows简单防火墙设计与实现
j2ee车间调度系统
php《信息论与编码》在线考试系统
vb.net基于角色访问控制的oa系统
asp某小型数字图书馆
vb图形识别和编辑
pb电脑公司财务管理系统
asp网上购书
android光盘信息管理系统
php新闻网程序
php购物系统
vb.net考试系统vb.net
java学生管理系统
基于apriori算法的关联规则挖掘系统
vf布匹出口管理系统
c#会计电算化系统——财务管理子系统
php毕业生信息管理系统
pb酒店客房餐饮管理系统
vf库存管理
asp.net药品销售数据管理系统
asp.net网上论坛
基于linux的远程控制技术服务端实现
php网络商城
文件压缩与解压缩实践
asp学生管理系统
php科研项目网上申报管理系统
vb.net图片文件中的信息隐藏和还原的设计
asp销售供应链管理系统的设计与开发
asp基于asp技术的猎头公司管理软件的设计和实现——内部事务部分
网络求职招聘系统
neterp系统(毕业设计
php基于web的商场管理系统
vb电脑公司财务管理系统
delphi客户管理系统
net图书馆管理信息系统
java超市商品管理系统
pb在线考试
java原创库存管理系统可执行程序
c语言文件系统设计
基于webservice的数据库同步系统
vb.net考勤管理系统vb.net
vb简单几何图形的识别和编辑系统
net某公司员工管理系统
vf酒店客房管理系统
vf商场管理系统
vb.net开发在windows下的串口异步通信程序
asp一个小型搜索引擎
j2ee高速公路票据管理系统
vb小区物业管理系统
php酒店房间预约系统设计
asp《信息论与编码》在线考试系统
vf宿舍管理系统
android基于局域网的文件传输系统
asp学生网上选课系统
php校园学生信息在线管理系统
asp基于web的商场管理系统
net基于web的订餐系统
jsp仓储管理系统
简易网络存储系统
javaftp客户端
jsp公交查询系统
java人才管理系统
net企业投资价值分析系统
asp基于bbs的bbs系统设计(structmy)好
android通用图书馆管理系统
asp网上选课系统
最新asp网上论坛
vc网络爬虫程序
net考勤系统(net)
net交通信息网上查询系统
美食网站
pb企业物料需求计划管理系统
delphi公交车查询系统delphi源
asp.net网络招聘系统
asp视频点播系统
vf学生学籍管理
android毕业管理系统
简易网络存储系统
vb.net一种基于cc模式的网上购物系统
asp.net网络文件管理系统
asp.net学生信息管理系统
j2ee城市公交查询系统
j2ee人机接口设备—示波器的仿真实现
jsp网络商城
net基于bs的图书销售管理系统
net基于net的公司网站
j2ee汽车零件销售管理系统
vf图片文件中的信息隐藏和还原的设计
vf医药管理系统
net技术的猎头公司管理软件——内部事务部分
最新net高校学生宿舍管理系统
vb局域网抓包软件
asp.net企业物流平台
asp.net学生排课管理系统
vb.net网络数据包捕获工具
android企业考勤
c#在线考试
j2eealendar的跨平台系统的设计
vf书店辅助进书系统
asp仓库即时查询系统
asp作业提交与批改系统
vb开发在windows下的串口异步通信程序
javaac自动组卷系统
asp网上体育用品商店
jsp华夏文化交流平台
delphi采购管理
php校园新闻发布管理系统
vb.net成绩管理系统vb.net
delphi五子棋游戏(网络版)的设计与开发
最新net网上图书订阅系统的设计
vb教学辅助系统vb
android试题库自动组卷系统
vc试题库自动组卷系统(vc)cym
asp.net基于bs的家教交流平台的实现
vf学生成绩管理系统vf
asp.net楼宇专业网站毕业设计
net多语种网络硬盘系统的设计
vf考试系统vf
端口信息工具
vf物业管理
net公交车管理系统的实现与设计
pb基于半打开的端口扫描技术及其实现
j2ee水费管理系统
vf用遗传算法解决车辆优化调度问题任务书
jsp办公自动化管理系统
jsp基于android的在线购物系统
asp.net车辆调度管理系统
pb线程插入木马
delphi基于delphi的串口通信服务的开发
asp药店管理系统
jsp实验室设备管理系统
kasumi算法的研究与j2ee实现
net基于.net的城市公交查询系统
jsp基于web的subversion用户管理系统phb
delphivbd租赁管理系统
linux下的网络层加密解密的实现
android药品公司进销售存管理系统
asp服装销售系统
j2ee电信人事管理系统设计
jsp员工信息管理系统
android考勤管理系统android
vf基于.net的网上购物系统
vb.net财务管理系统
vc题库管理系统
delphi基于webcam的人脸检测技术
php在线学习系统
最新php团员管理
vb原创图书管理系统)毕业设计
net某企业信息管理系统
asvbtoc电子商务网站
vf火车站售票管理系统
asp科研信息管理系统
net某企业信息管理系统
vb基于usbkey的文件加密工具—-客户端的实现
net基于.net企业订单管理系统的开发
net房地产评估系统
net作业在线提交系统
vc多线程与线程安全实践-基于http协议的断点续传
vf地税局工资管理系统
delphi科研管理系统
delphi烟花爆竹经销管理系统
面向internet上的cscw的共享白板
php网络招聘系统
php网上求职与招聘系统
vb.net机房监控系统
asp.net考试报名信息处理系统
j2ee医院病房管理系统
基于进程和通信隐藏的木马设计与实现
net息加密与隐藏工具
c#汽车销售系统
jsp原创教师信息管理系统
android简易web服务器研究
asp科研项目网上申报管理系统
asp基于asp的论坛
php计算机组成原理教学网站
android超市销售系统
c#网络流量监控及分析工具
delphi电子邮件客户端软件
android排课系统程序
jsp网上拍卖平台系统)
j2ee某百货店pos积分管理系统-积分添加和通票回收
j2ee教务管理系统j2ee
vf银行代扣代发工资系统
php学生学籍管理系统
基于webservice的异构数据库检索系统的设计
android长途汽车信息管理系统
net系办办公自动化系统
c#网络计时管理系统
net网络商店销售管理系统
原创net高校学生宿舍管理系统
asp网络教学评判系统
net客户关系管理系统的实现
c语言遗传算法在求解tsp问题毕业
asp.net网上教学资源共享系统
基于icmp模拟网络控制软件的开发——控制管理模块
vb车间调度系统
net动态口令认证的网上选课系统
asp.net图书馆管理系统
asp企业公告及资料发布系统
pb原创图书管理系统)毕业设计
vf基于cs结构的企业人事管理系统
网络嗅探器
jsp网上书店售书系统
asp.net网上选课系统
asp酒店客房管理系统
asp.net自动排课系统
net信息安全研究所设备管理系统
最新net基于bs的图书销售管理系统
java药品销售系统
java简单小游戏设计
jsp基于web的旅游网站建设
android库存管理
php淘宝店主交易管理系统
net频点播系统
pb大型机房学生上机管理系统
jsp基于bs结构的工厂设备管理系统的设计与开发
web的入侵防御系统
最新php基于bbs的bbs系统设计(structmy)好
asp教师信息管理系统
net课件发布系统
j2ee在线英语自学系统——课程及自测管理的设计
asp网上二手商品交易管理系统
原创asp.net购物系统
pb小说租阅管理系统
人机接口设备—开关类部件的仿真实现
net校园新闻发布系统
php基于linux的远程管理系统客户端的实现
php在线exam
delphi物质管理系统
vb.net电信人事管理系统设计
android试题库自动组卷系统(android)cym
j2ee学生档案管理
net基于.net的内部邮件系统实现
asp.net学科建设
asp某公司进销存信息管理系统
java企业投资价值分析系统
java大随机数生成器算法的研究与实现
jsp某高校工资管理系统
vb在线英语自学系统——课程及自测管理的设计
net某店pos积分管理系统-清除履历表、日志表、月购买额
asp会员管理系统
原创美食网站
vs家庭理财系统
局域网监听系统
vc房屋租凭管理系统
jsp在线二手交易系统
vb.net模拟器件测试平台的设计与开发
原创net考勤系统(net)
java酒店管理信息系统
原创网络求职招聘系统
vf高校教务排课系统
c#rsa密码体制的实现
端口扫描与检测技术的实现
delphi猜数游戏的设计与开发
php宿舍管理系统设计
j2eeac自动组卷系统
原创php网络购物
android物质管理系统
php实验室设备管理系统
asp求职招聘网站设计
androidsc结构服装专卖店
net电子购物商城系统
java自动排课系统
java职员信息管理系统
vb书店辅助进书系统
android教师管理系统
jsp基于bs模式的中小企业人事管理系统
vc物质管理系统
最新简易网络存储系统
android并行接口器件功能演示的可视化设计学位
原创基于des加密算法的word加密插件的实现
net频点播系统
asp.net网络旅游信息系统
原创asp计算机组成原理教学网站
jsp车辆调度管理系统
asp.net基于bs的工艺品展示系统
基于纠错码的容错技术的研究——x码
asp电子商务系统
pb原创库存管理系统可执行程序
c#企业往来账务管理系统
vc超市售货管理系统
原创net网上图书订阅系统的设计
android人事管理系统
原创php在线学习系统
vf桌面日历系统
java商业汇票(支票管理)
asp聊天室
java计科教务管理系统
vb.net物业管理系统
asp公共课平时成绩查询系统asp
最新asp会员管理系统
vc书店管理系统
win平台下的pe文件病毒的研究及实现
j2ee电子邮件客户端软件
asp.net基于asp.net的学生信息管理系统
vf企业人事工资管理系统
vbrsa密码体制的实现
java基于bs方式的即时通讯软件
vf煤气站管理系统dpac
pb多媒体教学控制系统-网络通讯平台的设计
delphi酒店管理系统
jsp基于bs结构的工厂设备管理系统的设计与开发
jsp企业人力资源管理系统的设计
java课程设计医药管理系统(java)应要求源文件代码打包上传
j2ee实验室仪器管理系统
pb网吧管理系统
pb车队综合业务管理系统
最新php网络商城
c#大随机数生成器算法的研究与实现
asp基于bs结构的二手交易系统
javad的网络三维技术
最新net考勤系统(net)
jsp基于web的信息处理系统
net小型门户网自助建站系统
社区论坛
asp公交查询系统
java文档资料管理系统
php红旗汽车修理厂物资流通管理系统
校园网络工程综合布线方案
vc高校缴费系统
php格式化系统——前台
原创asp网上选课系统
最新asp校园学生信息在线管理系统
android基于特征的入侵检测系统
vb人事管理系统
vb.net图书管理系统
java简易web服务器研究
jsp基于jsp学生成绩管理系统软件的开发
net模块化动态电子商务网站的开发
delphi中大迅通合同统计系统
linux下的简单网络管理控制系统的设计与开发
vf航空售票模拟系统
vb通用销售管理系统
c#教学信息管理系统毕业
vc企业投资价值分析系统
j2ee基于bs方式的即时通讯软件
asp.net科研信息管理系统
vb.net软件项目开发管理系统vb.net
android可视化图像处理系统
c#高校题库管理系统附原代码程序万字
net基于.net电子相册的开发
pb商品配送中心库存仿真软件设计
android成本费用计算系统
asp.net旅游信息管理系统
j2ee宿舍管理系统
vb.net气象信息服务系统
net基于tcp协议的简单即时通信软件
原创vb职员信息管理系统
php小型企业网上订单系统
android人事管理
vb.net汽车销售系统
最新美食网站
最新简化的cpu逻辑功能的仿真实现
vb光盘信息管理系统
深水蓝文学网站
vb列车时刻查询决策系统
vc毕业管理系统
android商品交易系统
delphi列车时刻查询决策系统课程设计
java图书管理系统带
java基于jee的公交查询系统
net《数据库原理及应用技术》课程指导平台的开发
原创net某企业信息管理系统
delphi局域网的语音通信
vc家庭财务管理系统
android人脸识别系统设计.
php软件信息发布系统
社区论坛
net网上办公系统——公文流程管理设计与实现
原创delphi学生档案管理
delphi干部档案管理系统
asp基于bs的人才交流网站
asp.net酒店房间预约系统
java网络流量监控及分析工具
asp在线教学质量评价系统
php网络购物
快速加密解密芯片中kasumi算法的实现
asp.net网络购物系统
最新php科研项目网上申报管理系统
j2ee打字系统
基于ajaxlucene构建搜索引擎的设计和实现
pb超市配送运输管理系统
vf医疗纠纷检索系统
pb图书管理系统(毕业程序翻译%通过)
原创美食网站
vb网络在线考试系统原码
vb.net邮件收发系统的设计
jsp科研处管理信息系统
vcaccti电话语音应答系统
vc用遗传算法解决车辆优化调度问题任务书
delphi多媒体教学控制系统-网络通讯平台的设计
vc试卷生成系统
java气象信息服务系统
asp局域网文件共享及检索系统的设计与开发
php音乐网站
c内存映射文件在进程共享中的应用研究
php基于web的办公自动化管理系统可执行
php基于网络环境的库存管理系统
jsp在线直销商城
vb排课管理系统
最新简易网络存储系统
jsp基于jsp的网上考试系统_
第二代木马的研究与实现
vb.netjpeg编码优化
java基于java的五子棋游戏软件的设计与开发
java绩效评价系统
vc仓库管理系统
j2ee图书馆书库管理系统
php学生成绩查询
java基于windows入侵检测系统的研究与设计——检测模块设计
android象棋程序
vf网吧计费系统
c#smart系统-考试监控及阅卷模块的设计与开发
android某医疗部门总务信息管理系统
vb.net图书馆全开架借阅管理系统
vf电子通讯录(带系统托盘)
android指纹识别系统
android设备保养管理系统
android基于局域网的信息收发系统
android办公用品管理系统
pb企业考勤管理系统
pb药品公司进销售存管理系统
c#光盘管理系统
php服装销售系统
原创asp.net网上选课系统
net仪器设备管理系统设计与实现
j2ee基于特征的入侵检测系统
最新net基于net的公司网站
vb教学设备管理系统
net(java)办公自动化管理系统
c#企业人事管理系统
asp.net校友录server
android邮政编码系统
最新asjavatoc电子商务网站
原创基于icmp模拟网络控制软件的开发——控制管理模块
asp计算机组成原理教学网站
j2ee考试分析评价系统
net基于bs的计算机等级考试系统
端口扫描与检测技术的实现
vb.net题库管理系统
原创php基于php的论坛
文学网站
php网上体育用品商店
asp网上书店
php博客网站
php施甸县旅游咨询网
原创net客户关系管理系统的实现
vf木马检测工具的实现
vb社区人口资源管理系统设计与实现
vbd的网络三维技术
基于net教学辅助系统设计与实现
c局域网即时聊天程序
delphi象棋程序
jsp基于网络超市商品销售管理系统
c#计算机机房管理系统
asp网络教学平台
asp图书馆管理系统
pbsmart系统-公共资源模块的设计与开发--代码
asp助学贷款管理系统
j2ee学生档案管理系统
php网上购物系统答辩
net门诊就诊系统
php某小型数字图书馆
asp.net网上家电销售管理系统
asp.net网上商城系统
net中小企业oa系统
vb.net房屋销售管理信息系统
最新面向internet上的cscw的共享白板
php同学录系统
iptables图形管理工具
asjavatoc电子商务网站
vc考试系统vc
最新asvftoc电子商务网站
实验室计算机的ip地址自动设置程序——客户端
asp.net网络教学评判系统
asp.net基于asp.net的笔记本销售网站
php药品销售数据管理系统
android自动出题题库系统
原创j2ee电脑公司财务管理系统
数据库连接池的研究与实现
jsp课程设计
java上机考试系统
原创基于net教学辅助系统设计与实现
php科研信息管理系统
eims系统-oa子系统的设计与开发
net基于.net的工资绩效管理系统的开发
pb基于工作流引擎的系统框架设计开发
asp.net网上日记本
c#员工管理系统
基于rsa的数字签名
php企业人力资源管理系统的设计
原创asp《信息论与编码》在线考试系统
j2ee扫雷游戏的设计与开发
jsp网上考试系统
vb学生管理系统
c#基于c#的飞行模拟游戏的设计及实现
php求职招聘网站设计
jsp科研处管理信息系统
net基于svg的自动站雨量分析系统
asp.net文章在线发布系统
vb流动资金贷款业务系统
net网络考试系统.net
jsp聊天室
vb.net基于vb.net的两个通用安全模块
net小型证券术语解释及翻译系统的设计与开发
android电脑销售系统
j2ee自动点歌系统
net小型酒店管理系统的设计
vf办公自动化系统
java商业汇票(支票管理)
asp.net课程设计
pb银行设备管理
jsp企业网站设计
网络数据包的协议分析程序的设计开发
java网络多人聊天系统
android停车场管理系统
_基于.net的驾校理论考试模拟系统
jsp基于bs结构的工艺品销售系统的实现
asp.net格式化系统——前台
asp个人网站
c#兼职中介管理系统
jsp基于jsp的人事管理系统
最新基于des加密算法的word加密插件的实现
asp.net网络实验教学网站
asp网络招聘系统
vb.net煤气站管理系统dpac
asp仓储管理系统
android图书销售信息系统
asp.netcd销售管理系统
php学生信息管理系统
android图像处理工具
pb学生办证管理系统
j2ee党员管理系统
asp.net机房自由上机收费管理软件
vf网络计时管理系统
java基于java的五子棋游戏软件的设计与开发
c#中介管理系统
php酒店客房管理系统
c#图书馆管理系统
pb科研项目管理系统
jsp学生管理
jsp学生考试成绩分析(带饼状态图 , 柱状图)
asp课程设计
asp.netc语言试题生成与考试系统
vb.net教学信息管理系统
vb局域网的数据包监听及数据分析
vb高校题库管理系统附原代码程序万字
php视频点播系统
vb企业档案管理系统简单版
vb学生宿舍管理系统
net房地产管理系统
c#物业管理
vb音像店管理系统
javasmart系统-公共资源模块的设计与开发--代码
java基于ftp协议的文件访问系统
最新基于des加密算法的word加密插件的实现
vf绩效评价系统
asp操作系统课程教学网站
pb旅游资源及线路管理系统
vb.net计科教务管理系统
最新php客户关系管理系统
j2ee病房管理系统
php原创交友网设计
最新net频点播系统
php基于php学生成绩管理系统软件的开发
最新neterp系统(毕业设计
原创vc基于bs方式的即时通讯软件
基于lotus的故障报修系统
vf超市配送运输管理系统
vb.net试卷生成系统
原创文件压缩与解压缩实践
php教师档案管理系统
原创jsp《信息论与编码》在线考试系统
android网络数据包捕获工具
jsp药品销售数据管理系统
asp在线学习系统
j2ee考勤管理系统j2ee
asp网络商城
c局域网即时聊天程序
c#健身中心会员管理系统
vf客房管理信息系统
java基于采集
netxx职业中学图书管理系统的设计
基于caché的实验室资源管理系统的设计
最新基于net教学辅助系统设计与实现
vb.net学生管理系统
c内存映射文件在进程共享中的应用研究
vf中国象棋游戏
vbsmart系统-题库及试卷管理模块的设计与开发
win平台下的pe文件病毒的研究及实现
net基于手机短信平台聊天程序
jsp网上图书销售系统
原创web的入侵防御系统
vc干部档案管理系统
最新web的入侵防御系统
vf基于misty算法的加密软件的实现
vb.net数据结构辅助教学
php个人日志系统
asp.net论坛程序设计(万字功能强大)
asp网页设计辅导系统
最新net动态口令认证的网上选课系统
net基于.net电子相册的开发
j2ee学生信息管理系统万字
pb网上交易系统pb
vf超市进销存管理系统vf报稿
asp留言板
c#模拟atm机系统软件的设计与开发c#
asp交友录
pb车辆
连接数据库需要ADO组件中的什么对象,创建它的方法是什么/一、概述
“性能”这一术语有着几种不同的、差异微妙的含义 。当人们谈到某个东西性能多少好时 , 他们想要表达的意思可能就是在一定的时间之内它完成vb.net数据库连接池了多少工作 。例如,一个性能好的发动机运行起来更稳定,产生的动力更强大 。对于开发小组,你同样也可能应用这个判断标准:一个性能好的开发小组工作时比较安静,而且能够生产出大量高质量的代码 。对vb.net数据库连接池我来说 , 性能至少意味着两件事情——我的代码运行起来有多好,我的开发小组和我本人工作效率怎么样 。无论哪一方面 , 本文介绍的技巧都将起到一定的帮助作用:帮助你更快地编写代码 , 帮助你编写更快的代码——安静地完成这一切 , 减少这样那样的错误 。本文介绍的技巧主要面向ADO,特别是如何通过ADO访问SQL Server 。但与此同时 , 我还将涉及一些适用范围更广的COM技巧,它们适用于你所编写的所有Visual Basic代码 。
为vb.net数据库连接池了了解从哪些SQL Server数据访问代码编写技术、哪些体系、哪些开发习惯可以得到最好的性能,我已经花了不少时间 。一些情况下 , 对于应用的整体性能来说,单一的技术意义很小,除非我们通过循环将性能的改善程度成倍放大 。例如,在一个客户机/服务器应用中,当我们不是通过指定ODBC数据源(DSN)的方式连接数据库时,大约能够节省一到二秒的时间 。对于应用整体的适用性或性能来说,这部分节省的时间所产生的影响很小 。但是,如果我们在一个中间层组件上应用这种技术,这个组件每分钟(或每小时,每天)都要建立和关闭数据库连接数百(甚至数千)次,那么,这种技术将显著地影响系统的性能表现 。因此,对于我在这里讨论的每一种技术,请务必考虑这个倍数因子——即,在一定的时间周期内,你的系统将执行同一段代码多少次 。
当你开始寻求改进性能的方案时,请考虑一下你的应用(组件,或者是ASP代码)大部份的等待和处理时间花在什么地方 。如果你发现应用程序把大量的时间花在等待Open或Execute方法执行完成,那么,你应该认真地检查一下服务器端的查询策略 。包括ADO在内,所有的数据访问接口等待查询结果的时间都相同 。例如,如果你有一个查询,SQL Server需要20秒才能完成它,不论用来执行该查询的是什么接口,没有一种接口能够比其他接口以更快的速度返回结果 。虽然有些接口打开连接的速度比较快 , 有些接口处理结果集的速度比较快,但没有一种接口能够影响数据库引擎编译和执行查询的速度 。因此 , 如果你的查询具有太高的“挑战性”——例如你没有对索引进行优化 , 你没有使用存储过程 , 服务器负载过重,或者你要求返回的记录数量太多——那么 , 世界上没有一种ADO技术能够帮助你提高性能 。除非你解决了这些基本的查询问题,否则没有一种性能调整技术能够显著地改善整体性能 。SQL Server的Query Analyzer是一个分析查询性能的优秀工具 。它能够用图形的方式显示查询的执行过程,并对改进性能的方法提出建议 。
如果你能够确信查询具有较高的效率 , 那么,你可以使用本文介绍的技术进一步调整ADO代码的性能 。这里介绍的技巧将从各个方面帮助你简化和改进ADO编程,包括:建立和维护连接,构造和提交执行速度更快的查询,提高处理查询结果的效率 , 等等 。
二、建立连接
在一个客户机/服务器应用中 , 我们可以用好几种方法把建立和初始化数据库连接所需要的时间隐藏起来 , 使得应用程序既能够打开连接,又不需要用户等待应用程序启动 。首先 , 我们可以尝试异步连接 。使用异步连接时,ADO启动连接操作之后,不等待连接完成就把控制权返回给应用程序——这样,应用程序就能够接着执行大部份初始化操作,以更快的速度完成form_load事件处理 。如果关闭并重新建立连接的时间小于连接池释放连接的时间,那么这个连接实际上是即时的 。但在许多情况下(特别是用户数量不多时),让连接保持打开状态更具有现实意义 。在中间层组件或ASP页面内部,如果数据库查询多次重复出现 , 我建议你让Connection对象保持打开状态 。
另外一个改进连接性能的办法是 , 避免使用带有DSN的ODBC 。在Microsoft,ODBC已经转入了Quick Fix Engineering(QFE,快速修理工程)状态,它意味着:除非发现重大BUG , 该公司将不再在ODBC或它的驱动程序上花时间 。另外 , 考虑性能和部署问题时,ODBC DSN也是一个必须关注的问题 。DSN必须安装到客户系统上,要求进行注册表查找,与OLE DB连接相比,它建立连接所需要的时间更长——特别是当你用直接编码的方式指定ConnectionString时,这一点尤其突出 。从实际效果来看,避免使用DSN降低的系统开销很有限:如果完全取消连接建立过程,对于每个连接,你也许能够剩下二到五秒时间(假设数据库连接池中已经没有连接) 。然而,如果你的应用程序需要频繁地建立连接,节省的时间累计起来就很可观了 。
建立数据库连接的时候,你要选择一个数据提供者 。Microsoft建议我们使用OLE DB提供者替代默认的ODBC提供者 。对比最新的OLE DB本地提供者和功能类似但较早的ODBC提供者,我感到前者令人不愉快的意外之事较少 。但无论是哪种情况 , 你都应该在决定使用某个新的提供者之前对应用进行完整地测试——代码的性能、支持的功能、行为方式都有可能发生变化 。
在中间层和ASP中 , 在保持连接打开的情况下,我们不能(从实践来看)创建出可伸缩的组件——至少在多次调用之间是这样的 。一般地,当IIS引用和释放组件、ASP页面的实例时,组件和ASP页面被频繁地装入、丢弃 。由于基于ADO的代码每次执行时都必须建立、使用、释放数据库连接,最小化连接复杂程度的策略对性能的提高程度达到了可明显测量的程度 。在这些情形下,对于我们连接数据库的速度来说,连接/会话池有着重要的意义 。如果你为Command对象的ConnectionString属性指定合适的值(即,每次使用同样的服务器、初始目录、登录ID和其他参数),那么,连接已经打开且处于可用状态的机会很大 。如果连接池中能够找到匹配的连接,连接(或重新连接)的时间将接近0(通常小于250 ms) 。
然而,如果ADO(或VB)代码不释放Connection对象,或者,我们在不同的实例之间改换了ConnectionString,OLE DB必须每次建立一个新的连接 。如果出现了这种情况,我们将很快耗尽连接池内可用连接的数量 。要确保连接被释放,我们必须在关闭连接之后把Connection对象设置为Nothing 。另外,不要在Recordset Open方法中使用ConnectionString , 而是以独立的方式打开Connection对象;这样,当我们要关闭Connection对象以及要把它设置成Nothing的时候,引用它就很方便了 。
三、构造和提交查询
在构造查询的时候,要搞清楚为什么必须这么做、为什么不能那么做是一个很复杂的问题 。然而 , 一些基本的指导方针能够让构造高效查询的过程更加流畅、轻松 。一般地 , 你不应该让查询浪费服务器时间 。下面几个技巧能够帮助你构造出更好、更高效的查询 。
不要强制SQL Server每次执行查询的时候重新编译和构造查询执行计划 。避免这种重复操作的一种简单方法是使用带有参数的存储过程 。注意尽量不要使用ADO Command对象的Prepare属性——有时它不能正确工作 。如果使用存储过程,你还可以通过消除不必要的“受影响行数”返回值进一步提高ADO性能——只需在存储过程中加入SET NOCOUNT ON就可以了 。
尽量减少与服务器的通信次数 。如果你有几个相关的操作要执行,请把它们合并为一个存储过程 , 或者是一个可以在服务器上作为脚本执行的复合查询 。避免使用方法(比如Refresh)和不适当的Parameters集合引用,它们会强制ADO增加额外的服务器通信过程 。
在客户机/服务器应用中,只构造Command对象一次,而不是每次使用Command对象的时候重新构造 。你可以重新设置Command的参数值 , 然后在需要时执行它 。
当查询返回的不是一个记录集时 , 确保使用了adExecuteNoRecords选项,告诉ADO越过所有那些用来接收和构造记录集(Recordset格式)的代码 。你可以把adExecuteNoRecords选项传递给Execute方法,或把它作为Command的选项 。
执行返回简单记录集的存储过程时,不要使用Command对象 。所有的存储过程(以及Command对象)可以作为Connection对象的COM方法出现 。让存储过程作为Connection对象的方法出现有着显著的性能优势,同时它也简化了代码 。尽管这种技术对于那些有Return Status值或Output参数的存储过程没有什么帮助,但对于动作查询(INSERT、DELETE等)以及那些返回一个或多个记录的查询来说,这种技术很有用 。把存储过程作为Connection的方法之后,你可以用方法参数的形式传入存储过程的输入参数;如果调用存储过程返回了一个记录集,你可以通过方法调用中最后一个参数引用该Recordset 。例如,下面的ADO语句执行一个名为“Fred”的存储过程 , Fred存储过程有两个输入参数,返回一个Recordset:
MyConnection.Fred"InputArg1", 2, myRecordset
编写代码的时候 , 不要寄希望于VB的自动完成功能会把存储过程或Command对象名字视为合法的Connection对象的方法 。在正式运行之前,COM不会解析这类名字 。
除非绝对必要 , 否则不要返回记录集 。当正在执行的查询返回记录时,ADO就会构造一个Recordset对象 。构造Recordset对象的开销很大,因此你应该尽量避免使用Recordset对象 。注意有时候执行查询虽然返回结果,但不是返回记录 。例如,你可以通过Return Status参数返回整数值 。另外,你可以返回Output参数来替代需要构造Recordset对象的记录集,SQL Server允许返回的Output参数多达1000个 。
只要有可能 , 请用动作查询(INSERT,UPDATE,DELETE和执行这些操作的存储过程)替代可更新的Recordset游标 。此时 , 你应该使用Execute方法和它的adExecuteNoRecords选项,确保ADO能够知道查询不需要构造Recordset对象 。
除非必要 , 否则不要请求服务器进行排序 。大多数情况下,对于一个适度大小的Recordset对象,当它被发送到客户端之后,排序速度将更快 。另外,如果让ADO客户程序排序Recordset中的记录,则客户应用程序能够按照用户选择的次序排序,从而提高了灵活性 。
在编写查询之前了解索引的结构 。创建合适的索引,调整查询的语法以利用这些索引,你将能够提高记录提取的速度 。Query Analyzer能够帮助你决定是否有必要添加更多的索引 。
不要一次性返回太多的记录 。很多时候,容量太大的记录集会严重地影响应用程序的性能 。只返回那些当前你需要的记录,如果客户程序需要更多的记录,则以后随时提取 。通过带有参数的WHERE子句,或者灵活地运用TOP N查询 , 限制查询的范围 。
不要返回太多的列 。避免使用SELECT * 。SELECT *语句告诉SQL Server返回所有的列,不管实际存在的列有多少 。只选择那些你需要的列,这样 , 当有人为表增加了更多的列时,你不会得到大得出奇的结果集 。
避免使用游标 。如果你必须使用游标 , 那么不要使用那些所需资源数量超过必要的游标类型 。如果没有必要,不要要求游标提供滚动、更新和数据缓冲能力 。
详细地告诉ADO你想要它做些什么 。打开Recordset或者构造Command对象时,不要忘了设置CommandType选项 。它避免了ADO“猜测”你的意图,你将能够减少与服务器的通信 , 而且使得代码更加稳定 。
另外,学习使用诊断工具,测定运行在服务器上的代码和应用程序的代码占用了多少时间——以及这些时间花在哪里 。在这方面,SQL Server Profiler是一个宝贵的工具 。它能够阐明你的代码在要求服务器做些什么,能够在草率构造的查询中或对于错误选择的命令属性突出显示 。另外 , Query Analyzer还能够用图示的方式显示出SQL Server将如何执行查询,提出改进查询的建议 , 帮助你调整查询 。Query Analyzer甚至还能够执行它提出的建议(例如,添加或者删除索引),你只需点击一下按钮就可以完成 。
四、处理查询结果
查询结果记录发送到客户端之后,客户端应用程序可能需要相当可观的时间去处理结果集 。每一种体系(客户机/服务器,多层体系中的中间层 , 以及ASP)都为优化这个阶段的代码提供了相应的技术 。下面是几个能够显著改善性能的技巧 。
我在代码中看到最多的错误之一是:在引用Recordset Field.Value的时候,使用延迟绑定(Late Binding) 。由于代码需要频繁地引用Value属性,而且通常要引用的Field对象有很多,本文前面提到的倍数因子将起到重要影响——因此,所有这里介绍的技巧能够显著地改善性能 。一些开发者使用延迟绑定技术的原因在于 , 他们想要明确地标识出SELECT语句选择了哪些行 。为了这个目标,许多人使用了用引号包围字符串的做法 。例如,为了引用记录集RS字段集合中的“Cows”字段,你可能使用:
RS("Cows")或者:RS.Fields("Cows").Value
后面这种方法显式地引用了记录集内Fields集合中指定成员的Value属性 。这种方法要稍微快一点,而且当你把这些代码向Visual Basic.NET迁移时,它的向上兼容性也要好一些 。上述方法的一种变化是使用感叹号(!)操作符:
RS!Cows
与先行绑定(Early-Binding)相比,采用上述方法时COM进行解析的时间要长得多,这是因为它们强制COM在运行时(而不是在编译时)解析对Value属性的引用 , 每一次对该对象的引用都要求有一系列类似的、后台进行的查找过程 。
然而,使用延迟绑定时 , 不存在代码引用的是哪一个列这类问题 。如果你完全按照下列方式编写代码:
RS(0) ' 指向第一个列(Fields集合的成员)
这时,COM能够在编译时解析Value属性地址,代码的运行速度将加快 。但是 , 只有那些了解查询所返回的列以及返回次序的人能够理解这行代码到底指向了哪一个列 。如果开发者不具备控制查询数据源的权限(这是很常见的情况),这种方法可能带来问题 。为了确定RS(0)引用了哪一个SELECT列 , 你必须找出生成该Recordset的是哪一个SELECT语句、搞清楚SELECT语句所返回的各个列 。
然而,有几种技术允许你既能够实现快速地运行时引用,同时保证代码的可读性 。其中一种方法的要求如下:开发者必须创建一个查询所返回列的枚举列表 。如果查询被改变 , 比如返回更多的列,或者列的次序发生变化,开发者必须修改和重新部署枚举列表 。遗憾的是 , 要保持枚举列表与查询的匹配,对于管理者来说是一个有些困难的任务 。例如 , 为了快速、明白地标识出ADO代码引用的是哪一个列,你可以结合下面的SELECT语句和枚举列表:
SELECT CatName, CatType, CatSize from Cats Where...Enum enuCatsQueryCatNameCatTypeCatSizeEnd Enum
注意,SELECT语句返回的列与枚举列表中声明的列完全匹配 。此后 , 当你需要引用Recordset的Fields集合时,可以使用下面的代码:
StrMyName = Rs(enuCatsQuery.CatName)
按照这种方法,代码不仅具有较好的可读性,而且它仍旧是编译时绑定 , 代码的运行速度明显加快 。
然而,要避免延迟绑定,你还可以使用另外一种方法 。vbdata-l@peach.ease.lsoft.com列表服务上一场长时间的讨论得出了一种我称之为预先绑定(Prebinding)的方法 , 它结合了两种技术 。当你只需引用Field对象一次时,这种技术没有什么帮助;但在客户机/服务器应用中,预先绑定方法非常理想 。使用这种方法时,你要创建多个独立的、命名的Field对象,并把这些对象设置为Recordset对象Fields集合中的成员 。编写代码的时候,你首先要为每一个想要使用的字段创建一个命名的Field对象 , 例如:
Dim fldName as ADODB.FieldDim fldType as ADODB.FieldDim fldSize as ADODB.Field
创建这些Field对象需要一定的开销 。然而,你应该估量一下,这是一次性的开销 , 但它却能够戏剧性地改善性能 。
打开Recordset之后,你只需一次性地把这些命名的Field对象设置为SELECT查询选择出来的列:
If fldName is Nothing thenSet fldName = RS!CatNameSet fldType = RS!CatTypeSet fldSize = RS!CatSizeEnd if
你可以在这里用引号包围字符串的方法引用列,甚至也可以使用感叹号操作符 。由于这里的代码只运行一次,不论使用什么方法 , 性能的差异都不大 。接下来,当你需要引用Field对象(查询之后)时,只需使用预先绑定的变量即可:
strName = fldNamestrType = fldTypestrSize = fldSize
这种预先绑定方法的性能甚至比序数引用方式(例如RS(0))都要好 。
五、客户机/服务器、中间层和ASP策略
在编写代码的时候,你还必须考虑到其他一些影响性能的因素 。其中一些因素与ADO没有什么关系——它们与COM有关 。Microsoft最近的一份白皮书指出 , 在Windows 2000 ASP页面中执行ADO操作(连接 , 查询,处理)要比调用COM组件执行同样的代码更快 。这个结论并不令人奇怪:当我们从VB调用一个外部COM组件(处于当前进程之外的一些代码),访问COM组件以及把控制传递给它时在后台进行的操作复杂得出奇,而且速度很慢 。虽然我们没有必要刻意避免调用COM组件去运行ADO代码 。但是 , 我们不应该简单地把多个独立的ADO操作封装成大量的小型COM组件 , 然后在需要的时候每次都去调用它们 。相反,我们应该尽量把全部逻辑封装到一个COM组件里面,使得程序只需一次调用,COM就能够完成大多数(如果不是全部)操作 。我相信,你已经发现运行二进制形式的(例如COM组件)ADO代码要比运行ASP之类的解释执行代码要快 。因此,你应该寻找一些方法,减少进入COM组件和从COM组件返回所需要的昂贵开销 。
如果你离不开Command对象 , 或者不能预先绑定Field对象并在必要时重用,那么你应该考虑避免多余的对象创建操作的技术 。在这种情况下,把存储过程作为Connection对象的方法调用有着更重要的意义 。另外,用先行绑定的方式引用Field属性也有助于改善性能 。记住操作完成后必须进行的清理工作:关闭Connection和Recordset对象 , 然后把它们设置成Nothing 。
为了让代码和代码编写者都表现出最好的性能,请记住以下基本规则:利用连接池和异步连接;减少ADO代码和数据库服务器通信的次数;选用一种COM-先行绑定技术;除非必要,尽量避免使用代价昂贵的ADO对象 , 例如Recordset和Command对象;如有可能,用Return Status和Output参数替代记录集 。尽可能地提高查询的效率,如有可能,不要忘了利用存储过程 。详细地告诉ADO你想要它做些什么,避免让ADO猜测你的意图——显式地指定ADO CommandType,使用adExecuteNoRecords之类的选项 。
【vb.net数据库连接池 vb链接数据库】对于本文所介绍的所有技巧和其他文章提出的编程忠告 , 我建议你以审视的目光看待它们 。我们所做的工作、所编写的代码、所构造的系统,都属于非常复杂的东西,许多不断变化的因素影响着它们 。理解了这一点之后,如果你对本文所讨论的某一项技术感兴趣,可以先进行一下试验 。如果它确实有效,那么就正式实现它,然后再进行测试 。如果这时它仍旧有效,那么恭喜你 。如果它不再有效,你得看看是否违反了应用该技术的必要条件 。
vb.net数据库连接池的介绍就聊到这里吧,感谢你花时间阅读本站内容 , 更多关于vb链接数据库、vb.net数据库连接池的信息别忘了在本站进行查找喔 。
推荐阅读
- 怎么保存酷狗的视频到手机,怎么把酷狗的视频保存到手机
- 小程序开发对设备的要求,小程序开发
- fanbook日本服务器ip,日本服务器端口
- linux下cvs命令 linux中cvf是什么意思
- 手机存的东西怎么转到u盘,怎样将手机里的东西存到u盘里
- cpdf转word的简单介绍
- 比较有名的经营游戏手游,好玩的经营游戏手游
- go语言断行规则 go语言示例
- html设定文字内容标签,html放文字的标签