第   卷    第 期                                                                               北    京        工           业           大    学   学        报
    年     月                                                                                                                      、丁        】               】




                                                                            服 务 器 应 用 程 序 的效 率
                                                                                                         谷 震 离
                                                                                                                             ,

                                                                             许 昌学 院 计 算 机 系                                      河南 许 昌


                                                       服 务 器 应 用 程 序 的 结 构 的 分 析 以 及 对 现 有 技 术 的 比较 提 出 了 在 进 行
                                                                                                                     ,                                              ,

     摘       要           通过对                                                                                                                                                                                 服 务 器应 用 程
                         ,                                                                                       、                    、                    、                                                                 ,

     序 开 发时 应 该 注 意从                                                服 务 器 应 用 程 序 的 结 构 对 象 缓 冲 线 程 缓 冲 数 据 库 连 接 缓冲 等 角度 综合 考 虑 确 定
                                 ,

     较 好 的方 案 来 提 高                                            服 务器 应用 程序 的效率


     关键 词                                服 务器 应 用程 序                        数 据 库连 接缓 冲                              对象 缓 冲               线程 缓冲
                                                                                                                                                                                    一                   一            一
     中图分 类 号                             即                                           文献 识 别 码                                             文章编号




                         服 务 器 应 用 程 序 的发 展
                                                       ,                                         ,                                                                                                               ,

     在                                   环境 中 典 型 的应用模 式 为 客户端 的浏览器 接 收                                                                                                     服 务 器 提 供 的数 据 然后 按标 准的
         语 言 对 数 据 进 行 解 释 并 在 浏 览 器 窗 口 中表 现 出来 只 要                                                                                                           服务器建 造合法                                              内容 送 到 前 端
的浏 览 器 中 用 户 便 可 以 在 浏 览 器 中看 到 查 询 的 信 息
                 ,




                                                                                                     、


     开始 的                                服 务 器 只 能 返 回 一 个 已 有 的 静态 的                                                                      网页                  一个                           程 序 必 须 能够 处理 各 种类型
         ,                                                                                                                                                                              ,                                            ,

的请 求 并 且 能 够 返 回各 种 各 样 的 网页                                                                   标准的                               程序通过                                       输人 通 过                                   输 出信 息 另
                                                                                                                                                                                                         ,

外 还要读 环境变量                                                              的 工 作 方 式 稍 有 不 同 它 通 过 一 个 文 件 来 获 取 用 户 的 请 求 并 把 响 应 的 内容
                 】
                                                           ,

                                                                                     服务器返 回给客户
                                                                                                                                                                                                    ,

写到一个                                     文件 中 再 由                                                                                     如果 同 时有 多 个 客 户 请求 就 使                                                          服务器非常
                                                                                                                         ,                                                                  ,

忙碌                                       和                              供 应 商 为 了 提 高 效 率 同 时 又 支 持 动 态 创 建 网 页 各 自为 其                                                                                                服务器写 了
                 以使其
                                                                                                                                               ,                                                                                 ,

一套                                                 服 务器 应 用 程 序 不 再 是 一 个 单独 的 进 程 而 是 一 个 动 态链 接 库 只 需 启 动 一 次 即 可
             ,




                                                                                                                                                   、                            ,

响应 任 意 个 客 户 请 求                                           这使得                       服 务 器 应 用 程 序 运 行 得 更 快 更 有 效 并 且 占用 的 资 源 更 少
                                                                                                                                                               ’
                                                                        是 目前 非 常 流 行 的                                           程 序设计技 术                                                   应 用 系 统就 是 在                             中内
                                                                                                                                                                   ,

嵌 脚 本语 言 然 后 以 脚 本 语 言使 用
                     ,

                                                                                           对象 来 取 得                                  即 要 求 的信 息 根 据 这 些                                                 要 求来处理 结果
                                                                                 ,

如果 需 要 就使 用                                        存 取 数 据 库 当处 理 完 毕 后 再 使 用                                                                      对象把 结 果 回 传给 客 户端 的浏 览 器                                                          结合
        服 务 器 以 及 中 间件
                                                                                                             ,

                                                                        的             应 用程序 是 刚开始流行 的                                                              结构 这种                                结 构是 让 定 制
                                                                                       ,

对象 在                         中建 立 其 他 的                                     对象 由                         对 象 负 责 执 行 企 业 逻 辑 程 序 码 最 后 再 由定 制                                                                                    对象 回
                                                                                                                                                                                                ,




传 处 理 完 成 的 结 果 主 页 内容 以 回 传 到 客 户 端
                                                                    ,                                                                                                                                                    ,

                                                                                                                 这 种 结 构 由于 把 企 业 逻 辑 程 序 码 单 独 作 为 一 层 如 果 应 用
的 业 务 逻 辑 比 较 复 杂 可 以 使 用 更 高 配 置 的 计算 机 来 运 行 业 务 层 其 他 层 可 以 保 持 不 变
                                               ,                                                                                                       ,

                                                                                                                                                                                                                 如果应用 的业务
逻 辑 比较 简 单 就 可 以 把 业务 层 和 数 据 库 放 在 一 台 机 器 中                                                                                             这 种 结 构 才 是 真 正 的 分 布式 应 用 系 统
                             ,




        影响                                    服 务器 应 用 程 序 的效 率 的 主 要 因 素
                                                                                                                 ,                                                      ,                                    ,

        由于                       应 用 程 序是                                 类 型 的应 用 程 序 它 对客 户 的每 次请求 都 启 动 一 个 进 程 所 以 它 的效 率是
                                                                                                                                                                                                    ,

最低 的                                                       的              应 用 程 序是                                   的类型                  它被                   服 务 器 加 载 后 一 直存 在 于 内 存 它 的
                                                                                                                                                                            ,

效率 要 远 远 高 于                                       类 型 的应 用 程序                                 但 由 于 运 行 在 服 务 器 的 内存 中 所 以 它 的 错 误 往 往 会 导致                                                                                             服

                                     一    一

    收稿 日期
                                                   一
    作者 简介 谷震 离
                                                           ,

                                                               男 副教 授 硕 士
                                                                ,            ,
第 期                                                                 谷震 离                                翩及 器 应 用程 序 的 效 率
                                                                                                          务
                                                                                                『


                                                                                        勺
                                                                            ,                                                                          ,




                                                恤                   抽

        定义                  的      仃

          以




      以
      以
                               亡

        执行 插 人 操 作
                       “




                                ’                                                                            ”
                                                                                们

                                                “                                   ”
                                                                    卜厄
                                                “                                                                                                          “   ‘   ,

                                                                现                                                                  盯
                                                                        ,

                                                “                                                                    ”
                                                                                                         ,
                                    “                                                                   ”




                                        ,           “                           ”




                                                            《
                                                                                            ,
                                                                                                                                   己
                                块
                                                                ,                                                ,




          以
                                                                                                                     “




                                                                                            ,
                                                                                                                                   ‘       ,




                                                ,




          告诉                   这个工作完成




          告诉                   放 弃这 个 工 作
                                叭
                                                        ,   “                                                                ” ,
                      凡〔


                           井                                                田
                                                                                                                                           众认
                  ,

     通过                                                                                                                                               来浏览                         这个            对象运
              ,                                                                                                                                ,

行 结果 可 知 第                 次 创 建 这 个 对象 的 时 间 明 显 比第                                                                         次少 得多 这就是 数 据库缓 存 的功 劳                                      如果把 对象
                                                                                十中
                                                                                        ,

          放到                                            下的                                      就 会看 到 数 据 库 缓 存 和 对象缓 存 一 起 作 用 的 效 果                                                     不 过搭 配
 亡   应用程序和                 汀    中间 件 在 一 起 的 真 正 威 力 还 在 于 如 果 程 序 员 的把 企 业逻 辑 实 现 于 不 同 的
                                                                                                                                                                                                     ,

                                                                                                                                                                                                对象
然后 让 这 些 侧汀 对 象共 同工 作 那 么 这 些                                                                           对象 就 可 以 串联起来 提 供 服 务 并 且 让 程 序 员 同 时开 发
                                                        ,                                                                                                          ,




应用程序 以 及 传统 的                                           应 用 程 序 来 使 用这 些                                                 叮         对象 所 提供 的服 务                        同时 由       习   来 提供 系 统 级 的
                                                                                                    ,

管理    运行              浏 览 器 创建 过                                            对象 后 可 以 通 过                                               叮       的           在 更 新 统计 项 目 中 显 示 事 务 数 据
成功 和 失 败 的次数
                                            ,                                                                                                                                               ,

     对 于 线程 的 缓 存 来 说 每 一 个 分 布 式 多 层 应 用 系 统 或 是                                                                                                  应 用 系 统都需 要 至 少 一个 线 程 通 常需
                                    ,                                                                                    ,                                              ,     ,

要 多 个 线 程 来 并 发 执行 对 于 建 立 和 释 放 线 程 的 过 程 也 非 常浪 费 操 作 系 统 资 源 因此 如果 应 用 系 统也 能
北               京               工           业               大     学               学       报                                                            年

够 重 复 使 用 线 程 资 源 的 话 系 统 的 效 率 也 能够 得 到 提 高                                                                                                                线 程 的 缓存 机 制 其 实 是 通 过 操 作 系 统 来 提 供 的
                                                  ,




                                                                                                                           ,                                                     、


                     提 供 了一 些 新 的 线 程 缓 冲 函 数 使得 线 程 的创 建 撤 消和基 本 管 理 变 得 更 加 容 易                                                                                                                                                            新 的通
                                                                      ,                                                                                                      ,                                                           ,

用 线 程 缓 冲 并 不 适 合 每 一 种 环 境 但 它 常 常 可 以 适 合 你 的需 要 并 且 能 节 省 大 量 的 时 间                                                                                                                                                          其 实 当进 程 初
                                                                                                                                                                                                                                         ,

始 化 时 它 并 不 产 生 与这 些 组 件 相 关 联 的 任 何 开 销                                                                                                               但是 一旦 新 线程 缓 冲 函数之 一被 调 用 时 就 为进程
         ,                                                                                                                                                   ,




                     ,                                                                                         ,

创 建 某 些 组 件 并 且 其 中有 些 组 件 将 被 保 留 直 到 进 程 终 止 运 行 为 止
                                                                                                                                                                                 十
                                                                                                                               ,

        还有一种提高                                应用程 序效率 的办法 就是 利 用                                                                                                                     所 提 供 的 内存 数 据 库
                                      ,

             服务                  其实                           最初就是 为                                                           环境而写 的                                                    的基 本 功 能在 于 优化数 据查 询和 数据
                                                                                               ,

获 取 它 是 在 服 务 器 的 内存 中 开 辟 内存 把 客 户 频 繁 访
                                                                                                                                               ,

问的数据信息 放在                                             中        如 果 有 足 够 大 的 内存 就
                                                                                                                                                                                                                                    后 台 数 据库
                                                                                                                                                                                                                                           库




                                                                                                                                                                                                  置
可 以通过                            把 数 据从后 台 数 据 库 移到 中间 的 业务
    ,

层 这 样 对后 台 数 据 的存 取 只 须 与 中 间 的 业 务 层 中 的 内
存 打 交 道 即 可 使后 台 数 据 库 到 中 间 的 业 务 层 中 的 数 据
流量 大大 减少 见 图
                         ,




                                                  组件应用它 的                                                                      〕   提供者
                                                                                                                                                                                                  卤
接   口   或通过              】 〕 访                问                                                        以
                                                                  ,

                            来                                                                                                                          服                             图        后 台 数 据 库 中间 件 浏 览 器 数据 交 换
                                                      ,

务 的形式来 运行                            启动时                                  服 务从指 定 的后 台 数
                                          ,

据 库 中读 取 全 部 表 格 并 在 共 享 的 内 存 中 将 其 缓 存
             ,                                                                                         ,                                                                                                                                      ,

        另 外 为 了提 高                            应 用 程 序 的 效 率 还 有 一 些 要 注 意 的 因素 开 发                                                                                                                         类型的                 应 用程 序 时 要 么
                                 ,                                                                 ,

用                    语言 要 么用                                                          语 言 因 为 每 种 语 言 都 有 自 己 的脚 本 引 擎                                                                                         如果 同一个 程 序用 两种语
                                                                                                                                                                                                                                                      ,

言
    ,

             服 务器 在解 释 执行 时要 花 费 另 外 的 时 间 来 进 行 脚 本 引擎 的互 换                                                                                                                                       用           结合                   来进行开发 时
                                                              习
                                                                                                                                   ,

要 注 意 对象 的 线 程 模 型 用                                              来 作 为 中 间件 时 对象 的 线 程 模 型 最 好 用                                                                                                                      用                 来 作 中 间件
    ,

时 线程模 型最好用                                            模 型来让                                                和                               发挥 效率                             另 一 个 要 考 虑 的 因 素 是 对象 的 参数 的顺 序
                                                          ,

把 最 常 用 的参数 放 在 第一 位 不 常 用 的参 数 放在 后 面                                                                                                                     因 为 编 译 器 是 把 开 始 的参 数 放 在                                               寄存 器 中        从
                                      ,                                                                                                                                                                                         ,

简单 实 用 的角 度 出发 可 直 接 在                                                                                                         下进行                               应 用 程 序 的开 发 从 以 上 可 了 解
                                                                                                                                                                                                       ,




提 供 了 对象 的缓 冲 和 线 程 的 缓 冲 机 制 这 对 于 提 高
                                                                                       ,

                                                                                                                                                           应 用 程 序 的 效率起 着 很 大 的 作 用


参考 文 献
                 ,                                                                                                                                               ,                        ,                ,                                          ,


                                                      氏                   开发人员指 南                                                                      任旭 钧                  王 永生                 冯泽波          译   北京          机械 工 业 出版社


                                                                                                                                                   ,

仁 潘爱 民                           原理 和应 用 〔                            北京                   清 华大 学 出 版 社
                                                                                                                       ,                   ,                             ,                                                 ,

                                              核心编程 【 」 王建华                                                                     张焕 生                    侯 丽坤                  译           北京       机械工 业 出版社




                                                                                                                                                       一




                                                                                                                   ,                                                 ,                        ,                    ,

                             块

                                                                          ,




                                                                                                                                                                                                                                    飞皿
                                                                                                               ,




                                                                                                                                                                     ,




                 尸
                                                                                  ,




                             ,                                                ,                                                        ,
                                                                                                                                                            〕                                                          ,

                                                                                                                                                                                                                                                  汕



                                              ’

Efficiency of the Application Progarms in Web Server

  • 1.
    卷 第 期 北 京 工 业 大 学 学 报 年 月 、丁 】 】 服 务 器 应 用 程 序 的效 率 谷 震 离 , 许 昌学 院 计 算 机 系 河南 许 昌 服 务 器 应 用 程 序 的 结 构 的 分 析 以 及 对 现 有 技 术 的 比较 提 出 了 在 进 行 , , 摘 要 通过对 服 务 器应 用 程 , 、 、 、 , 序 开 发时 应 该 注 意从 服 务 器 应 用 程 序 的 结 构 对 象 缓 冲 线 程 缓 冲 数 据 库 连 接 缓冲 等 角度 综合 考 虑 确 定 , 较 好 的方 案 来 提 高 服 务器 应用 程序 的效率 关键 词 服 务器 应 用程 序 数 据 库连 接缓 冲 对象 缓 冲 线程 缓冲 一 一 一 中图分 类 号 即 文献 识 别 码 文章编号 服 务 器 应 用 程 序 的发 展 , , , 在 环境 中 典 型 的应用模 式 为 客户端 的浏览器 接 收 服 务 器 提 供 的数 据 然后 按标 准的 语 言 对 数 据 进 行 解 释 并 在 浏 览 器 窗 口 中表 现 出来 只 要 服务器建 造合法 内容 送 到 前 端 的浏 览 器 中 用 户 便 可 以 在 浏 览 器 中看 到 查 询 的 信 息 , 、 开始 的 服 务 器 只 能 返 回 一 个 已 有 的 静态 的 网页 一个 程 序 必 须 能够 处理 各 种类型 , , , 的请 求 并 且 能 够 返 回各 种 各 样 的 网页 标准的 程序通过 输人 通 过 输 出信 息 另 , 外 还要读 环境变量 的 工 作 方 式 稍 有 不 同 它 通 过 一 个 文 件 来 获 取 用 户 的 请 求 并 把 响 应 的 内容 】 , 服务器返 回给客户 , 写到一个 文件 中 再 由 如果 同 时有 多 个 客 户 请求 就 使 服务器非常 , , 忙碌 和 供 应 商 为 了 提 高 效 率 同 时 又 支 持 动 态 创 建 网 页 各 自为 其 服务器写 了 以使其 , , 一套 服 务器 应 用 程 序 不 再 是 一 个 单独 的 进 程 而 是 一 个 动 态链 接 库 只 需 启 动 一 次 即 可 , 、 , 响应 任 意 个 客 户 请 求 这使得 服 务 器 应 用 程 序 运 行 得 更 快 更 有 效 并 且 占用 的 资 源 更 少 ’ 是 目前 非 常 流 行 的 程 序设计技 术 应 用 系 统就 是 在 中内 , 嵌 脚 本语 言 然 后 以 脚 本 语 言使 用 , 对象 来 取 得 即 要 求 的信 息 根 据 这 些 要 求来处理 结果 , 如果 需 要 就使 用 存 取 数 据 库 当处 理 完 毕 后 再 使 用 对象把 结 果 回 传给 客 户端 的浏 览 器 结合 服 务 器 以 及 中 间件 , 的 应 用程序 是 刚开始流行 的 结构 这种 结 构是 让 定 制 , 对象 在 中建 立 其 他 的 对象 由 对 象 负 责 执 行 企 业 逻 辑 程 序 码 最 后 再 由定 制 对象 回 , 传 处 理 完 成 的 结 果 主 页 内容 以 回 传 到 客 户 端 , , 这 种 结 构 由于 把 企 业 逻 辑 程 序 码 单 独 作 为 一 层 如 果 应 用 的 业 务 逻 辑 比 较 复 杂 可 以 使 用 更 高 配 置 的 计算 机 来 运 行 业 务 层 其 他 层 可 以 保 持 不 变 , , 如果应用 的业务 逻 辑 比较 简 单 就 可 以 把 业务 层 和 数 据 库 放 在 一 台 机 器 中 这 种 结 构 才 是 真 正 的 分 布式 应 用 系 统 , 影响 服 务器 应 用 程 序 的效 率 的 主 要 因 素 , , , 由于 应 用 程 序是 类 型 的应 用 程 序 它 对客 户 的每 次请求 都 启 动 一 个 进 程 所 以 它 的效 率是 , 最低 的 的 应 用 程 序是 的类型 它被 服 务 器 加 载 后 一 直存 在 于 内 存 它 的 , 效率 要 远 远 高 于 类 型 的应 用 程序 但 由 于 运 行 在 服 务 器 的 内存 中 所 以 它 的 错 误 往 往 会 导致 服 一 一 收稿 日期 一 作者 简介 谷震 离 , 男 副教 授 硕 士 , ,
  • 3.
    第 期 谷震 离 翩及 器 应 用程 序 的 效 率 务 『 勺 , , 恤 抽 定义 的 仃 以 以 以 亡 执行 插 人 操 作 “ ’ ” 们 “ ” 卜厄 “ “ ‘ , 现 盯 , “ ” , “ ” , “ ” 《 , 己 块 , , 以 “ , ‘ , , 告诉 这个工作完成 告诉 放 弃这 个 工 作 叭 , “ ” , 凡〔 井 田 众认 , 通过 来浏览 这个 对象运 , , 行 结果 可 知 第 次 创 建 这 个 对象 的 时 间 明 显 比第 次少 得多 这就是 数 据库缓 存 的功 劳 如果把 对象 十中 , 放到 下的 就 会看 到 数 据 库 缓 存 和 对象缓 存 一 起 作 用 的 效 果 不 过搭 配 亡 应用程序和 汀 中间 件 在 一 起 的 真 正 威 力 还 在 于 如 果 程 序 员 的把 企 业逻 辑 实 现 于 不 同 的 , 对象 然后 让 这 些 侧汀 对 象共 同工 作 那 么 这 些 对象 就 可 以 串联起来 提 供 服 务 并 且 让 程 序 员 同 时开 发 , , 应用程序 以 及 传统 的 应 用 程 序 来 使 用这 些 叮 对象 所 提供 的服 务 同时 由 习 来 提供 系 统 级 的 , 管理 运行 浏 览 器 创建 过 对象 后 可 以 通 过 叮 的 在 更 新 统计 项 目 中 显 示 事 务 数 据 成功 和 失 败 的次数 , , 对 于 线程 的 缓 存 来 说 每 一 个 分 布 式 多 层 应 用 系 统 或 是 应 用 系 统都需 要 至 少 一个 线 程 通 常需 , , , , 要 多 个 线 程 来 并 发 执行 对 于 建 立 和 释 放 线 程 的 过 程 也 非 常浪 费 操 作 系 统 资 源 因此 如果 应 用 系 统也 能
  • 4.
    京 工 业 大 学 学 报 年 够 重 复 使 用 线 程 资 源 的 话 系 统 的 效 率 也 能够 得 到 提 高 线 程 的 缓存 机 制 其 实 是 通 过 操 作 系 统 来 提 供 的 , , 、 提 供 了一 些 新 的 线 程 缓 冲 函 数 使得 线 程 的创 建 撤 消和基 本 管 理 变 得 更 加 容 易 新 的通 , , , 用 线 程 缓 冲 并 不 适 合 每 一 种 环 境 但 它 常 常 可 以 适 合 你 的需 要 并 且 能 节 省 大 量 的 时 间 其 实 当进 程 初 , 始 化 时 它 并 不 产 生 与这 些 组 件 相 关 联 的 任 何 开 销 但是 一旦 新 线程 缓 冲 函数之 一被 调 用 时 就 为进程 , , , , 创 建 某 些 组 件 并 且 其 中有 些 组 件 将 被 保 留 直 到 进 程 终 止 运 行 为 止 十 , 还有一种提高 应用程 序效率 的办法 就是 利 用 所 提 供 的 内存 数 据 库 , 服务 其实 最初就是 为 环境而写 的 的基 本 功 能在 于 优化数 据查 询和 数据 , 获 取 它 是 在 服 务 器 的 内存 中 开 辟 内存 把 客 户 频 繁 访 , 问的数据信息 放在 中 如 果 有 足 够 大 的 内存 就 后 台 数 据库 库 置 可 以通过 把 数 据从后 台 数 据 库 移到 中间 的 业务 , 层 这 样 对后 台 数 据 的存 取 只 须 与 中 间 的 业 务 层 中 的 内 存 打 交 道 即 可 使后 台 数 据 库 到 中 间 的 业 务 层 中 的 数 据 流量 大大 减少 见 图 , 组件应用它 的 〕 提供者 卤 接 口 或通过 】 〕 访 问 以 , 来 服 图 后 台 数 据 库 中间 件 浏 览 器 数据 交 换 , 务 的形式来 运行 启动时 服 务从指 定 的后 台 数 , 据 库 中读 取 全 部 表 格 并 在 共 享 的 内 存 中 将 其 缓 存 , , , 另 外 为 了提 高 应 用 程 序 的 效 率 还 有 一 些 要 注 意 的 因素 开 发 类型的 应 用程 序 时 要 么 , , 用 语言 要 么用 语 言 因 为 每 种 语 言 都 有 自 己 的脚 本 引 擎 如果 同一个 程 序用 两种语 , 言 , 服 务器 在解 释 执行 时要 花 费 另 外 的 时 间 来 进 行 脚 本 引擎 的互 换 用 结合 来进行开发 时 习 , 要 注 意 对象 的 线 程 模 型 用 来 作 为 中 间件 时 对象 的 线 程 模 型 最 好 用 用 来 作 中 间件 , 时 线程模 型最好用 模 型来让 和 发挥 效率 另 一 个 要 考 虑 的 因 素 是 对象 的 参数 的顺 序 , 把 最 常 用 的参数 放 在 第一 位 不 常 用 的参 数 放在 后 面 因 为 编 译 器 是 把 开 始 的参 数 放 在 寄存 器 中 从 , , 简单 实 用 的角 度 出发 可 直 接 在 下进行 应 用 程 序 的开 发 从 以 上 可 了 解 , 提 供 了 对象 的缓 冲 和 线 程 的 缓 冲 机 制 这 对 于 提 高 , 应 用 程 序 的 效率起 着 很 大 的 作 用 参考 文 献 , , , , , 氏 开发人员指 南 任旭 钧 王 永生 冯泽波 译 北京 机械 工 业 出版社 , 仁 潘爱 民 原理 和应 用 〔 北京 清 华大 学 出 版 社 , , , , 核心编程 【 」 王建华 张焕 生 侯 丽坤 译 北京 机械工 业 出版社 一 , , , , 块 , 飞皿 , , 尸 , , , , 〕 , 汕 ’