(计算机软件与理论专业论文)web应用系统研究及在线识别系统的实现.pdf_第1页
(计算机软件与理论专业论文)web应用系统研究及在线识别系统的实现.pdf_第2页
(计算机软件与理论专业论文)web应用系统研究及在线识别系统的实现.pdf_第3页
(计算机软件与理论专业论文)web应用系统研究及在线识别系统的实现.pdf_第4页
(计算机软件与理论专业论文)web应用系统研究及在线识别系统的实现.pdf_第5页
已阅读5页,还剩52页未读 继续免费阅读

(计算机软件与理论专业论文)web应用系统研究及在线识别系统的实现.pdf.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

ab s t r a c t t h e e me r g e n c e o f i n t e r n e t h a s b r o u g h t t h e w o r l d i n t o b r a n d 一 n e w t i me s d u r i n g t h i s p e r i o d www i s o n e o f t h e m o s t i m p o r t a n t f a c t o r s t h a t a c c e l e r a t e i n t e r n e t t o b e p o p u l a r i z e d wi t h t h e a d v a n c e me n t o f i n t e r n e t a n d n e t w o r k t e c h n o l o g y we b h a s b e e n m a k i n g g r e a t p r o g r e s s w i t h d y n a mi c i n t e r a c t i v e w e b s i t e a n d r e a l t i me s c a l a b l e t r a n s a c t i o n s y s t e m w h i c h w a s u s e d t o p u b l i s h a n d s e a r c h i n f o r ma t i o n a t f i r s t n o w we b i s e f f e c t i n g o n a n d c h a n g i n g p e o p l e s l i f e t h e r e f o r e i t h a s b e e n o n e h o t r e s e a r c h w h i c h h o w t o b u i l d c o m p l e x we b a p p l i c a t i o n s y s t e m b a s e d o n e x i s t i n g d i s t r i b u t e d e n v i r o n me n t o f i n t e r n e t a l o n g w i t h t h e r a p i d d e v e l o p me n t o f c o m p u t e r t e c h n o l o g y e v e r y w a l k o f l i f e r e q u i r e s t h e r a p i d i t y o f s o f t w a r e d e v e l o p me n t f a s t e r a n d p r o d u c t q u a l i t y h i g h e r b u t t r a d i t i o n a l s o f t w a r e d e v e l o p m e n t s m e t h o d s h a v e n t f i t c o m p o n e n t t e c h n i c t h a t o c c u r r e d i n 9 0 s i s l i k e l y t o r e s o l v e t h i s p r o b l e m c o m p o n e n t i s p l u g a n d p l a y e l e m e n t t h a t m a k e s u p o f s o f t w a r e a n d i s b i n a r y s y s t e m c e l l t h a t c a n b e i n d e p e n d e n t l y p r o d u c e d d i s t r i b u t e d s o l d a n d a s s e mb l e d n o w t h e r e a r e t w o m a i n c o m p o n e n t s t a n d a r d s c a r b a a n d c o m o f w h i c h c a r b a i s p r i ma r i l y u s e d o n u n i x p l a t f o r m c o m o n wi n d o w s wi n nt e n v i r o n me n t a t p r e s e n t c o m p o n e n t t e c h n i c h a s b e e n a p p l i e d i n m o s t a r e a s o f c o mp u t e r s o f t w a r e i t i s v e r y e a s y t o b u i l d c o m p l e x s c a l a b l e d i s t r i b u t e d we b a p p l i c a t i o n s y s t e m i f c o m p o n e n t t e c h n i c i s i n t e g r a t e d w i t h we b s y s t e m i n t h i s t h e s i s w e mo s t l y d i s c u s s t h e d e v e l o p m e n t a l p r o g r e s s o f w e b t e c h n i c a n d p o p u l a r w e b t o o l s a t p r e s e n t a t t h e s a m e t i me s i m p l y i n t r o d u c e c o mp o n e n t t e c h n o l o g y o f c o m t h a t i s u s e d o n wi n d o w s wi n n t p l a t f o r m f a r a n d w i d e t h e n w e i n t e g r a t e we b a n d c o m p o n e n t t e c h n i c t o d i s c u s s h o w t o c o n s t r u c t c o m p l i c a t e d d i s t r i b u t e d we b a p p l i c a t i o n s y s t e m b a s e d o n c o m a t l a s t w e d e t a i l e d l y i n t r o d u c e a m a t e r i a l s y s t e m n a me d o c r o n l i n e a b o u t i t s i mp l e me n t a t i o n p r o j e c t ke y wo r d as p c o mp o n e n t c om mt s 第一章概迷 1 1 w eb 八十年代 i n t e r n e t的诞生 在信息技术领域成为一个新的起点 工业化社会从此开始了向 信息化社会的发展 进入九十年代之后 随着 信息技术的发展和信息量的高度膨胀 i n t e r n e t 以 惊人的速度发展起来 并且围绕着 i n t e r n e t出现了 许多新的技术和应用 可以说 信息产业已 经进入了 一个新的时代一一网络中心计算的时代 www wo r l d wi d e we b 系统作为网 络信息服务的基础 在这个时期也得到了 迅速地发展 www 是一个基于 i n t e r n e t i n t r a n e t 的 全球连接的 分布的 动态的 多平台的交互式超媒体信息系统 它利用多种协议传输和检 索分布在世界各地 www 服务器的 信息资源 www 的出 现推动了i n t e r n e t的普及 同样在 i n t e r n e t 网络技术进步的带动 下和州门 对信息量需要的不断增力 a we b技木也经历从静态文档 动态交互式页面和实时可伸缩事物处 理三个阶段的发展 第一阶段的we b技术 主要是用于静态we b页面的浏览 用户使用客户机端的浏览器 可以 访问i n t e r n e t 上的每个we b站点 在每一个站点上都 有一个主页面作为进入这个 we b 站点的入口 在每一个 we b 页面中 都包含相关的信息及超 链接 通过超链接用户可以很方 便地访问其它we b资源 信息资源的组织形式就是以一个主页 为首 其它 we b页面为节点 用超链接把它们链接成一个树状结构的信息链 we b页面都是 由h t ml编写 它提供了 控制超文本格式的信息 利用这些信息 可以 使开发者 编写出能在浏览 器上显示各 种风格的 we b页面 所以h t ml和浏览器的发展也决定着 we b技术的发展 这一阶段 we b服务器基本上只是一个 h t t p的服务器 它负责接收客户端浏览器的 访问请 求 建立连接 响应用户的要求 查找 所需的静态 we b页面 返回 给浏览器进行显示 we b技术发展的第二阶段是动态交互式页面阶段 在 这 一 阶 段 脚 本 语 言 j a v a s c r i p t v b s c r i p t 和j a v a 等 语言 在 客 户 端 浏览 器 提 供 了 对动态交互式页面的支持 脚本语言可以 嵌入到 h t ml文件中 浏览器负责解释执行 如果 主页 用到j a v a程序 浏览器先把 j a v a程序下栽到客户端由 客户端的虚拟机负责解释执行 最 后在把结果显示给用户 在客户端对页面进行控制 有效地增加了 用户的动态交互需求 同时减 少了 许多复杂的中间环节及对we b服务器的过分依赖 在 we b 服务器端对交互功能的支持主要是通过公共网关接口 c g i c o mm o n g a t e w a y i n t e r f a c e 应用 程 序 编程 接口a p i a p p l i c a t i o n p r o g r a m i n t e r f a c e 等 解 决方 案 客户端提交的交互式信息 一般是通过表单提交 由 服务器端解释执行 把解释的结果转换 成h t ml格式 返回 给客户端由 浏览 器显示 现实世界中大量的信息都存储在数据库中 数据库技木适合对大量的数据进行组织和管理 we b技术拥有较好的信息发布途径 因 此把数据库技术和we b技木结合在一起成为技木发展 的必然趋势 当时出现的we b数据库访问有c g i 服务器专用a p i j d b c等技木 把数据 库技术引入到we b系统中 利用数据库对各种复杂的数据进行有效地管理和检索 将这些数据 按照远端客户的要求实时地产生带查询的动态页面 随着动态信息内容的不断增加和对数据库内 容的发布的需求 we b数据库技术成为这一阶段的核心技术 并且至今仍然是 we b技术研究 的热点 we b技术发展的第三阶段是提供实时可伸缩的事务处理 随着 i n t e r n e t的迅速发展 人们渴望网络能给自己的生活带来更多的便利 在这一阶段 we b应用的突出表现就是电子商务的出现 随着we b技术 分布式对象技木以 及安全保密技 术的发展 实时的事务处理 可伸缩性 可扩展性 安全性与客户认证等技术难题逐步得到解 决 为在 we b 上实现电 子商务提供有了有力的技术保障 电子商务使得 we b应用深入到人 们的日 常生活中 we b不再是仅仅用来信息的发布和查询 它还可以帮助用户解决实际问题 进行实时的事务处理 例如在线翻译 在线杀毒 网 上邮局等 在这一阶段的特点是 we b 系 统越来越复杂 组件技术和分布式对象技术应用到we b系统中 we b系统的体系结构多数采 用三 卿 多 层分布式体系结构 从目 前的情况来看 we b站点的建设正 在逐步趋向 复杂化 we b开发不再是仅仅制作简 单的h t ml文件和c g i 脚本 如何更好地利用现有的大量的分布式环境一一i n t e r n e t 开发 出性能优良的we b应用系统已 经成为新的热点 1 2 w eb we b对象技术是最新一代we b应用的 关键技术 所谓we b对象技术 就是利用分布式 组件对象技术 扩展 we b服务器的功能 形成三 层 we b体系结构 系统由 客户层 应用逻 辑层 资源层组成 we b浏览器作为客户层 提供图 形用户界面 负责与 用户进行交互 浏览 器通过h t t p协议向 应用 逻辑层的h t t p服务器 发出 业务 请求 应用逻辑层处理客户请求 完 成业务 逻辑 向 客户 端返回h t ml页面 在 应用逻辑 层中的 组 件对象封装了 相关的 业务逻辑 它们之间可以通过内 部协议彼此通信 并能 够访问资源层的数据库对象或其它资源 以协同完成 客户请求 we b对象计算 体系 结构是以 分 布式组件 对象技术为基 础架 构 增加了 应用逻辑层 将客户 与资源层隔开 降低了we b服务器的负载 避免了we b服务器的性能 缺陷对整体性能的影 响 同时 该体系结构具有连接缓冲 负载均衡 安全管理等功能 从而大大提高了we b应用的 灵活性 可伸缩性和可扩展性 目 前 比 较流行的we b对象技木有j a v a c o r b a c o m d c o m c o m o c o r b a c o m m o n o b j e c t r e q u e s t b r o k e r a r c h i t e c t u r e 为 公 共 对 象 请 求 代 理 结 构 它是由 业界6 0 0多家 公司 组成的 对象 管理组织o mg所制定的一 个带有开放软件总线的分 布式结构 c o r b a组件可以 使用c c 十 十 j a v a 等多种语言 作为的开发工具 同j a v a 语言 结合使用之后 可以 使c o r b a很容易 地进入we b应用 形成分布式计算模式 c o r b a的 突出特点 就是它的跨平台 性 能够解决异构网络的之间的 通讯问 题 c o m 是微软推出的开放的组件标准 有很强的扩充和扩展能力 c o m 规定了 对象模型和 编程要求 使c o m对象可以与其他对象相互操作 这些对象可以 用不同的语言实现 其结构也 可以 不同 d c o m是微软与其他业界厂商合 作提出的一种分布组件对象模型 它是c o m 在分 布计算方面的自 然延续 为分布在网 络不同 节点的两个 c o m 组件提供了 互操作的基础结构 d c o m增强c o m 的 分布式处理性能 支 持多 种通信协议 加强 组件通信的安全保障 但从系 统内部的实现机制而言 d c o m 所采用的技术仍符合 c o m 樟式 c o m f h 件枯太同 c o r b a相比 组件易于实现 并且存在着大量的可用的第三方组件 缺点是一般仅能够运行 在wi n nt环境下 c om 是微软组件技术的倡导一种新的设计概念 把 c o m 组件提升到应用层 把底层细 节留给操作系统 使 c om 与操作系统的结合更加紧密 c om 的底层结构仍然以 c om 为 基础 但在应用方式上则更多地继承了 mt s mi c r o s o f t t r a n s a c t i o n s e r v e r 的处理机 制 包括 mt s的对象环境 安全模型 配置管理等 c o m 把 c o m d c o m 和 mt s三 者有机地统一起来 同时也新增了 一些服务 如负载平衡 内存数据库 事件模型 队列服务 等 形成一个概念新 功能强的组件体系结构 使得 c o m 形成真正适合于企业应用的组件技 术 目 前c o m 随着wi n d o w s 2 0 0 0 一同发布 是未来发展的趋势 当前 c o r b a技术主要用在 u n i x平台 上 在 wi n d o w s wi n n t平台上使用较为广 泛的是c o m 技术 1 3 关于论文 本篇论文主要讨论如何在 wi n n t环境下构造复杂的we b应用系统 介绍一些动态网 站 建设工具 组件对象技术以 及we b应用系 统体系结构 并且基于上述技术 详细介绍一个具体 的we b应用系统 在线识别系统及其具 体的实现方案 实现该系 统的主要目 的就是把印刷体 文字 西文 识别功能集成到we b系 统上 实现在线识别的功能 用户可以通过浏览器把识别 图 像文 件上传到在线识别服务器 上 经过识别处理之后 从浏览器中查看识别结果 网站建设简介 www 即 wo r l d wi d e we b 中文简称万维网 www 的最初创建是为了解决 i n t e r n e t 上的信息传递问题 www 是随 h t t p和 h t ml的出现而一起出现的 we b服 务器利用h t t p传递h t ml文件 we b浏览器使用h t t p检索h t ml文件 从 we b服 务器一旦 检索到信息 we b浏览器就会以 静态 文本 图 像 和交互式显示各种又 寸 象 随着文本 图象 影像 声音和交互式应用程序的统一 www 已 经成为一种有效的信息 交换方式 正是由 于 www 的出现 我们才可以浏览各种信息来源 并且通过各种超链接能够 很容易 地从一种信息来源转到另一种信息来源 而且 www 上的信息可以 用多 种格式表示 易 于浏览和理解 i n t e r n e t的发展 促进了 we b 技术的形成和发展 www 的兴起 又进一步促进了 i n t e r n e t 的 发 展 和 普 及 最初的we b仅仅是作为信息查询和检索系统而存在的 随着 i n t e r n e t 的迅猛发展 网 络 带宽不断增加 接入技术日 新月 异 在强大的平台支持之下 互联网用户对网上站点的内 容和形 式提出了 新的要求 现在 如果用户希望建立一个we b站点 那么 仅仅依靠传统的静态页面已 经远远不能满足要求 你需要考虑到如何实现对数据库的访问 以及如何对用户的客户端输入作 出 及时的响应等等 你的站点必需 健壮可靠 动态交互性强 同时还要具备良 好的可扩展性 目 前 已 经有多种服务器端的 脚本编程技术可以使用户实现自己 的梦想 眼前的问 题可能已 不再是是否存在可用的技术 而是变成到底选择那种技木最能满足自己的需要 2 1动态网 站技术 目 前 最常用的有以 下几种种动态网 站技术 c g i a s p p h p和j s p 下面就对当 前比 较流行的这月 户 卜 动 态网 站建设技木进行分析比 较 2 1 1 c g i c o m m o n g a t e w a y i n t e r f a c e 通用网关接口c g i 是最早流行的一种网 站交互技术 它规定了 外部应用程序与 we b服 务器间标准的接口规范 只要遵守这个标准规范 程序员就可以利用各种编程工具 例如 p e r l c c 十 f o r t r a n等进行c g i 编程 实现we b服务器 浏览器和外部服务程序间 的交互 利用c g i 可以 把数据库集成到we b系统上 实现动态we b数据库应用 同时c g i 程 序具有良 好的系统平台 性和服务平台 性 c g i 程序几乎可以 运行在任何操作系统上 如d o s wi n d o w s wi n n t u n i x等 而且几乎所有的we b服务器都支持c g i 但是c g i 的缺点也是十分明显的 we b服务器必须为客户的每个c g i 请求 在服务器 端 启动一个c g i 进程 造成服务器端运行效率低 同时c g i 程序的开发者需要一些底层的开发经 验 所以c g i 程序的开发难度较大 2 1 2 a s p a c t i v e s e r v e r p a g e s 动态服务器页面a s p 是 一 种 we b服务器端的开发环境 是新一代的动态 we b数据库 应用开发方案 同时利用 a s p也可以产生和运行动态的 交互的 高性能的we b服务器应用 程序 a s p 可以采用任何脚本语言作为开发它的开发语言 只要提供相应的脚本驱动引擎 e n g i n e a s p自 身 提 供了v b s c r i p t 和j a v a s c r i p t 的 驱 动 a s p 可 以 将 脚 本 直 接 嵌 入h t ml文 件 h t ml 的 开 发 和s c r i p t 的 开 发 在 同 一 过 程 就 可 以 完 成 可以 通 过 使 用 服 务 器 端组件技术 扩展 we b服务功能 建立复杂的we b应用程序 同时as p支持面向对象 多 用户和多线程 当然 a s p也继承了 微软产品的一贯传统 只能运行于微软的 we b 服务器产品 i n i n t e r n e t i n f o r ma t i o n s e r v e r wi n nt 和 p ws p e r s o n a l we b s e r v e r wi n 9 8 上 u n i x下也有c h i l i s o f t 的插件来支持a s p 但是a s p本身的功能有限 必 须通过a s p c o m的组合来扩充 而u n i x 下的c o m实现起来非常困难 2 1 3 p h p h y p e r t e x t p r e p r o c e s s o r p h p是一种跨平台的服务器端的嵌入式脚本语言 它大量地借用c j a v a和p e r l 语言的 语法 并祸合p h p自 己 的 特性 使we b开发者能 够 快速地写出动 态生 成页面 p h p是一种能快速学习 跨平台 有良 好数据库交互能力的开发语言 p h p的语法简单 书写容易 易于学习 目 前 p h p支持绝大多数数据库 而且p h p是完全免费的 用户可以 从 p h p官方 站点 h t t p w w w p h p n e t 自 由 下 载 p h p可以 与we b服务器a p a c h e 及其 它扩展库采用静态连编的方式紧密结合在一起 使用这种方式可以最大化地利用了c p u和内 存 同 时 有 效 地 利 用了a p a c h e 的 高 性 能 的 吞 吐 能 力 同 时 外 部 的 扩 展 也 是 静 态 连 编 从 而 达 到 了 最快的运行速度 由于与数据库的接口 也使用了 这样的方式 所以 使用的是本地化的调用 这 也让数据库发挥了 最佳效能 但是 p h p缺乏 规模支持 其次缺乏 多层结构支持 对于大负荷站点 解决方法只有一 个 分布 计算 数据库 应用逻 辑层 表示逻辑层彼此分开 而且同 层也可以 根据流量分开 组 成二 维阵 列 而p h p则缺乏 这种支 持 还有 就是p h p提供的 数据库接口 支持不统一 这 就使 得它不适合运用在电子商务中 2 1 4 j s p j a v a s e r v e r p a g e s j s p是 s u n公司基于 j a v a语言推出的新一代网站开发语言 它完全解决了目 前 a s p p h p的一个通病一一脚本级执行 j s p可以 在 s e r v e r l e t 和j a v a b e a n s 的支持下 完成功能 强大的站点程序 j s p可以 将内 容的生成和显示进行分离 同时强 调可重用的组件 采用标识简 化页面开发 j s p可以支持一次 编写到处运行 并且具有良 好的可伸缩性 j s p可以在大多数的 操作系统上运行 但是 正是由 于为了 完成可伸缩性 增加了系统的繁杂性 目 前 除了c g i 采用外部服务程序实现网 站交互之外 a s p p h p j s p三种技木都提供 在h t ml代码中混合某种程序代码 由 语言引擎解释执行程序代码的能力 但j s p代码被编译 成 s e r v e r l e t 并由j a v a虚拟机解释执行 这种编译操作仅在对 j s p页面的第一次请求时发 生 在a s p p h p j s p环 境下 h t ml代码主要负责 描述信息的显示样式 而程序代 码则 用来描述处理逻辑 普通的h t ml页面只依赖于we b服务器 而as p p hp j s p页面需 任务被截止或者被放弃时 服务器才毁坏这一任务对应 s e s s i o n对象 s e s s i o n对象 最常见的用途之一就是用来存储已登录用户的权限 这样就可以方便地解决 we b应用 程序的安全问题 s e r v e r 对象 s e r v e r 对象允许脚本来生成a c t i v e s e r v e r 组件的实例 并且利用新 的功能进行 对 a s p环境的 扩 展 s e r v e r 对象 拥有 两个重要方 法 即ma p p a t h和 c r e a t e o b j e c t ma p p a t h可以将 we b s e r v e r的虚拟路径还原成实际路径 c r e a t e o b j e c t可能是最重要的一个方法 用它可产生服务器组件的对象实例 s e r v e r c r e a t e o b j e c t p r o g l d 其中p r o g 1 d指 定了 组 件 标 识 组 件可以 是e x e 程序 也可以是 d l l动态链援库 这些程序必须在操作系统中注册后 c o m 才会在 系 统 资 料 库 r e g i s t r y 维 护 这 些 信 息 在很多情况下 为了实现商务性的应用 都需要用到数据库方面的操作 而 as p提供的 a d o组件正是实现这种操作的重要手段 尸 一 一 第三章c om 介绍 在wi n n t平台上构造we b应用系 统 如果想要扩展we b服务器的功能 建设复杂的 可伸缩的 具有事务处理功能的多层 we b应用系统 必须利用服务器端组件技术扩展和平滑 we b服务 器 的 应用 功能 在wi n d o w s 平台 上 广泛 使 用的 组 件技 术是c o w c o m p o n e n t o b j e c t mo d e l 即 组 件 对象 模型 它 是由mi c r o s o f t 提出 的 组 件 标准 不仅 定 义了 组 件程 序之间进行交互的标准 并且也提供了组件程序运行所需的的环境 因此 下面就对c o m 原理 及其相关的应用作一下简单介绍 3 1 c o m 概述 组件是独立于特定的程序设计语言 和应用系统 可重用的和自 包含的软件成分 组件是基于 面 向 对 象 的 支 持 托 放 d r a g a n d d r o p 和 即 插 即 用 p l u g a n d p l a y 的 软 件 开 发 概 念 基于组件技术的开发方法 具有开放性 易升级 易维护等优点 它是以组合 原样重用现存组 件 继承 扩展地重用组件 设计 制作领域专用组件 组件为荃 础 按照一定的集成规 则 分期 递增式地开发应用系统 缩短软件开发周期 在开发过程中 遵循以组件为核心原 则 组件实现透明原则以及增量式设计原则 c o m 是个开放的组件标准 有很强的扩充和扩展能力 c o m 规定了 对象模型和编程要 求 使c o m对象可以与其他对象相互操作 这些对象可以 用不同的语言实现 其结构也可以 不 同 基于c o m mi c r o s o f t 进一步 将o l e技术发展到o l e 2 其中c o m 实现了o l e对 象之间的底层通信工作 同时 继 o l e之后 mi c r o s o f t 又推出了 一系列以c o m 为基础的的 技术 并统称为 a c t i v e x 技术 现在 c o m 技术已 经渗透到 wi n d o w s操作系统的各个方 面 c o m 已 经成为wi n d o w s 平台的组件模型标准 c o m 标准包括规范和实现两大部分 规范部分定义了 组件和组件之间 通信的 机制 这些规 范不依 赖于任 何特定的语言 和操 作系 统 只要 按照规范 任何语言都 可以 使用 c o m 标准的实 现部分是c o m 库 c o m 库为c o m 规范的具 体实现提供了 一些核心服务 c o m 规范包括 c o m 核心 可连接对象 结构化存 储 统一数据传输 名字对象技术等 c o m 核心规定了 组 件对象与 客户通过二进制接口 标准进行交互的原则 可连接对象是c o m组件和客户程序之间进 行双向 通信的基础 结构化存储定义了复合文档的 存储格式以 及创建文档的接口 统一数据传输 约定了 组 件之间数据交换的 标准接口 名字对象技术给予对象一个系统可识别的唯一标识 3 2 com对象及接口 下面我们首先对c o m规范中的核心内 容c o m对象和c o m接口 作介绍 3 2 1 c o m 对象 在c o m规范中 并没有 对c o m对象进行严格的定义 但c o m提供的是面向 对象的 组 件模型 c o m 组件提供给客户的是以 对象形式封装起来的实体 客户程序与c o m 组件程序进 行交互的实体是c o m 对象 它并不关心组件模块的名称和位置 即位置透明性 但它必须知 道自己 在与哪个c o m 对象进行交互 类似于c 语言中类 c l a s s 的概念 c o m 对象也包 括属性 也称为状态 和方法 也称为操作 对象的状态反映了 对象的存在 也是区别于其他 我 们 不 用 编 写 任 何网 络 或 者r p c c r e m o t e p r o c e d u r e c a l l 远 程 过 程 调 用 的 代 码 就可 以 实现在网络上进行程序之间的通信 3 3 2类厂 c l a s s f a c t o r y 类厂就是c o m 类的工厂 是c o m 对象的生产基地 c o m 库通过类厂来创建 c o m 对 象 对应每一个 c om 类 有一个类厂专门用于该 c om 类的对象的创建操作 类厂本身也是 一 个c o m对 象 它 支 持 一 个 特 殊 的 接 口 i c l a s s f a c t o r y 其 定 义 如 下 c l a s s i c l a s s f a c t o r y p u b l i c t u n k n o w n v i r t u a l h r e s u l t s t d c a l l c r e a t e i n s t a n c e u n k n o w n p u n k n o w n 0 u t e r c o n s t i i d v i r t u a l h r e s u l t s t d c a l l l o c k s e r v e r b o o l b l o c k 0 接口i c l a s s f a c t o r y 有 一 个 重 要 的 成 员 函 数c r e a t e i n s t a n c e 用 于 创 建 对 应 的c o m对 象 因为每个类厂只针对特定的 c o m 类对象 所以 c r e a t e i n s t a n c e成员函数知道该创建什 么 样 的c o m对 象 在c r e a t e i n s t a n c e 成 员 函 数 中 第 一 个 参 数p u n k n o w n o u t e r 用 于 对 象 类 被 聚 合 的 情 形 一 般 把p u n k n o w n 0 u t e r 设 置 为n u l l 第 二 个 参 数i i d 为 对 象 创 建 完 成 之 后 客 户 应 该 得 到 的 初 始 接 口i i i 第 三 个 参 数p p v存 放 着 返 回 的 接口 指 针 i c l a s s f a c t o r y 的另一个成员函数l o c k s e r v e r 用于控制组件的生存周期 c o m规定 每一个c o m对象应该有一个相应的类厂对象 如果一个组件程序实现了 多个 c o m对象类 则相应地有多个类厂 类 厂 通 过d 1 l g e t c l a s s o b j e c t 引 出 函 数 来 使 用 类 厂 对 象 d i l g e t c l a s s o b j e c t 函 数 是 组 件程 序实 现的引出 函 数 下 面 是d i l g e t c l a s s o b j e c t 函 数 的原 型 h r e s u l t d i i g e t c i a s s o b j e c t c o n s t c l s i d 当 不再需要组件程序了 则调用 l o c k s e r v e r f a l s e 实现减锁 操作 引入锁定操作之后 判断一个组件程序是否可以被卸出内 存就增加了 一个条件 既要判断组 件程序中是否还存在组件对象 还要判断组件程序的锁计数器是否为 0 只有当 两个条 件都满足 时 组件程序才可以被卸出内 存 3 3 3 进程内 组件和进滔 汐 卜 组件 组件程序有两种实现方式 进 程内组件和进程外组件 如果使用动态 链接库的形式实现组件 程序 则客户程序调用组件层的服务时 会把组件程序装 入到自己 的进程中 所以 客户程序和组 件程序运行在同一个进程空间内 把这种组件程序称作为进程内组件 实现组件程序的另外一种 形式是 e x e程序 这种组件程序被调用时有自己的进程空间 所以 客户程序和组件程序运行在 不同的进程空间中 把这种组件程序称作为进程外组件 3 3 3 1进程内组件 因为进程内组件和客户程序运行在同一个进程地址空间中 所以一旦客户程序和组件程序建 立 起 通 信关系 之 后 客户 程 序 得到 的 接口 指 针直 接指向 组 件 程序中 接口 的v t a b l e o v t a b l e包 含 了 所有的 接口 成员函 数地址 客户代码可以直接调用这些成员函数 所以其效率非常高 有时也 把这种进程内组件程序称为进程内服务程序 所以这种形式的组件程序应用非常广泛 因为 d l l程序是运行时刻被客户程序装入到内 存中 所以d l l模块本身也是独立的 它并不依赖 于客户程序 比如 进程a可以 使用某个d l l程序 进程b也同 样可以 使用该d l l程序 甚至 任何一个程序都可以使用这个 d l l程序 但是首先必须知道一些 d l l程序的信息 因 此 客户程序与d l l程序之间必 须标准的约 定 而且 这种约 定也要 建立 在二进 制一 级的基 础 上 以 便所有的编程语言都可以支持d l l程序的创建和调用 进程内 组件的优点就是运行效率高 但是由于进程内组件直接运行在客户程序内 所以 组件 程序中的 严重错误有可能引起客户进程的崩溃 因此 组件程序要对客户程序的稳定性负责 3 3 3 2进程外 4 琳 进程外组件 让组件程序独占 一个进程 而不使用客户程序的进程空间 因 为它运行在客户 进程的外面 所以也把这种组件程序称为进程外服务程序 在wi n d o w s平台 上 一般用 e x e 来实现进程外组件 因 为进程外组件和客户程序位于不同的进程空间之中 它们使用不同的地址空间 所以组件 和客户之间的通信必须跨越进程边界 因此会涉及到以下一些问题 1 一 个 进程如 何 调 用另一 个进 程中 的函 数 2 参 数如 何 从一 个 进 程 传 递到 另 一 个进 程中 在 wi n d o w s平台上 进程间的通信方法很多 包括动态数据交换 d d e 命名管道 n a m e d p i p e 共 享内 存等 等 c o m 采 用了 本 地 过 程 调 用 l o c a l p r o c e d u r e c a l l l p c 和 远 程 过 程 调 用 r e m o t e p r o c e d u r e c a l l r p c 的 方 法 进 行 进 程 之 间 的 通 信 其中 l p c用于在同一台 机器 上不同 进程之间的通信 l p c用于在不同 机器上不同 进程之间的通信 l p c与r p c的机理相同 但是r p c需要通过网络传递信息 因此 r p c要比l p c复杂 l p c相当 于一个优化了 的r p c 图3 2显示了 进程外组件与客户 程序之间协作结构图 3 4 2 客户1 服务器特性 可以很容易看出 c o m 对象和客户之间的相互作用是建立在客户 服务器模型的基础上 的 客户 服务器模型的一个很大的优点 是稳定性好 而稳定性正是 c o m 模型的目 标 尤其对 于跨进程的程序通信 稳定性更会带来性能上的高可靠性 然而 c o m不仅仅是一种简单的客 户 服务器模型 有时客户也可以反过来提供服务 或者服务方本身也需要其他对象的一些功 能 在这些情况下 一个对象可能既是服务器也是客户 c o m 能够有效地处理这些情况 客户 服务器模型是一种发 展比 较成功的软件模型 因为这种模型有以下一些优势 1 稳定性 可 靠性好 客 户 服 务器 模型 简化了 应用 把任务 进行分离 客户和服务器 各司其职 共同完成任务 2 软件的 可 扩 展性更 好 一 个 服 务器 进 程可以 为 多 个 客 户 提 供服务 客户也可以 连 接到 不同的服务器上 这种模型的连接非常灵活 3 提 高 性能 根 据硬 件的 配置 可以 把 繁重的 任务 放 到 高配置 的 一 端 用低配置 的 设备 完 成一些简单的任务 因此 这种模型使软件运行更加合理 4 在网 络上实现时 可以降 低网 络流量 在网 络 上只传 输客户和服务程序所关心的 数 据 5 用于 数 据 库时 可以 实 现 事 务 t r a n s a c t i o n 机 制 提 供 数据 备 份能 力 等 3 4 3 语言无关性 c o m 规范的定义不依赖于特定的语言 因 此 编写组件对象所使用的语言与编写客户程序 使用的语言可以 不同 只要它们都能 够生成符合c o m规范的 可执行代码即可 c o m标准与面 向对象的编程语言不同 它所采用的是一种二进制代码级的 标准 而不是 源代码级的标准 在面 向 对象 编程 o b j e c t o r i e n t e d p r o g r a m m i n g o o p 语言中 定义的 对象 只能 在同 样的 语 言中被重复使用 这就大大限制了 对象的 重用 当然 o o p语言可以被用于创建 c o m 组件 因此这两种技术实际上是互相补充的 c o m 对象把o o p语言中的对象封装起来 并提供一致的接口 使得它可以 被各种不同的语言 所使用 例如 用c 十 实现的c o m组件中 的 对象 可以 很 容易 地在其他的 语言如j a v a中 被 使用 因 此 c o m的语言无 关性实际上为我 们 跨语言 合 作开发 提供了 统 一标准 当我们设计和开发一个应用系统时 在开始编写代码之前 首先我们要选择合适的语言 语 言的选择对整个项目 可能会产生很大的影响 而且 开发人员本身对语言也有喜好 让开发人员 放弃他所熟悉的语言而去学习一门新的编程语言 并非明智之举 只要所选择的语言能支持 c o m组件的生成 则按c o m组件模型 构造的系 统就 允许 使用此 种编程语言 3 4 4 进程透明性 在客户用医务器模型的软件结构中 运行在客户端的代码和运行在服务器端的代码 既可以 在同一个进程中 也可以 在不同的进程中 如果它们运行在同一个进程中 则由于组件和客户共 享了进程的资源 因而无论对于编程还是运行效率都是很有益的 但实际情况往往并不这样简 单 因为服务程序并不总是作为 d l l被装入到客户进程中 它也经常是一个 e x e可执行程 序 因此 跨进程操作是很必要的 口 c o m 所 提 供 的 服 务 组 件 对 象 在 实 现 时 有 两 种 进 程 模型 进 程 内 对 象 和 进 程 外 对 象 如 果 是 进程内对象 则它在客户进程空间中运行 如果是进程外对象 则它运行在同一机器上的另一个 进程空间 或者在远程机器的进程空间中 通常也按下面的方式对组件又 寸 象服务程序进行区 分 进程内服务程序 服务程序被加载到客户的进程空间 在wn d o ws环境下 通常服务程序 的代码以动态连接库 d l l 的形式实现 本地服务程序 服务程序与客户程序运行在同一台机器上 服务程序是一个独立的应用程 序 通常它是一个e x e文件 远程服务程序 服务程序运行在与 客户不同的机器上 它既可以 是一个 d l l模块 也可以 是一个 e x e文件 如果远程服务程序是以d l l形式实现的话 则远程机器会创建一个代理进 程 虽然c o m对象有不同的进程模型 但这种区 别对于客户程序来说是透明的 因此客户程序 在使用组件对象时可以 不管这 种区 别的 存在 只要遵照 c o m 规范即可 然而 在实现 c o m 对象时 还是应该慎重选择进程模型 进程内 模型的优点是效率高 但组件不稳定会引起客户进 程崩溃 因 此组件可能会危及客户 进程外模型的优点是稳定性好 组件进程不会危及客户程 序 一个组件进程可以 为多个客户进程提供服务 但进程外组件开销大 而且调用效率相对低一 此 实现这种进程透明 性的 关键在于c o m 库 c o m 库负责组件程序的定位 管理组件对象的 创建和对象与客户之间的通 信 当 客户创建组件对象时 c o m 库负责装入组件模块或者启动组 件进程 如果客户指定在远程机器上创建对象 则两台机器上的 c o m 库会协作完成远程 c o m 对 象 的 创 建 工 作 并 且 在 客 户 进 程 中 创 建 一 个 代 理 对 象 p r o x y o b j e c t 客 户 程 序 直 接与代理对象进行交互 因 此 客户程序可以 不管组件对象的进程模型 即使组件的进程模型发 生了 变化 客户程序也不需要重新编译 3 4 5 c o m 作为组件模型其焦点集中 在程序之间如何建立一种标准的通信机制 安全性并不是其 主要目 的 但既然 c o m 是一种平台 独立的软件模型 而且 c o m 提供了 跨进程甚至跨网 络的 客户 服务器软件结构 则安全性是它不可缺少的保护机制 要建立一种适合各 种操作系统的安全性机制是

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论