选择显示字体大小

corba 与java 的结合使用

xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /> 


学 习 使 用corba 编 写 访 问 服 务 器 对 象 的 分 布 式java 小 应 用
------------------------------------------------------------------------

摘 要: 若 想 实 现web 上 分 布 式 客 户 机/ 服 务 器 模 式 的 应 用 程 序,可 以 选 择 多 种 不 同 的 技 术。 但 是, 对于 必 须 服 务 于 大 量 用 户 的应 用, 我 们 认 为 应 该 首 选corba, 因 为 它 具 有 可 扩 展 性 和 业 界 广泛 的 支 持。由于corba 的 强 健 性 可 以 提 高java 编 程 语 言 的 性 能, 利 用 已 有 的 基于 标 准 的 技 术,java 开 发 者 可 以编 写 出 功 能 强 大 的web 应 用 程 序。 在 这 篇 文 章 里, 我 们 首 先 简 单 介 绍 一 下corba, 然 后 作 为 该 技术的 实 例, 我 们将 着 手 编 写 一 个n 层 客 户 机/ 服 务 器 应 用 程 序。 另 外, 在 附 文 中, 我 们 对 几 种 分 布 式 对象 技 术 作 了 一 个 比 较, 它 们 分 别 是corba、rmi 和dcom。

利 用html 表 和 通 用 网 关 接 口(common gateway interface), 用 户 可 以 对web 网 点 上 的 服 务 器 脚本 进 行 交 互 式 的 访 问。 许 多 网 点 上 使 用这 种 技 术 提 示 用 户 输 入 用 户 名 和 密 码。 这 些 东 西 传 入 服 务器脚 本 之 后, 用 于验 证 该 用 户 是 否 可 以 访 问 网 点 中 的 某 一 部 分 内 容。 这 一 过 程用 到 了http, 而 它 是一 种 无 状 态(stateless) 的 协 议。 每 次 下 载 一个 页 面, 客 户 机 就 与 服 务 器 完 全 脱 离, 服 务 器 方 无 从得 知 客 户机 的 信 息, 更无 法 知 道 脱 离 后 的 客 户 机 正 在 进 行 的 动 作。 这 样, 哪 怕 是 在 成功 的 登 录 到 某一 网 点 之 后, 客 户 程 序 每 查 询 一 个 页 面, 仍 需将 用 户 名 和 密 码 传 向 服 务 器 方 进 行 重 复 的 认 证。 换句 话 说, 在你 的 客 户 应 用程 序(web 浏 览 器) 和 服 务 器 应 用 程 序 之 间, 不 存 在 局 部 变 量、方 法 调 用 或 是对 象。

经 过 数 十 年 的 努 力, 软 件 开 发 者 们 几 乎 可 以 成 功 地 将 代 码 以对 象 的 形 式 加 以 封 装。 但 是, 上 面 提到 的 现 象, 无 疑 表 明 了 我们 正 在 倒 退, 因 为 那 是 无 状 态 的、 批 处 理 的 计 算 模 式。

当 然,cgi 技 术 并 非 一 无 是 处。web 给 我 们 带 来 了 革 命 性 的 优 势,那 就 是 基 于 标 准 的 开 放 协 议 和 与平 台 无 关 的 独 立 性。 尽 管 成千 上 万 的web 网 点 使 用http 和cgi 来 获 得 用 户 信 息、 在 服 务 器 上 运行 一段 脚 本、 甚至 还 可 能 向 用 户 返 回 信 息, 但 是 从 传 统 的 的 观 点 看 来, 这 些 网点 并 不 能 算 是 真 正 的“ 应用 程 序”。 除 此 之 外, 由 于 新 技 术 的应 用(http 和cgi), 所 有 这 些 网 点 的 代 码 必 须 要 全 部 重 写。 想 要对已 有 的web 软件 资 源 加 以 利 用, 或 是 编 写 真 正 功 能 强 大 的 应 用 程 序, 使inte.net/intr.net 成 为 通信 主 干, 所 使 用 的 技 术 必 须 具 有 以 下 特性:

曋?持 现 有 的c、c + + 和cobol 代 码
曋?持java, 以 建 立 具 有 可 移 值 性、 平 台 独 立 性 的 面 向 对 象 的 应用 程 序暽?业 中 立 性, 只 有 这 样, 应 用程 序 才 易 于 维 护,且 不 会 被时 间
淘 汰。
暱?扩 充 性, 能 够 支 持 大 {"c++, java", "java, smalltalk, ada95,
c++", "java, c++",
"java, c++", "java, c++"},
{"http://www.expersoft.com", "http://www.iona.com",
"http://www.visigenic.com",
"http://www.software.ibm.com/ad/cb",
"http://www.sun.com/solaris/neo/solaris_neo/index.html"}};
orbquery(string name) {
super(name);
}

public java.lang.string getname(int index)
{
string name;
name = orbvendors[index][0];
return name;
}

public java.lang.string getvendor(int index)
{
string vendor;
vendor = orbvendors[index][1];
return vendor;
}

public java.lang.string getos(int index)
{
string os;
os = orbvendors[index][2];
return os;
}

public java.lang.string getlanguages(int index)
{
string languages;
languages = orbvendors[index][3];
return languages;
}

public java.lang.string geturl(int index)
{
string url;
url = orbvendors[index][4];
return url;
}
}

至 此, 我 们 已 经 写 好 了 所 有 服 务 器 方 必 需 的 代 码, 下 一 步 的 工作 是 创 建 客 户 小 应 用, 初 始 化 客 户orb,进 而 击 活 并 调 用 刚 刚生 成 的 服 务 器 对 象。

创 建corba 小 应 用

正 如 服 务 器 对 象 要 向 服 务 器orb 登 记 一 样, 客 户 端 小 应 用 或 应用 程 序 需 要 向 客 户 机orb 登 记。 当 要获 得 远 程corba 对 象 时, 客 户机 采 用 了 一 种 间 接 的 方 法, 它 通 知 客 户 机orb 其 意 图, 由orb 负 责orb 到orb 的 通讯。 这 种 请 求 方 式 由 下 面 两 行 代 码 实 现( 在visibroker for java 中):

// 初 始 化 orb ( 使 用applet)
org.omg.corba.orb orb = org.omg.corba.orb.init(this);
// 检 索applet 要 调 用 的 orbinfo 接 口 对 象
orbinfoquery= orbquery.orbinfohelper.bind(orb, "orbinfo");

执 行 了bind() 方 法 调 用 之 后, 我 们 的orbinfoquery 本 地 变 量 与 服 务器 的orbinfo 对 象 绑 在 一 起。这 一 操 作 完 成 之 后, 我 们 就 可 以 调用 帮 助 方 法 来 实 现 客 户 端 小 应 用。 记 住, 尽 管 示 例 中 我 们 完 全使用 了java 语言, 但 实 际 上, 服 务 器 对 象 也 可 以 用 其 他 语 言 来 实 现, 如:cobol、c + +、ada 和small talk。

结 论

与 单 纯 的java 小 应 用 相 比, 创 建corba java 应 用 稍 显 复 杂。 事 实 上, 这 同 样 比 用rmi 创 建 纯 粹 的java 分 布 式 对 象 应 用 要 难 一 些。 但是,corba 和java 的 联 合, 所 创 建 的 应 用 程 序 功 能 更 为 强 大, 更 具可 扩充 性, 这 是单 纯 用jdk 开 发 所 无 法 比 拟 的。 另 外, 现 实 是 企 业 界 很 少 使 用java 应 用 程 序。corba 是 两全 其 美 的 选 择, 一 方 面 它 允 许 开 发 者利 用 已 有 的 代 码 保 护 投 资, 另 一 方 面 又 可 以 充 分 发 挥java 编程语 言 的 优 势。

分 布 式 对 象 另 外 两 种 选 择:dcom 和rmi

大 多 数java 开 发 者 可 能 更 熟 悉dcom 和rmi, 这 是corba 两 个 主 要 的 竞争 对 手。 现 在 让 我 们 对 三 者 做一 下 比 较。

corba 重 述

corba 有 几 个 基 本 的 优 点: 与 开 发 语 言 无 关 的 独 立 性, 与 开 发 者无 关 的 独 立 性 和 与 操 作 系 统 无 关的 独 立 性。corba 的orb 在 当 前每 一 种 主 流 操 作 系 统 上 均 有 实 现( 仅 就microsoft 的 各 种 操 作 系统 来说,corba 获得 的 支 持 甚 至 超 越 了dcom)。 除 此 之 外,corba orb 可 以 访 问 多 种 语言 实 现 的 对 象( 包 括c++、cobol、smalltalk 和java)。 借 助 于iiop, 某一 开 发 者( 比 如 说visigenic) 开 发 的corba orb 能 够 获 取, 操 作 远 程的 由其 他 的 开发 者( 比 如 说iona) 开 发 的 对 象。java orb 允 许 客 户 端 在 没 有 安 装任 何 特 别 软 件 的 情 况 下实 现java 客 户 端 应 用 程 序。(java orb 的 类可 与 小 应 用 一 起 动 态 下 载, 也 可 能 与 浏 览 器 捆 绑 在 一起。)
dcom: microsoft 的 法 宝

目 前,microsoft 的 分 布 式 组 件 对 象 模 型(distributed componont objectmodel) 仅 运 行 于 两 种操 作 系 统 之 上:windows 95 和windows nt4。microsoft 正 在 与 第 三 方 开 发 商 协 作, 以 将dcom 移 到其 它 的 操 作 系统 上( 包 括mvs 和 几种unix 操 作 系 统)。 象corba 一 样,dcom 是 独 立 于 语 言 的, 它 用microsoft 的 对 象 描 述 语 言(odl) 通 过 接 口 对 对 象 加 以 描 述。

与corba 相 比,dcom 有 三 个 重 大 缺 点。 首 先, 它 由 单 一 开 发 者( 微软) 定 义 并 控 制, 这 大 大 限 制 了dcom 使 用 者 的 选 择 范 围( 比 方 说开 发 工 具 和 风 格)。 其 次,dcom 缺 乏 众 多 的 平 台 支 持, 这 极 大 程度 地 制 约了 代码 的 可 重 用 性 和dcom 应 用 的 可 扩 展 性。 最 后, 与corba 相 比,dcom 是一 种 非 常 不 成 熟 的 技 术。 尽管 微 软 目 前 正 为dcom 加 入 消 息 和 事务 支 持, 但 这 些 功 能 在1994 年 的corba 2.0 就 已 经 实 现 了, 并且 正由 几 家 不 同的corba 软 件 开 发 商 所 发 行。

为 了 使 一 个java 的 小 应 用/ 应 用 程 序 得 以 访 问 服 务 端 的dcom 对 象, 开 发 者 不 得 不 使 用inte.net explorer 浏 览 器 和windows 95/nt 平 台,只 有 这 样 才 能 支 持 客 户 机 软 件。 这 样 的 限 制 当 然 削 弱 了应 用程 序 在web 上 的 可用 性。 而 另 一 方 面,dcom 的 一 个 重 大 优 势 在 于, 对microsoft windowsnt/95 用 户 免 费。 过 去 的 历 史 已 经 多 次 表 明, 这 是 与microsoft 竞 争的 重 大 障 碍。

rmi:sun 的java-only 解 决 方 案

remote method invocation 是 最 新 的jdk 1.1 中 的 重 要 特 色。rmi 使 得java客 户 能 够 访 问 远 地 的服 务 对 象。 这 听 起 来 似 乎 十 分 类 似 于corba, 但 两 者 并 不 一 样。 其 关 键 在 于 服 务 器 端 的 应 用 程 序也 必 须用java 编 写, 且 只能 使 用jdk 1.1 中 提 供 的 工 具。 你 根 本 无 法 把 过 去 编 制 的 代 码 加到 新 程 序中 去, 除 此 之 外,rmi 还 有 许 多 其 它 缺 陷。

与corba 不 同,rmi 没 有 服 务 这 一 概 念。 另 外, 根 据rmi 写 出 的java 服务 器 对 象 往 往 性 能 低 劣, 这 个缺 点 源 于java 虚 拟 机。( 有 趣 的 是,java corba 服 务 器 比rmi 服 务 器 表 现 出 更 好 的 性 能。)rmi 也 不包括 象corba orb 那样 的 对 象 击 活 功 能。

实 际 上,rmi 及java 技 术 更 可 能 向omg 的 标 准 靠 拢, 而 不 是 背 道 而驰。sun 已 经 宣 布,java 事 务 服 务(java transaction serveces) 将 建 立 在omg 的 对 象 事 务 服 务(object transaction serveces)。 该 公司 还 曾 发 布其 长 远 计 划:使rmi 对 象 可 以 通 过iiop 互 通 讯。

总 而 言 之,rmi 对 于 用 纯java 书 写 的 小 规 模 的 应 用 程 序 来 说, 是一 种 可 行 方 案。 但corba 提 供 了 集成 的 基 础, 这 种 集 成 是 指 新 开发 的 代 码 和 已 有 对 象 的 集 成, 同 时 允 许 将 来 加 以 扩 展。 在 做 出取 此 舍彼 的 选择 之 前, 你 必 须 权 衡 上 面 的 各 种 因 素, 并 仔 细 审 视 每 种 技 术 的现 状。


 


关键字 本文所属关键字

相关 与本文相关文章

分类 所有文章关键字导航

源码编程相关

Java   Asp   PHP   .Net   XML   C/C++   CGI   VB   Jsp   J2ee   J2se   J2me   EJB   Servlet   Tomcat   Resin   Struts   Weblogic   Eclipse   ANT   GUI   JMS   Web servise   IDEA   Webphere   Hibernate   Spring   Jboss   Applet   Swing   Socket   Javamail   Perl   Ajax   P2P   安全   模式   框架   测试   开源   游戏

SQL数据库相关

My-SQL   Ms-SQL   Access   DB2   Oracle   Sybase   SQLserver   索引   存储过程   加密   数据库   分页   视图  

手机无线相关

3G   Wap   CDMA   GRPS   GSM   IVR   彩信   短信   无线   增值业务

网页设计制作相关

HTML   CSS   网页配色   网页特效   Javascript   VBscript   Dreamweaver   Frontpage   JS   Web   网站设计

网站建设推广相关

建站经验   网站优化   网站排名   推广   Alexa

操作系统/服务器相关

Windows XP   Windows 2000   Windows 2003   Windows Me   Windows 9.x   Linux   UNIX   注册表   操作系统   服务器   应用服务器

图形图像多媒体相关

Photoshop   Fireworks   Flash   Coreldraw   Illustrator   Freehand   Photoimpact   多媒体   图形图像

标准 网站致力的规范

Valid CSS!

无不良内容,无不良广告,无恶意代码

Valid XHTML 1.0 Transitional

creativecommons