对象链接和嵌入(Object Linking and Embeding)是一组服务功能 它提供了一种用源于不同应用程序的信息创建复合文档的强有力方法 对象可以是几乎所有的信息类型 如文字 位图 矢量图形 甚至于声音注解和录像剪辑等
Windows附件组中的书写器是应用OLE的实例 使用单击 对象 | 插入 菜单项 书写器d出插入对话框 对话框中列出了多个OLE服务器程序 如公式编辑工具 绘图工具 报表生成工具 用户双击鼠标左键 可激活一个OLE服务器 在OLE服务器中可编辑OLE对象 当用户返回到书写器中时 在书写器文档中将出现OLE对象
Delphi支持OLE技术 Delphi 可以创建OLE应用程序 Delphi 可创建OLE自动化服务器和控制器程序 本章通过例程介绍对象链接与嵌入的基本概念 Delphi创建OLE对象的方法 OLE自动化的概念以及如何开发OLE自动化服务器和控制器
OLE简介
OLE 和OLE
迄今为止 有两种版本的OLE:OLE 和OLE 当用户在OLE 服务器中激活OLE对象 服务器程序在前台打开自己的窗体 并获得焦点 OLE窗体失去焦点 存在于单独的窗体之中
OLE 服务器采用 本地 (in place)激活方式 本地激活意味着服务器菜单与应用程序菜单要进行融合 服务器的状态条更换应用程序状态条 服务器的工具条更换应用程序工具条 OLE对象在应用程序窗体中进行编辑 但所有过程均由服务器处理
创建OLE对象的服务器决定了OLE的激活方式 如果一个OLE 的对象在OLE 编译的应用程序中打开 它将采用OLE 的方式
链接与嵌入
链接对象的数据保存在OLE服务器创建的文件中 嵌入对象的数据保存在OLE应用程序中
链接对象必须以文件形式保存 只有对OLE服务器已经创建好的OLE对象 才能进行OLE链接 链接的OLE对象文件可被OLE应用程序或其它程序进行修改 OLE 服务器和其它OLE应用程序也可以访问和修改OLE对象 对象数据保存在某一处 但可以被多个应用程序访问
Delphi应用程序可以得到OLE对象文件中的最新数据 当OLE 对象数据被应用程序修改时 这些变化将在所有包含该对象的其它应用程序中体现
嵌入对象保存在OLE应用程序中 其它应用程序不能访问该对象 只有在OLE应用程序中激活OLE对象才能对其进行编辑 嵌入的OLE对象不需要保存在文件中 所有数据都在应用程序中 这就确保了OLE数据不会被偶然地删除或修改 不足之处是应用程序的规模因为保存了OLE数据而增大了
如果用户想保存对嵌入对象的修改 可以把OLE数据存入文件中 本章第 节将详细讨论这个问题
使用链接或嵌入的原则
想要对源对象进行修改及将这些修改反映到其他与源对象链接的应用程序或文本中 源对象可能被多个OLE应用程序应用程序频繁修改 源对象的文件不会被频繁移动 且不会被删除
对象很大 一般通过网络或电子邮件进行分配
对源对象进行修改 并将这些修改反映在一个特定的应用程序或文本中 源对象不可能被一个OLE应用程序频繁修改 源对象的文件可能被频繁移动 且不会被删除
对象很小 或对象很大却无法通过网络或电子邮件进行分配
设计状态OLE对象的创建
在Delphi中 可分别在设计状态或运行状态创建OLE对象 表 说明了两种状态创建对象的差别
设计 运行状态OLE对象的创建
对象保存在运行文件中 增加了所需编译的程序的规模 开发者需在设计时访问OLE服务器运行时OLE对象已经创建 减小了运行时间 OLE对象在设计运行时间可行性编辑应用程序的OLE对象数目在设计时已经确立
对象保存在一个文件中或只在运行时才有 减小了编译程序的规模 开发者不需要在设计时访问OLE服务器运行时OLE对象已经创建 增加了运行时间 OLE对象只能在运行时编辑 应用程序可以在运行时创建新的OLE对象 在设计状态 OLE服务器不能被本地激活 只能在自己的窗体内激活 但在运行状态
只要OLE服务器支持本地激活 就可以使用这种方式
OLE类 文件 项目
OLE类决定创建OLE对象的服务器 有些应用程序需要创建多种类型的OLE对象 例如应用程序同时链接或嵌入公式 等 OLE类也决定OLE对象所包含的数据类型 链接或嵌入对象均要定义OLE类
OLE文件是包含OLE对象数据的源文件 链接对象必须使用对象文件 因为链接对象在文件中保存 如果应用程序从已存在的源文件中创建嵌入对象 也要使用OLE文件 例如 如果链接到QuattiPro笔记本的OLE对象TUTOR WBI存储在D:\DFFICE\QPW目录下 则OLE文件就是D:\DFFICE\QPW\TUTOR WBI 值得注意的是OLE文件只能为链接对象所定义 而对于嵌入对象 只需定义OLE类
OLE项目是代表链接或嵌入数据的OLE文件中的一部分 当应用程序希望OLE对象包含比OLE文件小的数据块时 则必须使用OLE项目
例如 在QuattiPro笔记本中 OLE对象链接了GasCosts的B 到B 范围的网格 OLE项目是$GasCosts;$B$ $B$
设计状态OLE对象的创建
Dephi可以在设计状态和运行状态中创建OLE对象 本节介绍设计状态OLE对象的创建
TOLEContainer部件
要创建OLE对象 需在窗体中加入OLE包容器部件 应用程序部件包含链接或嵌入的对象 用该部件可显示在OLE服务器编辑的数据 部件的ObjClass ObjDoc ObjItem 属性分别定义OLE类 文件 项目 要定义OLE对象是否本地激活 使用InPlaceActive 属性 如果OLE对象可以本地激活 OLE服务器菜单将与OLE应用程序的菜单进行融合 GroupIndex属性的值将决定菜单融合情况
OLE对象创建的步骤
在窗体中增加OLE包容器部件
在Object inspector中单击ObjClass或ObjDoc属性的省略按钮 将出现插入对象对话框
如果要插入的OLE 对象已存储在文件中 选择 Creat From File 而后定义该对象的文件名和路径名 如果是链接对象 则选择链接检查框 如果是嵌入对象 选择 Creat new 并在对象类型列表框中选择OLE对象
选择OK按钮
如果是创建新对象 OLE服务器将激活 则可对OLE对象进行编辑 完成编辑后关闭OLE服务器 典型的例子是单击服务器中的 File 或 File|Update 菜单
此时ObjClass属性中包含了相应的值 如果OLE对象从已存在的文件中创建或插入一
个链接对象 ObjDoc属性包含了OLE文件
lishixinzhi/Article/program/Delphi/201311/25219
计算机语言的种类非常的多,总的来说可以分成机器语言,汇编语言,高级语言三大类。
电脑每做的一次动作,一个步骤,都是按照以经用计算机语言编好的程序来执行的,程序是计算机要执行的指令的集合,而程序全部都是用我们所掌握的语言来编写的。所以人们要控制计算机一定要通过计算机语言向计算机发出命令。
计算机所能识别的语言只有机器语言,即由0和1构成的代码。但通常人们编程时,不采用机器语言,因为它非常难于记忆和识别。
目前通用的编程语言有两种形式:汇编语言和高级语言。
汇编语言的实质和机器语言是相同的,都是直接对硬件 *** 作,只不过指令采用了英文缩写的标识符,更容易识别和记忆。它同样需要编程者将每一步具体的 *** 作用命令的形式写出来。汇编程序通常由三部分组成:指令、伪指令和宏指令。汇编程序的每一句指令只能对应实际 *** 作过程中的一个很细微的动作,例如移动、自增,因此汇编源程序一般比较冗长、复杂、容易出错,而且使用汇编语言编程需要有更多的计算机专业知识,但汇编语言的优点也是显而易见的,用汇编语言所能完成的 *** 作不是一般高级语言所能实现的,而且源程序经汇编生成的可执行文件不仅比较小,而且执行速度很快。
高级语言是目前绝大多数编程者的选择。和汇编语言相比,它不但将许多相关的机器指令合成为单条指令,并且去掉了与具体 *** 作有关但与完成工作无关的细节,例如使用堆栈、寄存器等,这样就大大简化了程序中的指令。同时,由于省略了很多细节,编程者也就不需要有太多的专业知识。
高级语言主要是相对于汇编语言而言,它并不是特指某一种具体的语言,而是包括了很多编程语言,如目前流行的VB、VC、FoxPro、Delphi等,这些语言的语法、命令格式都各不相同。
高级语言所编制的程序不能直接被计算机识别,必须经过转换才能被执行,按转换方式可将它们分为两类:
解释类:执行方式类似于我们日常生活中的“同声翻译”,应用程序源代码一边由相应语言的解释器“翻译”成目标代码(机器语言),一边执行,因此效率比较低,而且不能生成可独立执行的可执行文件,应用程序不能脱离其解释器,但这种方式比较灵活,可以动态地调整、修改应用程序。
编译类:编译是指在应用源程序执行之前,就将程序源代码“翻译”成目标代码(机器语言),因此其目标程序可以脱离其语言环境独立执行,使用比较方便、效率较高。但应用程序一旦需要修改,必须先修改源代码,再重新编译生成新的目标文件(*OBJ)才能执行,只有目标文件而没有源代码,修改很不方便。现在大多数的编程语言都是编译型的,例如VisualC++、VisualFoxpro、Delphi等。
学习编程,从何入手
如果您想学习编程,却又不知从何入手,那么您不妨看看下面的几种学习方案,可能会给您一些启示吧!
方案一Basic语言&VisualBasic
优点
(1)Basic简单易学,很容易上手。
(2)VisualBasic提供了强大的可视化编程能力,可以让你轻松地做出漂亮的程序。
(3)众多的控件让编程变得象垒积木一样简单。
(4)VisualBasic的全部汉化让我们这些见了English就头大的人喜不自禁。
缺点
(1)VisualBasic不是真正的面向对象的开发文具。
(2)VisualBasic的数据类型太少,而且不支持指针,这使得它的表达能力很有限。
(3)VisualBasic不是真正的编译型语言,它产生的最终代码不是可执行的,是一种伪代码。它需要一个动态链接库去解释执行,这使得VisualBasic的编译速度大大变慢。
综述:方案一适合初涉编程的朋友,它对学习者的要求不高,几乎每个人都可以在一个比较短的时间里学会vB编程,并用VB做出自己的作品。对于那些把编程当做游戏的朋友来说,VB是您最佳的选择。
方案二Pascal语言&Delphi
优点
(1)Pascal语言结构严谨,可以很好地培养一个人的编程思想。
(2)Delphi是一门真正的面向对象的开发工具,并且是完全的可视化。
(3)Delphi使用了真编译,可以让你的代码编译成为可执行的文件,而且编译速度非常快。
(4)Delphi具有强大的数据库开发能力,可以让你轻松地开发数据库。
缺点
Delphi几乎可以说是完美的,只是Pascal语言的过于严谨让人感觉有点烦。
综述:方案二比较适合那些具有一定编程基础并且学过Pascal语言的朋友。
方案三C语言&VisualC
优点
(1)C语言灵活性好,效率高,可以接触到软件开发比较底层的东西。
(2)微软的MFC库博大精深,学会它可以让随心所欲地进行编程。
(3)VC是微软制作的产品,与 *** 作系统的结合更加紧密。
缺点
对使用者的要求比较高,既要具备丰富的C语言编程经验,又要具有一定的WINDOWS编程基础,它的过于专业使得一般的编程爱好者学习起来会有不小的困难。
综述:VC是程序员用的东西。如果你是一个永不满足的人,而且可以在编程上投入很大的精力和时间,那么学习VC你一定不会后悔的。
C语言简介
方案四C语言&CBuilder
优点
(1)C语言的优点全部得以继承。
(2)完全的可是化。
(3)极强的兼容性,支持OWL、VCL和MFC三大类库。
(4)编译速度非常快。
缺点
由于推出的时间太短,关于它的各种资料还不太多。
综述:我认为CBuilder是最好的编程工具。它既保持了C语言编程的优点,又做到了完全的可视化。
方案五SQL语言&PowerBuilder
对于一些传统的数据开发人员来说,Foxpro系列也许让他们感到更加熟悉。但是对于初学者来说,也许是最好的数据库开发工具。各种各样的控件,功能强大的语言都会帮助你开发出自己的数据库应用程序。
JSP简介
在Sun正式发布JSP(JavaServerPages)之后,这种新的Web应用开发技术很快引起了人们的关注。JSP为创建高度动态的Web应用提供了一个独特的开发环境。按照Sun的说法,JSP能够适应市场上包括ApacheWebServer、IIS40在内的85%的服务器产品。
JSP与ASP的简单比较
JSP与Microsoft的ASP技术非常相似。两者都提供在HTML代码中混合某种程序代码、由语言引擎解释执行程序代码的能力。在ASP或JSP环境下,HTML代码主要负责描述信息的显示样式,而程序代码则用来描述处理逻辑。普通的HTML页面只依赖于Web服务器,而ASP和JSP页面需要附加的语言引擎分析和执行程序代码。程序代码的执行结果被重新嵌入到HTML代码中,然后一起发送给浏览器。ASP和JSP都是面向Web服务器的技术,客户端浏览器不需要任何附加的软件支持。
ASP的编程语言是VBScript之类的脚本语言,JSP使用的是Java,这是两者最明显的区别。
此外,ASP与JSP还有一个更为本质的区别:两种语言引擎用完全不同的方式处理页面中嵌入的程序代码。在ASP下,VBScript代码被ASP引擎解释执行;在JSP下,代码被编译成Servlet并由Java虚拟机执行,这种编译 *** 作仅在对JSP页面的第一次请求时发生。
运行环境
执行JSP代码需要在服务器上安装JSP引擎。此处我们使用的是Sun的JavaServerWebDevelopmentKit(JSWDK)。为便于学习,这个软件包提供了大量可供修改的示例。安装JSWDK之后,只需执行startserver命令即可启动服务器。在默认配置下服务器在端口8080监听,使用localhost:8080即可打开缺省页面。
在运行JSP示例页面之前,请注意一下安装JSWDK的目录,特别是"work"子目录下的内容。执行示例页面时,可以在这里看到JSP页面如何被转换成Java源文件,然后又被编译成class文件(即Servlet)。JSWDK软件包中的示例页面分为两类,它们或者是JSP文件,或者是包含一个表单的HTML文件,这些表单均由JSP代码处理。与ASP一样,JSP中的Java代码均在服务器端执行。因此,在浏览器中使用"查看源文件"菜单是无法看到JSP源代码的,只能看到结果HTML代码。所有示例的源代码均通过一个单独的"examples"页面提供。
JavaServlet是一种开发Web应用的理想构架。JSP以Servlet技术为基础,又在许多方面作了改进。JSP页面看起来象普通HTML页面,但它允许嵌入执行代码,在这一点上,它和ASP技术非常相似。利用跨平台运行的JavaBean组件,JSP为分离处理逻辑与显示样式提供了卓越的解决方案。JSP必将成为ASP技术的有力竞争者。
SQL语言简介
SQL全称是“结构化查询语言(StructuredQueryLanguage)”,最早的是IBM的圣约瑟研究实验室为其关系数据库管理系统SYSTEMR开发的一种查询语言,它的前身是SQUARE语言。SQL语言结构简洁,功能强大,简单易学,所以自从IBM公司1981年推出以来,SQL语言,得到了广泛的应用。如今无论是像Oracle,Sybase,Informix,SQLserver这些大型的数据库管理系统,还是像VisualFoxporo,这些微机上常用的数据库开发系统,都支持SQL语言作为查询语言。
StructuredQueryLanguage包含4个部分:
数据查询语言DQL-DataQueryLanguageSELECT
数据 *** 纵语言DQL-DataLanguageINSERT,UPDATE,DELETE
数据定义语言DQL-DataDefinitionLanguageCREATE,ALTER,DROP
数据控制语言DQL-DataControlLanguageCOMMITWORK,ROLLBACKWORK
SQL的历史
在70年代初,EECodd首先提出了关系模型。70年代中期,IBM公司在研制SYSTEMR关系数据库管理系统中研制了SQL语言,最早的SQL语言(叫SEQUEL2)是在1976年11月的IBMJournalofR&D上公布的。
SQL的优点
SQL广泛地被采用正说明了它的优点。它使全部用户,包括应用程序员、DBA管理员和终端用户受益非浅。
(1)非过程化语言
SQL是一个非过程化的语言,因为它一次处理一个记录,对数据提供自动导航。SQL允许用户在高层的数据结构上工作,而不对单个记录进行 *** 作,可 *** 作记录集。所有SQL语句接受集合作为输入,返回集合作为输出。SQL的集合特性允许一条SQL语句的结果作为另一条SQL语句的输入。SQL不要求用户指定对数据的存放方法。这种特性使用户更易集中精力于要得到的结果。所有SQL语句使用查询优化器,它是RDBMS的一部分,由它决定对指定数据存取的最快速度的手段。查询优化器知道存在什么索引,哪儿使用合适,而用户从不需要知道表是否有索引,表有什么类型的索引。
(2)统一的语言
SQL可用于所有用户的DB活动模型,包括系统管理员、数据库管理员、应用程序员、决策支持系统人员及许多其它类型的终端用户。基本的SQL命令只需很少时间就能学会,最高级的命令在几天内便可掌握。SQL为许多任务提供了命令,包括:
查询数据
在表中插入、修改和删除记录
建立、修改和删除数据对象
控制对数据和数据对象的存取
保证数据库一致性和完整性
以前的数据库管理系统为上述各类 *** 作提供单独的语言,而SQL将全部任务统一在一种语言中。
(3)是所有关系数据库的公共语言
由于所有主要的关系数据库管理系统都支持SQL语言,用户可将使用SQL的技能从一个RDBMS转到另一个。所有用SQL编写的程序都是可以移植的。
Java语言简介
一Java的由来
当1995年SUN推出Java语言之后,全世界的目光都被这个神奇的语言所吸引。那么Java到底有何神奇之处呢
Java语言其实最是诞生于1991年,起初被称为OAK语言,是SUN公司为一些消费性电子产品而设计的一个通用环境。他们最初的目的只是为了开发一种独立于平台的软件技术,而且在网络出现之前,OAK可以说是默默无闻,甚至差点夭折。但是,网络的出现改变了OAK的命运。
在Java出现以前。Internet上的信息内容都是一些乏味死板的HTML文档。这对于那些迷恋于WEB浏览的人们来说简直不可容忍。他们迫切希望能在WEN中看到一些交互式的内容,开发人员也极希望能够在WEB上创建一类无需考虑软硬件平台就可以执行的应用程序,当然这些程序还要有极大的安全保障。对于用户的这种要求,传统的编程语言显得无能为力,面SUN的工程师敏锐地察觉到了这一点,从1994年起,他们开始将OAK技术应用于WEB上,并且开发出了HotJava的第一个版本。当SUN公司1995年正式以Java这个名字推出的时候,几乎所有的WEB开发人员都想到:噢,这正是我想要的。于是Java成了一颗耀眼的明星,丑小鸭一下了变成了白天鹅。
二Java的定义
Java是一种简单的,面象对象的,分布式的,解释的,键壮的安全的,结构的中立的,可移植的,性能很优异的多线程的,动态的语言。
Java的开发环境有不同的版本,如sun公司的JavaDevelopersKit,简称JDK。后来微软公司推出了支持Java规范的MicrosoftVisualJJava开发环境,简称VJ。
三Java的特点
1平台无关性
平台无关性是指Java能运行于不同的平台。Java引进虚拟机原理,并运行于虚拟机,实现不同平台的Java接口之间。使用Java编写的程序能在世界范围内共享。Java的数据类型与机器无关,Java虚拟机(JavaVirtualMachine)是建立在硬件和 *** 作系统之上,实现Java二进制代码的解释执行功能,提供于不同平台的接口的。
2安全性
Java的编程类似C,学习过C的读者将很快掌握Java的精髓。Java舍弃了C的指针对存储器地址的直接 *** 作,程序运行时,内存由 *** 作系统分配,这样可以避免病毒通过指针侵入系统。Java对程序提供了安全管理器,防止程序的非法访问。
3面向对象
Java吸取了C面向对象的概念,将数据封装于类中,利用类的优点,实现了程序的简洁性和便于维护性。类的封装性、继承性等有关对象的特性,使程序代码只需一次编译,然后通过上述特性反复利用。程序员只需把主要精力用在类和接口的设计和应用上。Java提供了众多的一般对象的类,通过继承即可使用父类的方法。在Java中,类的继承关系是单一的非多重的,一个子类只有一个父类,子类的父类又有一个父类。Java提供的Object类及其子类的继承关系如同一棵倒立的树形,根类为Object类,Object类功能强大,经常会使用到它及其它派生的子类。
4分布式
Java建立在扩展TCP/IP网络平台上。库函数提供了用HTTP和FTP协议传送和接受信息的方法。这使得程序员使用网络上的文件和使用本机文件一样容易。
5键壮性
Java致力于检查程序在编译和运行时的错误。类型检查帮助检查出许多开发早期出现的错误。Java自已 *** 纵内存减少了内存出错的可能性。Java还实现了真数组,避免了覆盖数据的可能。这些功能特征大大提高了开发Java应用程序的周期。Java提供:Null指针检测、数组边界检测、异常出口、Bytecode校验。
四Java与C/C语言
Java提供了一个功能强大语言的所有功能,但几乎没有一点含混特征。C安全性不好,但C和C被大家接受,所以Java设计成C形式,让大家很容易学习。
Java去掉了C语言的许多功能,让Java的语言功能很精炼,并增加了一些很有用的功能,如自动收集碎片。
Java去掉了以下几个C和C功能:
指针运算
结构
typedefs
#define
需要释放内存
这将减少了平常出错的50%。而且,Java很小,整个解释器只需215K的RAM。
面象对象:Java实现了C的基本面象对象技术并有一些增强,(为了语言简单,删除了一些功能)。Java处理数据方式和用对象接口处理对象数据方式一样。
五Java与Internet
我们知道,早先的www仅可以传送文本和,Java的出现实现了互动的页面,是一次伟大的革命。
Java并不是为Internet,WWW而设计的,它也可以用来编写独立的应用程序。Java是一种面向对象语言。Java语言类似于C语言,所以已熟练掌握C语言的编程人员,再学习Java语言就容易得多!Java程序需要编译。实际上有两种Java程序:一种Java应用程序是一个完整的程序,如Web浏览器。一种Java小应用程序是运行于Web浏览器中的一个程序
Java程序和它的浏览器HotJava,提供了可让你的浏览器运行程序的方法。你能从你的浏览器里直接播放声音。你还能播放页面里的动画。Java还能告诉你的浏览器怎样处理新的类型文件。当我们能在2400baud线上传输视频图象时,HotJava将能显示这些视频。
当今Internet的一大发展趋势是电子商务,而Internet的安全问题是必须解决的问题,通常大的部门应设置防火墙,阻止非法侵入。
电子商务是当今的热门话题,然而传统的编程语言难以胜任电子商务系统,电子商务要求程序代码具有基本的要求:安全、可靠、同时要求能与运行于不同平台的机器的全世界客户开展业务。Java以其强安全性、平台无关性、硬件结构无关性、语言简洁同时面向对象,在网络编程语言中占据无可比拟的优势,成为实现电子商务系统的首选语言。
Java程序被放置在Internet服务器上,当用户访问服务器时,Java程序被下载到本地的用户机上,由浏览器解释运行。
Delphi简介
Delphi这个名字源于古希腊的城市名。它集中了第三代语言的优点。以ObjectPascal为基础,扩充了面向对象的能力,并且完美地结合了可视化的开发手段。Delphi自1995年3月一推出就受到了人们的关注,并在当年一举夺得了多项大奖。
Delphi的出现打破了V承可视化编程领域一统天下的局面。并且Delphi使用了本地编译器直接生成技术,使程序的执行性能远远高于其它产品生成的程序。它还是真正的面向对象的编程语言。PASCAL语言的严谨加上可视化的优势和强大的数据库功能使得它有充分的资本和微软的VB叫板。许多人当时都认为Pascal是最有前途的程序设计语言,并预测Delphi将会成为可视化编程的主流环境。
Delphi在你编好程序后自动转换成EXE文件它运行时速度比VB快,而且编译后不需要其他的支持库就能运行。它的数据库功能也挺强的,是开发中型数据库软件理想的编程工具。Delphi适用于应用软件、数据库系统、系统软件等类型的开发。而且它拥有和VB差不多一样的功能,而且一样能应用API函数,这在控制Windows很有用。
Delphi是全新的可视化编程环境,为我们提供了一种方便、快捷的Windows应用程序开发工具。它使用了MicrosoftWindows图形用户界面的许多先进特性和设计思想,采用了d性可重复利用的完整的面向对象程序语言(Object-OrientedLanguage)、当今世界上最快的编辑器、最为领先的数据库技术。对于广大的程序开发人员来讲,使用Delphi开发应用软件,无疑会大大地提高编程效率,而且随着应用的深入,您将会发现编程不再是枯燥无味的工作——Delphi的每一个设计细节,都将带给您一份欣喜。
Delphi的基本形式
Delphi实际上是Pascal语言的一种版本,但它与传统的Pascal语言有天壤之别。一个Delphi程序首先是应用程序框架,而这一框架正是应用程序的“骨架”。在骨架上即使没有附着任何东西,仍可以严格地按照设计运行。您的工作只是在“骨架”中加入您的程序。缺省的应用程序是一个空白的窗体(form),您可以运行它,结果得到一个空白的窗口。这个窗口具有Windows窗口的全部性质:可以被放大缩小、移动、最大最小化等,但您却没有编写一行程序。因此,可以说应用程序框架通过提供所有应用程序共有的东西,为用户应用程序的开发打下了良好的基础。
Delphi已经为您做好了一切基础工作——程序框架就是一个已经完成的可运行应用程序,只是不处理任何事情。您所需要做的,只是在程序中加入完成您所需功能的代码而已。在空白窗口的背后,应用程序的框架正在等待用户的输入。由于您并未告诉它接收到用户输入后作何反应,窗口除了响应Windows的基本 *** 作(移动、缩放等)外,它只是接受用户的输入,然后再忽略。
本地型数据库接口
本地型数据库是伴随微机的产生而产生的 dBASEII作为最早的并仍在使用的系统之一就是典型的本地型数据库
本地型数据库管理系统的数据存放在一个本地硬盘上 DBMS接受来自用户或用户程序的命令 这些命令通常是系统特有的数据库管理语言 命令被转换为简单的磁盘访问命令 并交付文件系统来处理 然后DBMS接收来自磁盘上的数据 并加以处理
在本地型DBMS应用中 数据库引擎(DBE)运行于工作站上 图 暗示数据是存放在工作站的局部驱动器上 其实在网络中 数据还可存放在文件服务器上 这里数据库引擎使用典型的文件I/O调用和记录封锁技术来直接读写数据
存放数据的文件位于网络中的某个服务器上时 DBMS的行力与单机情况无异 网络 *** 作系统负责对服务器的管理 因此对DBMS而言 对服务器的使用就象使用局部的驱动器一样
当用户发出命令 请求DBMS读取数据库中的数据时 该请求首先由工作站(客户)的网络驱动程序处理 它负责把请求从网络上传到所需的服务器网络文件系统 服务器 *** 作系统从适当的磁盘卷上找到数据 并发回等待中的工作站驱动程序 最后 数据回传给DBMS 这样DBMS使用这些数据就象使用本地存储的数据一样 网络情况下的接口比单机情况下接口的处理增加了通信开销 正常情况下这种额外开销不会影响用户的响应时间 除非在网络通信的高峰期间或DBMS要求大数据量传递
对于本地型DBMS其大部分工作都在工作站一侧完成 即使数据存储在文件服务器上 其对数据的处理仍然要在工作站上进行 这种方式的最主要的一个缺点是无论查询需要多么少的数据 都需要首先将查询中的所有数据通过网络传到工作站 然后由工作站负责选出满足查询条件的数据 不难想象 当几个用户同时 *** 作数据库时 数据库网络的带宽会很快阻塞
在这一方式下 工作站不仅要负责所有用户界面管理 还要负责所有数据处理的工作 在当今的数据库应用中 尤其是那些功能强且使用简便的系统 用户界面的处理开销是相当大的 象Windows这样的图形环境 处理上的额处开销会更大 为此而升级工作站是很得不偿失的
客户/服务器型数据接口
由于服务器硬件技术逐年迅速地提高 数据库在处理模式上在近五年内发生了改变 本地型DBMS逐渐让位给客户/服务器型DBMS 尤其是在大中型企业中更是这样
正如名字所暗示的 客户/服务器是将处理工作分散到工作站和服务器上去处理 服务器不仅负责存取数据 还要对数据作一定的处理工作 这样在数据发送给工作站之前即求得查询结果集 从而在大部分情况下可大大减少网络传输的开销 因此 也减轻了工作处理负担 从而只需关心用户界面的处理工作即可
服务器处理数据带来的另一个好处是 当服务器中数据库引擎使用了缓冲机制时 多个工作站可以从中受益 例如 一用户查询了某数据 当另一用户要查询同样的数据时 即可从服务器缓冲中直接得到结果 从而免去很多开销
客户/服务器系统的成功与否在很大程度上依赖于服务器硬件质量和容量 用户越多 服务器的处理负担越重 相应服务器硬件性能也要跟得上 否则就会导致响应时间比本地型数据库还要差的结果
处理工作 而工作站负责用户界面处理工作
客户和服务器间的数据库接口要比本地型系统复杂得多 它有几个转换级负责命令和结果集在工作站和服务器间的传送 图 给出了客户/服务器数据库接口的详细情况
客户/服务器的前端应用程序实际上不直接与数据库引擎打交道 每个客户服务器提供一个数据库通信接口 该数据库通信接口运行于前端 这些接口也称为数据库通信API等 数据库通信接口的工作流程如下
① 前端应用程序发送命令给数据库通信接口
② 接口通过网络把命令传给数据库引擎
③ 数据库引擎在服务时上做查询或更新 *** 作之类的工作 通过网络文件系统访问物理数据
④ 数据库引擎将结果返送给工作站上的通信接口
⑤ 前端从接口上接到结果后 显示或按用户要求做其它处理
客户/服务器型比本地型DBMS更接近ODBC的原理 因为由前端向数据库的命令发送和由数据库向前端结果的返回都是透明的 并不需知道具体传送方式如何 各系统存在差别地方是 客户/服务器系统在管理工作站和服务器间通信的方式不同 彼此会不兼容 此外 对于本地型DBMS缺乏读取不同类型数据源的能力的问题 这些问题在IDAPI中得到了有效解决
Borland Delphi 的解决方案
IDAPI是通过BDE(Borland Database Engine)和SQL Links 来解决本地型数据库接口和客户/服务器型数据库接口的兼容问题的 见图
Delphi 的数据库特性使你能很容易构造数据库应用程序 这些应用程序能访问Visual dBASE Paradox Local InterBase Server for Windows等本地数据库和Oracle Sybase Informix SQL Server和Remote InterBase Server等客户/服务器数据库
BDE是Borland公司支持Delphi Client/Server Suite Paradox for Windows Visual dBASE for Windows等产品的核心数据库引擎和互连软件 BDE 提供了丰富和强壮的特性支持客户/服务器应用的开发
提供支持多种数据库如dBASE Paradox Text InterBase Oracle Sybase和Microsoft SQL Server以及任何ODBC数据源的统一和一致的应用程序编程接口(API) 开发者能不用修改数据库应用就能访问不同的数据库站点和数据库格式
● BDE是用于开发客户/服务器数据库应用的理想工具 数据库应用程序既可访问本地数据库又可访问远程数据库
● 允许数据库用直接和灵活地访问数据源
● BDE对于Paradox和dBASE文件格式来是高性能的数据库引擎
● 支持使用ISAM(Indextd Sequential Access Method)SQL和QBE访问数据
● BDE是数据集成化引擎 提高跨不同数据库的共享服务 支持不同数据库格式的相互转化 如dBASE和Oracle表 从InterBase到Paradox拷贝数据甚至建立InterBase 和Oracle表之间的一对多关系
● BDE查询引擎为SQL QBE和面向集合访问提供一致性的查询语言 支持用户定义和访问基本SQL的服务器和基于文件数据库的能力
● BDE支持全 位功能 如多线程 抢占式多进程 长文件名和UNC 用户可在后台执行多个查询 多个数据库应用可访问同一个数据库文件
BDE的体系结构是基于数据库驱动程序的 它提供了各种共享服务
● 缓冲区管理(Buffer Manager)
● 排序引擎
● OS服务
● 内存管理
● BLOB快速存取
● SQL查询引擎
● SQL产生器
● 数据库重构
● 表的批处理
● 数据转换服务
● 连接服务
● 内存数据库服务
● SQL驱动程序服务
● 系统管理
● 语言管理
lishixinzhi/Article/program/Delphi/201311/25136
设计应与实际应用场景相符合。
在用户场景下,一般服务器搭建在公司内或托管在其他服务提供商的服务器内。由于不同地区的用户访问时,网络有不固定延迟。此类属于正常情况。无需快速返回错误。
假设用户因网络缘故连接到SQL SERVER需要10s,但是你的连接超时是5s,用户本来是可以进行访问的,但是由于你的连接超时太短,会造成无法正常连接。
一般来说,影响连接时间有很多原因。内存开销过大,CPU被占用,网络带宽不够,线路不好。IO被大量占用。
如果是单机访问,速度应该还是会很快的。
关于快速返回失败的方式。
如果确实需要快速返回连接错误,在同步连接时,将超时属性设置为10ms左右即可。具体数值根据实际应用环境确定。
此外需要考虑SQL Server服务端的配置信息。
正常对于传输类场景如何进行优化处理。
对于大量网络传输的场景,比如大量查询,多次调用同一段sql。可以考虑使用sql的缓存机制,多表联合查询时,考虑连接条件。单表查询时,考虑创建正确的索引。对于常用而无需经常变动的数据,考虑使用多线程在后台加载,并建立内存表,同时考虑同步机制。对于事务考虑锁的颗粒度。等等以上,都是常见的处理方式。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)