Microsoft Word - Chap05.doc



Similar documents
目 录 1. 前 言 为 什 么 要 用 ESB 技 术 发 展 业 务 需 求 IT 需 求 IT 与 业 务 一 致 性 要 求 TongIntegrator ESB v5 简 介..

final

创业板投资风险提示:本次股票发行后拟在创业板市场上市,该市场具有较高的投资风险

PowerPoint Presentation

XXXXXXXX

WebSphere Studio Application Developer IBM Portal Toolkit... 2/21 1. WebSphere Portal Portal WebSphere Application Server stopserver.bat -configfile..

目 录 1. 业 务 流 程 系 统 开 发 面 临 的 挑 战 与 机 遇 业 务 流 程 管 理 新 一 代 开 源 业 务 流 程 开 发 平 台 BPMX BPMX3 是 什 么 为 什 么 要 优 先 采 用 BPMX

LiveBOS产品白皮书

本 课 程 作 为 非 计 算 机 专 业 本 科 通 识 课 程, 是 一 门 理 论 和 实 践 紧 密 结 合 的 实 用 课 程, 内 容 包 括 计 算 机 基 础 部 分 和 程 序 设 计 部 分 计 算 机 基 础 部 分 涵 盖 计 算 机 软 硬 件 组 成 数 制 表 示 操

ASP 電子商務網頁設計

TopTest_Adminstrator.doc

LiveBOS产品白皮书

信息

1 目 錄 1. 簡 介 一 般 甄 試 程 序 第 一 階 段 的 準 備 第 二 階 段 的 準 備 每 間 學 校 的 面 試 方 式 各 程 序 我 的 做 法 心 得 及 筆 記 結 論..

温州市政府分散采购

untitled

附件2

epub 79-1

國家圖書館典藏電子全文

中图分类号:TP393

计算机软件技术专业教学计划

epub 61-2

软 件 工 程 专 业 习 指 南 目 录 一 软 件 工 程 专 业 设 置 背 景 与 发 展 前 景... 3 二 软 件 工 程 专 业 实 践 教 条 件... 4 三 软 件 工 程 专 业 课 程 类 型 及 核 方 式 软 件 工 程 专 业 课 程 类 型...7

序号:001

1. 2. Flex Adobe 3.

目 录 目 录 平 台 概 述 技 术 架 构 技 术 特 点 基 于 统 一 平 台 的 多 产 品 线 支 撑 先 进 性 安 全 性 开 放 性 高 性 能 和

Marketing_WhitePaper.PDF

無障礙網頁開發規範二版(草案)

untitled

FAQ -PowerDesigner9.5.DOC

分 类 号 密 级 UDC 注 1 学 位 论 文 基 于 身 份 信 息 的 云 聚 合 技 术 研 究 ( 题 名 和 副 题 名 ) 边 汤 贵 ( 作 者 姓 名 ) 指 导 教 师 唐 雪 飞 副 教 授 电 子 科 技 大 学 成 都 ( 姓 名 职 称 单 位 名 称 ) 申 请 学

untitled

2 SGML, XML Document Traditional WYSIWYG Document Content Presentation Content Presentation Structure Structure? XML/SGML 3 2 SGML SGML Standard Gener

Network Bandwidth Applications MATE Applications Applications On Demand Calendaring Load Balancer Live Archive Design Northbound Service,Netwo

中国软件2013校园招聘通知

chapter 2 HTML5 目錄iii HTML HTML HTML HTML HTML canvas

「人名權威檔」資料庫欄位建置表

Microsoft Word 電腦軟體設計.doc

Microsoft Word 招股说明书07.11

<4D F736F F D20B9FABCD2BBFAB9D8B0ECB9ABBDA8D6FEBACDB4F3D0CDB9ABB9B2BDA8D6FEC4DCBAC4BCE0B2E2CFB5CDB3C8EDBCFEBFAAB7A2D6B8B5BCCBB5C3F7CAE92E646F63>

大连理工大学专业学位硕士学位论文

% ~ AAA

目录

职 位 类 别 : 测 试 工 程 师 工 作 经 验 或 实 习 经 历 : 不 限 岗 位 要 求 : 1. 本 科 及 其 以 上 学 历, 计 算 机 相 关 专 业 2014 届 毕 业 生 ; 2. 实 习 时 间 要 求, 尽 量 一 周 五 个 工 作 日 ; 3. 熟 悉 Wind

jsp

untitled

中 山 大 学 珠 海 校 区 基 础 教 学 实 验 中 心 ( 下 简 实 验 中 心 ) 成 立 于 2000 年, 为 独 立 建 制 的 校 级 实 验 教 学 机 构 按 照 " 高 起 点, 高 标 准, 高 效 益 " 的 定 位 来 规 划 建 设, 是 一 个 实 验 资 源 高

<4D F736F F D C9CFB0EBC4EACFB5CDB3BCAFB3C9CFEEC4BFB9DCC0EDCAA6C9CFCEE7CAD4BEED>

SiteView技术白皮书

web - Web Grid Web Service - semantic -RDF Semantic Web -

ARIS Design Platform

<4D F736F F D20312D3120D5D0B9C9CBB5C3F7CAE9A3A8C9EAB1A8B8E5A3A9>

XML/DTD (1) XML (Markup) SGML HTML XML XML XML 2004/7/ All Rights Reserved 2

(interoperability) Dublin Core 15 (The Dublin Core Metadata Initiative DCMI) 1995 (Dublin, Ohio) (The Dublin Core Metadata Element Set DC) DC DC DC DC

網站安全

ebook65-20

ebook

<4D F736F F F696E74202D20C8EDBCFEBCDCB9B9CAA6D1D0D0DEBDB2D7F92E707074>

(Geographic data or geodata ) 30 (Buelher, K and L. Mckee1996) (Open GIS Consortium OGC) OGC GIS Open GIS OGC (Geography Markup Langu

近四年网络工程专业培养方案.doc

weblogic

南威软件股份有限公司

EJB-Programming-3.PDF

數位圖書館/博物館相關標準 2

untitled

<4D F736F F D2031A3AD4A617661BCBCCAF5CAC6CDB7D5FDBEA22E646F63>

2 / 71

标题

Yih-Chuan Lin Tsung-Han Wu Hsin-Te Wu Hsiao-Hui Hsu Department of Computer Science and Information Engineering Shu-Te University

臺銀人壽「98年九至十一職等人員甄試」

Microsoft Word - 王彬_已修改_.doc

声 明 本 公 司 及 全 体 董 事 监 事 高 级 管 理 人 员 承 诺 不 存 在 虚 假 记 载 误 导 性 陈 述 或 重 大 遗 漏, 并 对 其 真 实 性 准 确 性 完 整 性 承 担 个 别 和 连 带 的 法 律 责 任 本 公 司 负 责 人 和 主 管 会 计 工 作 的

1

<4D F736F F D D352DBED6D3F2CDF8D7E9BDA8D3EBB9DCC0EDCFEEC4BFBDCCB3CCD5FDCEC42E646F63>

1 Par t IBM 7 Par t 2 I BM IBM Par t Q & A

untitled

<4D F736F F D20A1B6BBB7BEB3B1A3BBA4D6F7B9DCB2BFC3C5CDF8D5BEBDA8C9E8D3EBCEACBBA4BCBCCAF5B5BCD4F2A3A8B7A2B2BCB8E5A3A9A1B B315D312E646F63>

untitled

基于CDIO一体化理念的课程教学大纲设计

ebook215-5

2005 3

android讲座

( Version 0.4 ) 1

路演公告.PDF

<4D F736F F D20312D3120B9ABBFAAD7AAC8C3CBB5C3F7CAE9A3A8C9EAB1A8B8E5A3A92E646F63>

<4D F736F F D20B1A6BCA6CAD0C7F8D3F2CEC0C9FAD0C5CFA2C6BDCCA8BBA5C1AABBA5CDA8CAB5CAA9B9E6B7B6>

福 建 顶 点 软 件 股 份 有 限 公 司 首 次 公 开 发 行 股 票 招 股 说 明 书 发 行 股 票 类 型 人 民 币 普 通 股 (A 股 ) 本 次 拟 发 行 股 数 每 股 面 值 每 股 发 行 价 预 计 发 行 日 期 预 计 上 市 的 证 券 交 易 所 发 行 后

0896-电力信息与系统通信-02期.indb

北京北信源软件股份有限公司招股书(申报稿)

声 明 本 公 司 及 全 体 董 事 监 事 高 级 管 理 人 员 承 诺 不 存 在 虚 假 记 载 误 导 性 陈 述 或 重 大 遗 漏, 并 对 其 真 实 性 准 确 性 完 整 性 承 担 个 别 和 连 带 的 法 律 责 任 本 公 司 负 责 人 和 主 管 会 计 工 作 的

<4D F736F F D20D2D7C1AAD6DAD0C5CFA2BCBCCAF5B9C9B7DDD3D0CFDEB9ABCBBEB4B4D2B5B0E5CAD7B7A2D5D0B9C9CBB5C3F7CAE9A3A8C9EAB1A8B8E5A3A92E646F63>

优迈科技教学大纲2009版本

Mechanical Science and Technology for Aerospace Engineering October Vol No. 10 Web SaaS B /S Web2. 0 Web2. 0 TP315 A

IBM Rational ClearQuest Client for Eclipse 1/ IBM Rational ClearQuest Client for Ecl

目 录 简 介.3 ` 体 系 结 构...4 数 据 层...5 数 据 连 接 器...6 Tableau Server 组 件...7 网 关 / 负 载 平 衡 器...8 客 户 端 :Web 浏 览 器 和 移 动 应 用 程 序...8 客 户 端 :Tableau Desktop..

背 景 概 述 企 业 需 要 一 种 灵 活 的 平 台 来 快 速 构 建 测 试 和 扩 展 新 的 应 用 程 序 服 务 并 对 市 场 中 发 生 的 数 字 化 变 革 作 出 反 应 数 字 化 变 革 正 在 加 快 步 伐, 因 为 流 程 和 信 息 的 日 益 融 合 带 来


声 明 本 公 司 及 全 体 董 事 监 事 高 级 管 理 人 员 承 诺 不 存 在 任 何 虚 假 记 载 误 导 性 陈 述 或 重 大 遗 漏, 并 对 其 真 实 性 准 确 性 完 整 性 承 担 个 别 和 连 带 的 法 律 责 任 本 公 司 负 责 人 和 主 管 会 计 工

EJB-Programming-4-cn.doc

Microsoft Word 記錄附件

Transcription:

原 則 與 屬 性 結 構 多 功 能 模 組 一 致 的 概 念 相 依 性 能 夠 獨 立 交 換 程 序 自 動 傳 播 資 料 存 取 可 建 置 的 持 續 成 長 抵 抗 熵 第 五 章 資 源 導 向 式 架 構 : 進 入 網 頁 應 用 Brian Sletten 建 築 是 可 以 住 人 的 雕 塑 Constantin Brancusi 本 章 中, 我 們 將 會 看 到 企 業 中 的 資 訊 導 向 式 架 構 與 Web 架 構 有 相 同 的 良 好 特 性 : 延 展 性 彈 性 架 構 轉 移 策 略 訊 息 導 向 存 取 控 制 等 等 過 程 中, 這 能 讓 業 務 部 門 有 能 力 根 據 業 務 需 要 投 資 與 開 發 軟 體, 而 不 是 因 為 錯 誤 的 技 術 決 策 付 出 更 多 的 整 合 成 本 前 言 身 處 IT 產 業 的 我 們, 必 需 承 認 這 個 令 人 尷 尬 的 事 實 : 對 大 多 數 企 業 而 言, 在 網 路 上 找 尋 資 料 比 起 在 組 織 內 的 系 統 找 尋 資 料 容 易 得 多 想 想, 他 們 更 容 易 透 過 全 球 資 訊 系 統 上 的 第 三 方 系 統 找 到 資 料, 而 不 是 從 自 己 能 夠 控 制 所 有 資 料 的 環 境 中 尋 找 造 成 這 種 狀 況 的 原 因 很 多, 最 大 的 問 題 在 於 我 們 在 內 部 傾 向 於 使 用 錯 誤 的 抽 象, 過 度 強 調 軟 體 與 服 務, 不 夠 關 心 我 們 的 資 料 這 個 方 向 性 的 錯 誤 造 成 了 業 務 單 位 對 於 IT 部 門 感 到 頭 痛, 我 們 忽 略 了 企 業 只 在 乎 軟 體 提 供 的 功 能 與 特 徵, 企 業 真 正 想 要 的 是 能 夠 有 更 容 易 的 方 法, 能 夠 管 理 收 集 來 的 資 訊 以 此 為 基 礎, 重 複 使 用 支 援 客 戶 與 核 心 功 能 為 什 麼 企 業 資 訊 管 理 與 Web 的 差 異 會 這 麼 大? 問 題 的 答 案 與 企 業 政 治 的 關 係 往 往 比 技 術 決 策 來 得 大, 讓 現 代 互 動 慣 例 更 加 複 雜 的 舊 有 系 統, 試 著 導 入 與 企 業 利 益 不 一 致 的 商 業

88 第 五 章 軟 體, 我 們 想 要 解 決 所 有 問 題 的 萬 靈 丹 ( 雖 然 Brooks 博 士 在 多 年 前 就 潑 了 我 們 一 頭 冷 水 *) 即 使 所 處 的 組 織 擁 有 合 宜 的 技 術 基 礎 架 構, 資 料 管 理 者 與 使 用 者 間 的 角 力 也 防 礙 了 資 訊 分 享, 這 是 企 業 系 統 運 作 無 法 像 Web 一 樣 乾 淨 的 原 因 之 一, 並 非 所 有 的 問 題 都 與 技 術 有 關 就 某 方 面 來 說,Web 技 術 也 能 夠 幫 助 我 們 繞 過 政 治 問 題, 畢 竟 要 分 享 由 其 他 形 式 得 到 的 網 址 並 不 需 要 特 別 的 許 可 好 處 是, 我 們 也 許 可 以 尋 找 讓 Web 成 為 找 尋 資 訊 樂 土 的 原 因, 在 企 業 系 統 應 用 這 些 概 念 可 能 會 有 類 似 的 好 處, 像 是 降 低 資 料 管 理 成 本 架 構 轉 移 策 略 資 訊 導 向 存 取 控 制 以 及 遵 守 法 規 Web 的 成 功 原 因 在 於 同 時 提 高 資 訊 共 享 的 可 能 性 與 降 低 門 檻, 我 們 已 經 建 立 了 工 具 與 協 定, 能 夠 傳 播 世 界 頂 級 科 學 家 的 思 想, 也 能 讓 我 們 的 祖 母 與 家 族 連 繫, 或 是 找 尋 有 共 同 興 趣 的 社 群 這 是 偉 大 的 成 就, 我 們 應 該 思 考 結 合 讓 一 切 成 為 事 實 的 思 想, 我 們 必 須 居 住 在 自 己 建 造 的 建 築 當 中, 因 此, 我 們 應 該 建 立 能 讓 自 己 滿 意 且 驕 傲 的 建 築 傳 統 Web Service 在 開 始 介 紹 資 訊 導 向 式 環 境 的 新 架 構 之 前, 先 簡 單 回 顧 目 前 類 似 系 統 的 作 法 以 及 可 能 改 善 的 地 方 過 去 十 年 間, 企 業 架 構 願 景 主 要 圍 繞 著 可 重 複 使 用 的 企 業 服 務, 我 們 必 須 提 醒 自 己,Web Service 應 該 是 種 企 業 策 略, 一 種 可 以 用 任 何 語 言, 以 非 同 步 的 方 式, 定 義 出 可 在 任 何 地 方 使 用 的 新 功 能 的 方 法 我 們 希 望 能 夠 升 級 服 務 而 不 影 響 使 用 者 很 不 幸, 針 對 這 個 目 標 持 續 不 斷 改 變 的 技 術, 讓 人 們 無 所 適 從, 也 無 法 解 決 我 們 在 真 實 組 織 中 真 實 架 構 所 遇 到 的 問 題 我 們 新 願 景 的 目 標 與 原 來 相 同, 但 改 變 了 原 先 服 務 導 向 式 (Service-Oriented) 架 構 的 狀 態 也 提 昇 了 價 值 我 們 對 Web Service 的 基 本 認 識 包 含 了 許 多 技 術 : 呼 叫 服 務 使 用 的 SOAP 描 述 合 約 (contract) 的 WSDL 發 佈 與 找 尋 服 務 後 設 資 料 (metadata) 的 UDDI SOAP 源 自 於 許 多 不 同 的 傳 統 技 術 : 遠 端 函 數 呼 叫 (remote procedure call,rpc) 以 及 非 同 步 XML 訊 息 模 型 (doc/lit) 第 一 種 方 法 容 易 出 錯, 無 法 延 展 規 模, 不 論 是 稱 為 DCOM RMI 或 CORBA 都 沒 有 得 到 太 好 的 結 果 問 題 與 那 堆 角 括 號 無 關 ; 我 們 只 是 傾 向 用 這 種 方 法, 在 錯 誤 的 精 度 上 建 立 系 統, 將 自 己 限 制 在 無 法 持 續 穩 定 的 合 約 之 上 第 二 個 方 法 較 為 進 步, * http://en.wikipedia.org/wiki/no_silver_bullet [ 譯 註 ] [ 譯 註 ] 原 文 用 銀 彈 (Silver Bullet), 為 符 合 語 言 使 用 習 慣 翻 作 萬 靈 丹

資 源 導 向 式 架 構 : 進 入 網 頁 應 用 89 是 個 很 好 的 實 作 策 略, 但 卻 受 到 過 度 強 調 跨 系 統 互 通 性 迷 失 了 最 初 目 的, 即 使 是 很 簡 單 的 互 動, 也 會 被 解 決 更 大 的 互 動 問 題 所 影 響 doc/lit 的 方 式 能 讓 我 們 在 結 構 化 套 件 中 定 義 請 求 (request), 流 程 中 其 他 鬆 耦 合 的 參 予 者 可 以 轉 發 修 改 加 工 或 再 加 工 這 些 請 求 就 像 是 流 動 的 珍 珠 一 般, 訊 息 會 在 被 中 介 與 端 點 以 非 同 步 方 式 處 理 時, 累 積 元 素 與 屬 性 透 過 在 一 個 層 級 加 入 更 多 的 訊 息 處 理 器 達 到 水 平 延 展 性, 我 們 能 夠 將 不 同 伙 伴 與 企 業 邊 界 以 及 那 些 無 法 包 含 在 單 一 環 境 程 序 間 的 互 動 方 式 定 下 標 準, 這 形 成 一 個 去 除 了 環 境 因 素 的 請 求, 能 夠 解 決 非 常 困 難 的 互 動 模 式 當 單 單 依 賴 嚴 格 的 分 解 與 描 述 ( 如 SOAP 與 WSDL) 證 明 無 法 解 決 互 動 需 求 時, 我 們 增 加 更 多 堆 疊, 導 入 新 的 商 業 流 程 與 協 調 層, 一 大 組 的 標 準 與 工 具 讓 原 先 已 經 無 法 處 理 的 狀 況 更 加 複 雜, 橫 跨 領 域 (domain) 與 組 織 邊 界 時 會 出 現 彼 此 衝 突 的 術 語 (term) 商 業 規 則 (business rule) 存 取 政 策, 以 及 由 WS-* 組 成 的 巴 別 塔 即 使 我 們 接 受 這 樣 的 願 景, 也 沒 有 任 何 可 行 的 轉 移 策 略, 基 本 上 是 架 構 在 無 法 互 通 的 架 構 之 上 Clay Shirky 以 將 Web Service 的 互 通 性 稱 為 turtles all the way up 而 聞 名 問 題 在 於, 當 大 多 數 人 想 要 用 與 語 言 或 平 台 無 關 的 方 式 存 取 這 些 可 重 複 使 用 的 功 能 時, 這 些 技 術 明 顯 是 殺 雞 用 牛 刀, 太 過 複 雜, 而 且 還 顯 露 出 實 作 的 細 節 為 了 呼 叫 這 些 功 能, 必 須 用 SOAP 溝 通, 這 是 很 好 的 實 作 決 策, 但 在 由 鬆 耦 合 系 統 所 構 成 的 世 界 中, 我 們 不 想 只 是 為 了 簡 單 的 互 動, 而 告 訴 或 要 求 客 戶 知 道 這 些 細 節 SOAP 的 藍 圖 中 包 含 了 能 夠 在 非 同 步 環 境 中 維 持 交 易 一 致 性 的 請 求, 這 些 請 求 需 要 去 除 環 境 相 關 資 訊 然 而, 在 由 真 實 系 統 構 成 的 現 實 企 業 環 境 中, 請 求 中 總 是 會 包 含 環 境 資 訊, 首 先 必 須 加 入 識 別 碼, 接 著 是 簽 章 (credential), 然 後 是 簽 署 訊 息 內 容 以 及 加 密 重 要 的 資 訊 等 等 互 動 的 方 式 與 企 業 需 要 提 高 了 送 出 簡 單 SOAP 請 求 的 負 擔, 如 果 組 織 內 有 人 需 要 取 得 資 訊, 為 什 麼 不 能 直 接 要 求? 其 次, 如 果 一 個 問 題 已 經 被 回 答 過, 為 什 麼 其 他 10( 或 100 1,000) 個 人 詢 問 相 同 的 問 題, 會 一 再 對 後 台 系 統 造 成 相 同 的 負 載? 這 些 問 題 指 出 了 傳 統 Web Service 技 術 堆 疊 中 存 在 的 抽 象 問 題, 也 對 全 球 各 地 IT 人 員 對 WS-* 的 不 滿 提 供 了 部 份 的 解 答, 這 些 是 將 呼 叫 行 為 分 解 為 由 服 務 組 成 流 程 的 實 作 技 術, 但 組 織 的 需 求 並 無 法 只 分 解 為 服 務 ; 這 會 失 去 從 呼 叫 服 務 的 環 境 中 辨 識 出 資 訊, 建 立 結 構 的 能 力 ; 即 使 是 單 純 需 要 簡 單 的 資 訊, 也 必 須 要 瞭 解 取 得 資 訊 用 的 各 種 技 術 將 我 們 http://en.wikipedia.org/wiki/turtles_all_the_way_down

90 第 五 章 被 限 制 必 須 在 持 定 主 機 的 特 定 通 訊 埠 上, 採 用 合 約 限 制 (contract-bound) 的 請 求 結 構 時, 失 去 了 鬆 耦 合 與 非 同 步 互 動 模 式 以 及 改 變 資 料 視 角 的 能 力 對 於 這 些 通 過 各 個 服 務 的 資 訊, 一 但 缺 少 了 唯 一 識 別 的 方 式, 就 無 法 提 供 資 訊 層 級 的 存 取 控 制 在 特 續 增 加 的 網 路 化 世 界 中, 防 止 對 敏 感 重 要 與 私 有 資 料 的 存 取 已 是 十 分 複 雜 的 問 題, 少 了 以 上 所 提 的 能 力, 讓 資 料 存 取 問 題 更 加 複 雜 SOAP 與 WSDL 並 不 是 問 題 的 元 兇, 但 也 不 是 問 題 完 整 的 答 案, 在 我 接 下 來 要 介 紹 的 資 源 導 向 架 構 中, 也 能 夠 以 doc/lit 的 方 式 使 用 SOAP; 我 們 只 是 無 法 接 受 將 它 們 視 為 唯 一 的 解 決 方 案 ; 只 在 需 要 的 時 候, 顯 露 出 在 背 後 採 用 了 這 些 技 術 為 了 走 出 接 下 來 的 這 一 步, 必 須 先 瞭 解 Web 以 及 它 在 延 展 性 靈 活 性 以 及 作 為 資 訊 分 享 平 台 成 功 的 原 因, 對 資 訊 的 使 用 者 而 言, 實 作 細 節 通 常 並 不 重 要 網 頁 應 用 一 般 的 觀 念 中 Web 是 以 文 件 為 中 心, 特 別 是 透 過 瀏 覽 器 取 得 文 件, 這 也 是 大 多 數 人 使 用 Web 的 方 式 然 而, 真 正 的 魔 法 在 於 公 開 訊 息 間 的 連 結, 這 些 連 結 代 表 的 意 義, 輕 易 就 能 開 啟 新 視 窗 取 得 連 結 另 一 端 的 資 訊, 沒 有 起 點 也 沒 有 終 點 只 要 我 們 知 道 自 己 找 尋 的 目 的, 通 常 都 能 得 到 需 要 的 資 訊 搜 尋 引 擎 以 及 建 議 系 統 能 夠 協 助 我 們 提 出 適 當 的 問 題 我 們 喜 歡 為 事 物 命 名, 基 本 上 是 名 稱 導 向 的 生 物 ; 我 們 用 名 稱 分 辨 這 個 東 西 與 那 個 東 西, 孩 童 時 期 主 要 的 溝 通 模 式 就 是 指 著 物 體 說 出 名 稱, 代 表 想 要 取 得 他 們 就 很 多 方 面 來 看,Web 就 是 將 這 種 孩 童 般 好 奇 心 在 群 眾 智 慧 與 愚 蠢 產 生 的 結 果 身 為 對 知 識 永 不 滿 足 的 生 物, 我 們 會 決 定 對 什 麼 感 到 興 趣, 開 始 追 尋 沒 有 集 中 式 協 調, 在 找 尋 過 程 中 能 夠 自 由 地 記 錄 下 各 自 的 故 事 想 法 以 及 旅 程 我 們 將 Web 看 作 由 文 件 間 一 系 列 單 向 連 結 所 構 成 的 結 構 ( 參 看 圖 5-1) 連 結 起 來 的 文 件 只 是 一 部 份,Web 的 願 景 中 總 是 包 含 了 互 相 連 結 的 資 料, 內 容 的 使 用 可 以 是 透 過 呈 現 的 方 式, 或 是 根 據 不 用 的 環 境 參 考 或 操 作 可 以 想 像 中 介 層 要 求 資 訊 以 XML 的 方 式 呈 現, 呈 現 層 可 能 會 傾 向 於 透 過 AJAX 呼 叫 取 得 JSON 物 件 ; 相 同 的 名 稱 可 以 用 不 同 的 型 態 參 考 到 相 同 的 資 料 ; 用 這 種 方 式 存 取 資 料, 能 夠 建 立 擁 有 一 致 視 景 (view) 的 分 層 式 應 用 程 式, 即 使 對 資 料 的 詳 細 程 度 或 表 示 型 式 有 所 不 同 製 造 與 消 費 資 料 的 應 用 程 式 與 環 境, 透 過 這 種 鬆 耦 合 的 式 連 結, 不 再 是 簡 單 的 在 網 路 上 (on the web),

資 源 導 向 式 架 構 : 進 入 網 頁 應 用 91 而 是 在 網 路 裡 (in the web), 我 們 正 朝 向 由 資 料 組 成 的 網 路, 連 結 了 人 文 件 資 料 服 務 以 及 概 念 ( 參 看 圖 5-2) 圖 5-1:Web 的 傳 統 概 念 圖 5-2: 資 料 的 網 路

92 第 五 章 這 個 環 境 中 的 基 本 互 動 是 邏 輯 上 的 用 戶 端 - 伺 服 器 端 請 求, 我 們 擁 有 感 興 趣 資 訊 的 位 址, 名 稱 (Uniform Resource Locator,URL) 是 種 識 別 碼, 不 只 是 個 不 會 在 全 域 定 址 空 間 中 發 生 岐 義 的 讓 別 碼, 也 告 訴 我 們 如 何 解 析 請 求 ; 整 個 程 序 中 完 全 不 需 要 瞭 解 滿 足 請 求 所 需 要 的 技 術 細 節, 維 持 了 程 序 的 簡 潔 也 提 供 了 面 對 後 端 變 化 的 彈 性 即 使 我 們 最 喜 愛 的 網 站 更 換 了 應 用 伺 服 器 供 應 商, 從 靜 態 內 容 轉 換 成 從 動 態 資 料 產 生, 我 們 也 不 會 知 道 這 些 細 節 雖 然 許 多 網 站 還 無 法 完 善 處 理 請 求 過 程 中 的 內 容 交 涉 (content negotiation), 我 們 至 少 還 能 夠 拿 到 相 同 名 稱 實 體 的 不 同 呈 現 方 式, 根 據 請 求 對 象 是 電 腦 或 電 話 的 不 同, 我 們 會 期 待 取 得 不 同 型 式 的 結 果 在 稍 後 的 討 論 中, 我 們 也 會 看 到 如 何 利 用 個 特 性, 提 供 不 同 程 度 的 細 節, 滿 足 存 取 控 制 與 法 規 的 要 求 Web 上 的 命 名 綱 要 能 讓 我 們 識 別 文 件 資 料 服 務, 現 在 還 能 用 於 識 別 概 念 (concept), 我 們 曾 經 很 難 區 分 關 於 林 肯 (Abraham Lincoln ) 本 人 與 描 寫 他 文 章, 例 如 http://someserver/abrahamlincoln 可 能 表 示 任 何 一 個,W3C 技 術 架 構 組 (Technical Architecture Group, TAG) 提 供 了 一 份 建 議 書, 對 於 網 路 無 法 存 取 的 資 源 ( 那 些 不 存 在 網 路 上, 但 我 們 仍 然 感 興 趣 的 東 西 ) 能 夠 用 303 回 應 碼, 而 非 一 般 使 用 的 200 回 應 碼, 這 能 讓 用 戶 端 知 道 是 的, 你 要 求 的 東 西 合 法, 也 很 有 趣, 但 並 不 存 在 Web 上, 可 能 可 以 在 以 下 地 方 取 得 更 多 資 訊... Web 位 址 由 HTTP 協 定 的 參 考 開 始, 緊 接 著 是 能 夠 回 應 請 求 的 伺 服 器 名 稱, 接 著 則 是 應 該 能 夠 反 應 資 訊 空 間 中 路 徑 的 階 層 式 架 構 ; 這 是 表 示 某 樣 資 料 結 構 的 邏 輯 名 稱, 根 據 不 同 的 情 境, 可 以 透 過 不 同 的 路 徑 取 得 相 同 資 源 在 該 情 境 下 的 數 值,http://server/order/open 可 能 會 傳 回 特 定 時 間 未 完 成 的 訂 單 清 單, 而 http://server/order/customer/112345 可 以 表 示 特 定 客 戶 尚 未 完 成 的 訂 單 很 明 顯 這 兩 個 請 求 的 回 應 會 有 部 份 重 疊, 當 我 們 不 知 道 該 如 何 指 定 請 求 內 容 時, 可 以 採 取 較 一 般 的 路 徑, 當 我 們 想 要 查 詢 特 定 客 戶 的 狀 態 時, 則 使 用 較 直 接 的 請 求, 我 們 可 以 透 過 系 統 其 他 部 份, 或 是 根 據 使 用 者 由 使 用 介 面 輸 入 的 數 值 建 立 這 些 邏 輯 URL 參 考 將 主 要 抽 象 與 互 動 方 式 兩 個 要 素 分 離, 我 們 分 離 了 有 興 趣 討 論 的 東 西 操 作 這 些 東 西 的 方 式 以 及 選 擇 傳 送 與 取 得 的 形 式 圖 5-3 中 引 用 了 RESTWiki 討 論 的 內 容, 在 REpresentational State Transfer(REST) 的 架 構 型 式 中, 我 們 稱 為 資 源 ( 名 詞 ) 動 詞 http://lists.w3.org/archives/public/www-tag/2005jun/0039 http://rest.blueoxen.net/cgi-bin/wiki.pl?resttriangle http://en.wikipedia.org/wiki/rest

資 源 導 向 式 架 構 : 進 入 網 頁 應 用 93 以 及 回 應 的 表 現 (representation), 資 源 可 以 是 任 何 我 們 想 要 表 示 的 東 西 ( 包 含 概 念 ), 動 詞 有 GET( 取 得 ) POST/PUT( 建 立 / 更 新 ) 以 及 DELETE( 移 除 ) GET 的 限 制 是 不 會 有 任 何 副 作 用, 稱 為 冪 等 請 求 (idempotent request), 這 種 語 意 的 請 求 可 以 作 為 快 取 的 對 象 POST 通 常 用 在 請 求 本 身 沒 有 集 中 授 權 ( 例 如 送 出 新 文 章 到 Usenet 社 群 ), 或 是 還 缺 乏 定 位 資 源 所 需 資 訊 的 狀 況 ; 因 為 負 責 的 伺 服 器 應 用 程 式 負 責 建 立 訂 單 的 ID, 我 們 無 法 在 建 立 訂 單 前 加 以 識 別, 因 此, 我 們 通 常 會 向 某 些 功 能 程 式 ( 如 servlet) 送 出 請 求, 這 些 功 能 程 式 接 受 請 求 並 在 過 程 中 建 立 ID;PUT 用 於 更 新 或 覆 寫 已 經 存 在 可 以 指 明 的 資 源 DELETE 在 公 開 網 路 的 用 途 不 大, 但 在 一 個 由 內 部 控 制 資 源 導 向 式 的 環 境 中, 標 識 出 已 經 不 再 使 用 或 不 再 關 心 的 資 源, 是 管 理 資 源 生 命 週 期 很 重 要 的 部 份 REST 式 的 運 作 方 式 基 本 上 分 離 了 幾 個 要 素 : 我 們 所 關 心 資 源 的 名 稱 操 作 的 方 式 以 及 我 們 選 擇 表 現 的 形 式, 如 圖 5-3 圖 5-3:REST 要 素 分 離 這 種 要 素 分 離 與 SOAP 的 服 務 呼 叫 形 成 強 烈 的 對 比,SOAP 中 請 求 的 結 構 呼 叫 的 行 為 以 及 回 應 表 現 的 形 式 通 常 都 會 包 含 在 Web Service Definition Language(WSDL) 定 義 的 合 約 當 中 合 約 並 不 是 壞 事 : 直 到 我 們 不 想 受 到 它 的 限 制 Web Service 技 術 堆 疊 的 主 要 目 標 之 一 是 降 低 耦 合 以 及 導 入 一 個 非 同 步 處 理 模 型, 訊 息 的 處 理 程 序 能 夠 因 應 新 的 企 業 規 則 更 新, 不 會 影 響 用 戶 端 WSDL 連 結 的 方 式 考 慮 了 這 個 目 標, 但 做 法 卻 完 全 相 反 我 們 通 常 沒 辦 法 無 法 在 不 影 響 用 戶 端 的 狀 況 下 改 變 後 端 連 結 ( 這 正 是 我 們 試 著 避 免 的 狀 況 ) 資 源 導 向 的 作 法 能 讓 我 們 在 必 要 的 時 候 加 上 合 約 的 強 制 力, 但 並 不 要 求 一 定 要 這 麼 做 透 過 分 離 事 物 的 名 稱 與 我 們 接 受 的 形 式 結 構, 能 夠 重 複 使 用 相 同 的 邏 輯 名 稱 支 援 不 同 形 式 的 互 動, 不 影 響 原 有 用 戶 端 就 能 夠 升 級 後 端 如 果 目 前 所 有 用 戶 端 程 式 都 是 POST 版 本 1 的 訊 息 結 構 到 特 定 的 URL, 如 果 有 必 要 繼 續 支 援 舊 版 本 訊 息 格 式, 能 夠 在 後 端 增 加 支 援 版 本 2 格 式 訊 息 的 同 時, 繼 續 支 援 原 有 版 本 1 的 訊 息 如 果 不 再 繼 績 支 援 舊 訊 息 格

94 第 五 章 式, 也 能 夠 選 擇 不 再 支 援 的 時 間 靈 活 性 是 資 源 導 向 架 構 有 助 於 控 制 企 業 後 端 的 原 因 : 後 端 系 統 更 新 並 不 要 求 前 端 一 併 更 新, 如 果 我 們 在 舊 有 系 統 之 外 包 覆 RESTful 介 面, 就 能 夠 持 續 使 用 直 到 有 足 夠 的 企 業 理 由 改 變, 當 然 其 他 的 技 術 也 能 讓 我 們 做 類 似 的 包 覆, 但 真 正 的 差 別 是 使 用 邏 輯 名 稱 讓 我 們 更 有 可 能 避 免 中 介 層 持 續 的 改 變 在 努 力 達 成 水 平 延 展 性 方 面,RESTful 式 架 構 要 求 請 求 不 能 有 狀 態 (stateless), 這 代 表 回 覆 請 求 需 要 的 資 訊 都 來 自 於 請 求 當 中 這 讓 我 們 能 透 過 負 載 平 衡 器 (load balancer) 用 大 量 的 後 設 伺 服 器 回 應 任 何 請 求 ; 隨 著 負 載 提 高, 加 入 更 多 主 機 就 能 解 決 問 題, 任 何 主 機 都 能 夠 處 理 請 求 雖 然 延 展 性 是 這 種 架 構 的 目 標, 在 GET 語 義 上 要 求 不 含 有 狀 態 帶 來 了 另 外 一 個 重 要 的 結 果 : 我 們 可 以 開 始 設 想 快 取 任 何 請 求 的 回 應, 回 應 的 位 址 (URL 主 要 的 部 份 ) 加 上 請 求 的 完 成 狀 態 (URL 階 層 加 上 查 詢 參 數 ) 成 為 了 結 果 的 複 合 雜 湊 鍵 (compound hash key)( 例 如 資 料 庫 查 詢 轉 換 另 一 組 資 料 等 等 ), 這 些 快 取 的 好 處 需 要 付 出 代 價, 但 是 能 夠 提 供 這 種 可 能 性 的 環 境 變 成 是 想 像 得 到 的 NetKernel 資 源 導 向 式 環 境 # 的 眾 多 功 能 之 一 就 是 能 夠 充 分 利 用 這 種 好 處, 實 現 結 構 化 記 憶 *, 幾 乎 不 需 花 費 任 何 成 本, 在 資 源 導 向 式 應 用 程 式 一 節 中 看 到 更 多 相 關 的 資 訊 對 我 們 所 有 感 興 趣 的 東 西 有 一 致 的 命 名 方 式, 以 及 能 夠 讓 資 訊 依 據 不 同 的 時 間 與 環 境 用 不 用 型 式 呈 現 的 邏 輯 請 求 程 序, 我 們 幾 乎 擁 有 了 引 領 組 織 資 訊 管 理 所 需 的 基 礎 架 構 我 們 需 要 的 最 後 一 個 工 具 是 表 示 所 處 理 東 西 後 設 資 料 的 能 力, 這 需 要 資 源 描 述 框 架 (Resource Description Framework,RDF), 這 個 W3C 的 建 議 書 使 用 了 圖 模 型 (graph model), 能 夠 對 我 們 的 命 名 實 體 (named entity) 提 供 開 放 式 資 訊 表 示, 由 誰 建 立? 何 時 建 立? 什 麼 內 容? 與 什 麼 有 關? 對 已 存 在 於 關 連 式 資 料 庫 中 資 料 的 命 名 與 定 址 能 力 讓 我 們 能 夠 描 述 任 何 需 要 的 資 料, 不 需 要 轉 換 到 新 的 形 式 這 是 大 眾 的 預 期, 卻 也 是 對 RDF 最 常 見 的 抱 怨, 因 為 在 實 務 上 RDF 撐 不 住 這 樣 的 應 用 我 們 通 常 將 資 料 留 在 原 處, 在 其 他 更 有 意 義 的 層 級 加 以 整 合 以 下 的 清 單 中, 列 出 了 一 部 份 RDF 的 N3 表 示, 描 述 了 建 立 者 書 名 版 權 日 期 以 及 特 定 資 源 的 相 關 授 權 這 些 範 例 使 用 了 Dublin Core metadata Initiative 的 三 個 詞 彙 (term) # http://1060.org * http://en.wikipedia.org/wiki/memoization http://dublincore.org

資 源 導 向 式 架 構 : 進 入 網 頁 應 用 95 以 及 一 個 來 自 Creative Commons 社 群 的 詞 彙, 我 們 能 夠 自 由 使 用 任 何 存 來 的 字 彙, 或 是 依 各 自 需 要 建 立 新 的 詞 彙 : @prefix dc: <http://purl.org/dc/elements/1.1/>. @prefix cc: <http://creativecommons.org/ns/>. <http://bosatsu.net/team/brian/index.html> dc:creator <http://purl.org/people/briansletten>. <http://bosatsu.net/team/brian/index.html> dc:title "Brian Sletten's Homepage". <http://bosatsu.net/team/brian/index.html> dc:datecopyrighted "2008-04-26T14:22Z". <http://bosatsu.net/team/brian/index.html> cc:license <http://creativecommons.org/licenses/by-nc/3.0/>. 我 們 現 在 不 只 能 夠 使 用 任 何 詞 彙, 也 能 夠 加 入 新 詞 與 關 係, 不 會 影 響 任 何 現 存 的 關 係 這 種 不 需 要 綱 要 的 方 法 對 於 曾 經 修 改 過 XML 或 RDBMS 綱 要 的 人 十 分 有 吸 引 力 這 也 代 表 了 這 種 資 料 模 式 能 夠 適 應 無 法 避 免 的 社 交 程 序 以 及 技 術 變 化 RDF 應 該 存 在 第 三 方 或 其 他 資 料 庫, 透 過 SPARQL 或 類 似 語 言 查 詢, 大 多 數 支 援 語 意 的 容 器, 現 在 都 能 夠 支 援 這 種 儲 存 與 查 詢 RDF 的 方 式, 例 如 Mulgara Semantic Store the Sesame Engine the Talis Platform# 以 及 Oracle 10g 之 後 的 版 本 可 以 使 用 樣 式 配 對 條 件 (pattern-matching criteria) 選 擇 圖 中 的 節 點 (Node), 我 們 可 以 對 資 源 提 出 誰 建 立 這 個 URL? 顯 示 所 有 Brian 曾 經 建 立 的 東 西 或 找 出 過 去 六 個 月 中 所 有 採 用 Creative commons 授 權 的 著 作 等 問 題 曾 經 建 立 採 用 授 權 等 詞 彙 是 用 相 關 詞 彙 表 示, 但 很 容 易 就 能 根 據 表 達 的 目 的 轉 換 資 料 模 型 的 靈 活 度 加 上 表 達 能 力 豐 富 的 查 詢 語 言, 讓 描 述 找 尋 與 呼 叫 RESTful 服 務 的 使 用 十 分 直 接, 比 起 透 過 UDDI 這 類 遲 鈍 高 阻 抗 的 技 術 來 找 尋 與 使 用 服 務 要 舒 服 得 多 有 了 找 尋 與 解 析 任 何 服 務 的 能 力, 以 及 用 不 同 方 式 取 得 與 在 開 放 世 界 (Open World) 中 用 混 合 語 言 描 述 的 能 力, 我 們 能 夠 將 這 些 概 念 應 用 在 企 業 環 境, 接 下 來 將 介 紹 一 個 資 訊 導 向 的 架 構, 能 夠 使 用 在 文 件 網 上 (Web of documents) 上 沖 浪 的 方 式 在 資 料 網 (web of data) 上 沖 浪 http://creativecommons.org/ns http://mulgara.org http://openrdf.org # http://talis.com

96 第 五 章 資 源 導 向 式 架 構 資 源 導 向 式 架 冓 的 特 色 是 向 擁 有 名 稱 的 資 源 發 出 邏 輯 請 求 的 程 序 這 些 請 求 透 過 引 擎 解 析, 轉 換 資 源 實 際 的 呈 現 方 式 ( 例 如 HTML 網 頁 XML 文 件 JSON 物 件 等 等 ), 參 看 圖 5-4 圖 5-4: 資 源 導 向 式 架 構 圖 中 描 述 了 資 源 導 向 式 架 構 (resource-oriented architecture,roa) 的 基 本 互 動 型 式 邏 輯 請 求 會 透 過 資 源 導 向 引 擎 命 名 解 析, 並 轉 換 回 請 求 者 要 求 的 型 式 被 指 名 的 資 源 很 可 能 被 解 析 成 資 料 庫 查 詢 或 某 種 管 理 資 源 型 式 的 功 能 ( 例 如 其 他 的 RESTful 服 務 ), 回 應 請 求 的 可 能 是 servlet Restlet* NetKernel 模 組 或 其 他 可 以 定 址 回 應 請 求 的 功 能, 這 些 與 對 資 訊 有 興 趣 的 人 沒 什 麼 關 係 這 種 邏 輯 化 的 步 驟 隱 藏 了 由 許 多 可 能 性 與 技 術 選 擇 的 世 界, 不 會 洩 漏 任 何 不 必 要 的 細 節, 雖 然 無 法 支 援 所 有 的 互 動 型 式, 但 你 會 對 URI 適 合 的 眾 多 種 類 與 型 式 感 到 驚 訝 考 慮 網 址 http://server/getemployees&type=salaried, 很 多 人 建 立 了 這 種 型 式 的 URL 就 覺 得 是 在 做 REST, 不 幸 這 並 不 是 個 好 的 REST 名 稱 ( 某 些 Rest 純 粹 主 義 者 會 說 這 根 本 不 是 REST!), 因 為 它 把 名 詞 與 動 詞 混 在 一 起, 我 偏 愛 把 這 種 形 式 稱 為 用 URL 定 址 行 為 或 是 用 URL 做 RPC,REST 式 分 離 名 詞 與 動 詞 的 作 法 並 不 神 奇 ; 只 是 讓 我 們 能 夠 辨 識 出 關 心 的 事 情, 之 前 的 網 址 無 法 重 複 使 用 在 更 新 員 工 清 單 的 情 況, 因 為 對 /getemployees POST 員 工 資 料 並 沒 有 任 何 意 義 ; 相 反 地, 如 果 使 用 的 URL 是 http://server/employee/salaried, 那 麼 GET 請 求 會 傳 回 相 同 的 資 料, 但 相 同 的 網 址 卻 適 用 於 企 業 中 的 支 領 薪 水 的 員 工 概 念, 而 http://server/employee/hourly 能 夠 代 表 支 領 時 薪 * http://restlet.org

資 源 導 向 式 架 構 : 進 入 網 頁 應 用 97 的 員 工, 因 為 這 些 資 源 代 表 了 後 台 資 料 庫 查 詢, 我 們 並 不 會 更 新 這 些 資 訊 資 源, 然 而, 這 構 成 了 /employee 資 訊 空 間, 能 夠 提 供 其 他 的 瀏 覽 方 式 http://server/employee/12345678 代 表 了 特 定 ID 的 員 工, 而 http://server/employee 可 能 代 表 所 有 員 工,POST 記 錄 到 這 個 URL 可 能 代 表 了 雇 用 某 個 新 員 工,PUT 一 筆 資 料 到 特 定 員 工 ID 的 URL 代 表 了 在 員 工 轉 移 升 等 之 後 修 改 資 料,DELETE 相 同 的 位 址 可 能 表 示 企 業 對 該 員 工 的 資 料 不 再 感 到 興 趣 ( 可 能 是 員 工 離 職 或 解 雇 ) 這 突 出 了 REST 與 SOAP 之 間 主 要 的 區 別, 當 人 們 混 淆 了 兩 者 的 目 的 時 很 容 易 搞 混 ; SOAP 是 個 適 合 呼 叫 行 為 的 技 術, 但 作 為 管 理 資 訊 的 工 具 則 有 所 不 足,REST 適 合 管 理 資 訊, 而 非 透 過 URL 呼 叫 特 定 的 行 為 當 人 們 開 始 抱 頭 思 索, 懷 疑 單 單 依 靠 四 個 動 詞 是 否 能 夠 完 成 所 有 的 目 的 時, 可 能 不 是 從 資 訊 的 角 度, 而 是 從 呼 叫 行 為 的 角 度 思 考 如 果 你 只 是 透 過 URL 進 行 RPC, 那 SOAP 就 能 夠 符 合 需 求 ; 如 果 是 將 重 要 企 業 資 訊 視 作 可 定 址 的 資 訊 資 源, 能 夠 操 作 與 依 據 環 境 與 不 同 的 型 式 表 現, 那 你 就 是 利 用 REST 的 優 點, 同 時 可 能 會 看 到 與 Web 類 似 的 優 點 ; 即 使 是 使 用 SOAP 滿 足 請 求 的 後 台 系 統, 也 能 夠 從 RESTful 介 面 得 到 好 處, 不 僅 能 夠 能 夠 提 供 讓 使 用 者 在 資 料 上 沖 浪 的 定 址 方 式, 也 引 進 了 快 速 結 果 或 消 除 因 為 更 改 WSDL 約 定 造 成 痛 苦 的 可 能 性 用 戶 端 能 夠 將 邏 輯 上 的 耦 合, 轉 換 為 SOAP 訊 息 與 產 生 的 回 應 ; 再 將 回 應 的 內 容 依 據 最 後 結 果 的 需 要 加 以 修 正, 完 全 不 需 要 公 開 這 些 細 節, 就 能 夠 從 過 程 中 實 現 架 構 轉 移 的 策 略 如 同 圖 5-5 中 顯 示, 相 同 指 名 的 資 源 可 能 會 在 不 同 的 情 境 回 傳 不 同 的 實 體 格 式, 同 時 維 持 相 同 的 識 別 碼 我 們 可 以 想 像 某 種 型 式 的 企 業 報 表, 組 織 成 能 夠 透 過 時 間 ( 如 年 和 月 ) 瀏 覽 的 資 訊 空 間 如 果 只 有 一 種 報 表, 那 http://server/report/2008/02 的 表 示 方 式 就 夠 好, 能 夠 長 期 使 用 的 名 稱 ; 未 來 無 論 任 何 時 候 都 不 會 改 變 有 一 份 2008 年 二 月 份 報 表 的 事 實, 在 某 些 情 境 下 會 需 要 用 XML 的 形 式 存 取 資 料, 其 他 時 候 可 能 會 需 要 Excel 試 算 表 或 是 包 含 摘 要 的 JPEG 報 表 影 像 檔 我 們 希 望 能 在 這 種 不 同 的 情 境 下 都 使 用 相 同 的 名 稱, 所 以 利 用 了 內 容 協 商 過 程 來 表 示 對 結 果 的 偏 好 資 源 導 向 式 引 擎 必 須 知 道 如 何 回 應 各 種 不 同 的 請 求 類 型, 這 很 容 易 就 能 做 得 到 以 後 可 能 會 出 現 其 他 現 有 用 戶 端 還 不 支 援 的 新 資 料 格 式, 用 戶 端 並 不 需 要 因 為 伺 服 器 端 支 援 新 格 式 而 改 變,Web 架 構 設 計 中 所 包 含 的 可 靠 度, 正 是 我 們 希 望 企 業 環 境 中 也 能 夠 擁 有 的 優 點 ; 用 戶 端 與 伺 服 器 端 在 解 析 過 程 中 對 被 指 名 的 資 源 協 商 特 定 的 呈 現 格 式, 這 能 讓 命 名 相 同 的 資 源, 根 據 不 同 的 情 境 用 不 同 的 呈 現 結 構 ( 例 如, 在 中 介 層 使 用 XML 在 瀏 覽 器 則 使 用 JSON 等 等 ) 伺 服 器 也 可 以 快 取 各 種 不 同 格 式 的 結 果

98 第 五 章 圖 5-5: 資 源 導 向 格 式 中 的 內 容 協 商 除 了 在 解 析 請 求 過 程 中 依 據 情 境 決 定 實 際 呈 現 的 格 式 之 外, 也 能 夠 讓 伺 服 器 依 照 使 用 者 的 識 別 碼 呼 叫 的 應 用 程 式 等 資 料, 決 定 回 傳 的 資 料 內 容 細 節, 我 們 可 以 想 像 支 援 中 心 客 服 人 員 使 用 的 應 用 程 式, 為 了 解 決 問 題 需 要 存 取 較 多 敏 感 性 資 料, 包 含 社 會 安 全 碼 (Social Security number) 信 用 卡 號 碼 ( 希 望 只 有 最 後 四 碼 ) 地 址 等 等 這 類 需 要 允 許 客 服 人 員 存 取 資 訊 的 特 殊 業 務 需 求, 可 以 透 過 宣 告 式 政 策 支 援, 相 同 員 工 在 不 同 情 境 使 用 不 同 的 應 用 程 式 ( 例 如 行 銷 分 析 套 件 ) 時, 可 能 沒 有 存 取 敏 感 資 訊 的 業 務 需 要, 但 可 能 仍 然 需 要 解 析 相 同 客 戶 的 資 訊, 取 得 統 計 資 料 與 購 買 記 錄 在 這 種 情 境 並 不 需 要 存 取 敏 感 性 資 料, 能 夠 透 過 自 動 篩 選 器 移 除 或 加 密 敏 感 資 訊, 這 些 決 策 是 根 據 接 下 來 會 需 要 那 些 資 料, 加 密 後 的 資 料 需 要 透 過 解 密 金 鑰 存 取, 會 成 為 另 一 個 管 理 負 擔 的 來 源 ; 只 在 需 要 的 時 候 包 含 敏 感 性 資 料 會 簡 單 得 多 傳 統 企 業 結 構 中, 管 理 單 點 的 存 取 控 制 並 不 是 太 大 的 問 題, 然 而, 對 於 持 續 出 現 的 流 程, 明 確 塑 模 的 業 務 程 序 等 等, 有 充 分 理 由 認 為 應 用 程 式 的 使 用 者 會 在 多 個 不 用 情 境 呼 叫 相 同 的 服 務 或 能 力 如 果 我 們 在 兩 個 系 統 間 傳 送 實 際 資 料, 應 用 程 式 開 發 人 員 就 必 須 負 責, 知 道 跨 應 用 程 式 的 存 取 控 制 問 題, 相 反, 如 果 我 們 傳 送 的 是 資 料 的 參 考, 初 始 程 式 就 不 需 要 負 責 存 取 控 制, 能 夠 採 用 資 訊 導 向 集 中 存 取 控 制 策 略 許 多 現 有 的 SOA 系 統 採 用 使

資 源 導 向 式 架 構 : 進 入 網 頁 應 用 99 用 者 識 別 或 角 色 的 方 式 限 制 存 取 服 務, 但 很 有 少 支 援 服 務 間 傳 送 的 資 料 的 存 取 控 制, 這 個 限 制 也 造 成 傳 統 web service 容 易 誤 解 與 安 全 性 的 不 足 存 取 策 略 應 該 同 時 應 用 在 情 境 中 的 行 為 與 資 料, 但 這 必 須 要 能 夠 命 名 情 境 中 的 資 料 才 能 夠 做 得 到 當 人 們 剛 開 始 研 究 資 源 導 向 架 構 時, 很 在 意 在 連 結 中 暴 露 出 敏 感 資 料 的 問 題, 從 背 景 的 透 明 (opaque) 查 詢 傳 回 資 料 區 塊 似 乎 更 加 安 全 人 們 對 於 根 據 情 境 分 離 資 料 識 別 與 解 析 有 所 困 難, 情 境 包 含 了 足 夠 的 資 訊 決 定 是 否 該 對 特 定 使 用 者 產 生 資 訊, 與 請 求 本 身 正 交, 能 夠 透 過 企 業 中 原 先 使 用 的 認 證 與 授 權 系 統 完 成, 從 HTPP Basic Auth 到 IBM 的 Tivoli Access Manager OpenID 或 其 他 聯 邦 式 識 別 系 統 都 能 夠 用 來 保 護 資 料 我 們 能 夠 監 控 誰 存 取 了 那 些 資 料, 也 能 夠 使 用 一 階 或 二 階 SSL 加 密 傳 輸 過 程, 擁 有 定 位 能 力 並 不 代 表 暴 露 出 危 險, 事 實 上, 傳 遞 參 考 比 傳 遞 資 料 更 加 安 全, 資 源 導 向 式 的 方 式 並 不 會 因 為 少 了 複 雜 的 安 全 性 功 能 ( 例 如 XML 加 密 XML 簽 證 XKMS XACML WS-Security WS-Trust XrML 等 等 ) 而 降 低 了 安 全 性, 反 而 可 能 更 加 安 全, 因 為 人 們 能 夠 真 正 瞭 解 威 脅 模 型 (threat model) 以 及 如 何 採 用 保 護 策 略 當 我 們 面 對 需 要 說 明 符 合 法 規 要 求 這 個 令 人 生 畏 又 十 分 嚴 肅 的 事 實 時, 這 些 想 法 十 分 重 要 ; 信 用 卡 公 司 醫 療 監 控 組 織 企 業 稽 核 部 門 等 等 露 出 獠 牙, 要 求 提 供 只 有 工 作 需 要 存 取 敏 感 資 訊 的 員 工 能 夠 看 到 這 些 資 訊, 即 使 你 的 企 業 符 合 規 定, 如 果 很 難 證 明 ( 首 先, 看 看 這 個 系 統 上 的 日 誌 記 錄, 然 後 再 追 蹤 訊 息 經 過 這 些 中 介 層, 決 定 要 使 用 那 個 查 詢 命 令, 就 像 你 在 這 個 日 誌 裡 看 到 的 內 容... ), 整 個 程 序 會 十 分 昂 貴, 對 於 解 析 邏 輯 參 考 的 過 程 使 用 宣 告 式 存 取 控 制 權 限, 能 夠 明 確 表 示 那 些 人 在 何 時 知 道 那 些 東 西 資 源 導 向 式 應 用 程 式 一 但 企 業 擺 脫 了 資 料 難 以 定 址 的 麻 煩, 除 了 讓 後 端 系 統 能 夠 快 取 結 果 之 外, 還 能 夠 謹 慎 轉 移 到 其 他 新 技 術 特 別 是, 能 夠 導 入 全 新 類 型 的 資 料 導 向 式 應 用 程 式 與 整 合 策 略, 當 我 們 能 夠 指 名 資 料, 以 適 用 於 應 用 程 式 的 方 式 存 取, 在 資 料 探 索 企 業 智 慧 以 及 知 識 管 理 等 方 面, 我 們 能 夠 達 到 讓 大 多 數 分 析 師 眼 睛 一 亮 的 程 度 由 W3C 與 MIT CSAIL 組 合 作 的 The Smile Project 已 經 對 這 些 概 念 達 成 了 許 多 成 果, 展 示 了 能 夠 帶 來 的 前 景 http://smile.mit.edu

100 第 五 章 考 慮 追 蹤 在 網 路 流 量 與 銷 售 上 多 種 行 銷 策 略 效 率 的 情 境, 我 們 可 能 需 要 從 試 算 表 資 料 庫 日 誌 記 錄 檔 或 網 頁 分 析 軟 體 的 報 表 中 取 得 資 料, 雖 然 現 在 將 這 些 資 料 結 合 並 不 需 要 先 進 科 技, 在 找 尋 請 求 轉 換 與 重 新 發 佈 結 果 上 仍 然 需 要 大 量 工 作 如 果 單 單 只 是 用 電 子 郵 件 寄 出 試 算 表 摘 要, 以 後 需 要 這 些 結 果 時, 就 得 一 再 從 堆 積 大 量 電 子 郵 件 的 收 件 匣 裡 尋 找 採 用 其 他 能 夠 連 結 的 CMS 或 文 件 管 理 系 統 則 會 增 加 產 生 結 果 需 要 的 時 間, 不 論 產 生 這 些 報 表 的 頻 率 為 何, 每 次 都 必 須 重 複 相 同 的 程 序 在 資 源 導 向 式 架 構 中, 我 們 能 夠 定 址 各 種 資 料 元 素, 要 求 取 得 易 於 瀏 覽 器 環 境 使 用 的 JSON 檔 案, 結 合 Smile 的 Exhibit 專 案 以 及 Timeline view 幾 乎 能 夠 提 供 我 們 需 要 的 能 力, 花 費 一 些 力 氣 將 Excel 試 算 表 轉 換 為 JSON 物 件, 就 擁 有 一 個 能 重 複 使 用 的 環 境, 只 需 要 數 秒 的 時 間, 就 能 夠 產 生 與 重 新 發 佈 這 些 行 銷 報 表 想 想 相 同 的 基 礎 架 構 所 能 夠 提 供 的 能 力, 能 夠 簡 單 的 結 合 其 他 形 式 的 資 料 產 生 不 同 型 式 的 分 析 與 報 表, 你 也 能 夠 開 始 理 解 可 定 址 資 料 網 路 的 價 值, 這 種 型 式 的 環 境 正 在 企 業 中 出 現, 如 果 你 的 組 織 還 無 法 這 麼 容 易 的 結 合 各 種 資 料, 應 該 要 能 夠 做 得 到 應 用 資 源 導 向 式 架 構 最 近, 我 在 我 的 公 司 重 新 架 構 Presistent URL(PURL) 系 統 過 程 中, 建 立 了 一 個 資 源 導 向 式 系 統, 原 有 的 PURL 實 作 大 約 是 15 年 前 的 成 果, 是 Apache 1.0 的 分 析 版 本, 用 C 語 言 撰 寫, 反 映 了 當 時 的 技 術 水 準 # 它 從 那 時 候 開 始 一 直 是 網 際 網 路 基 礎 架 構 一 個 穩 定 的 部 份, 但 逐 漸 呈 現 老 態 需 要 模 組 化, 特 別 是 支 援 W3C TAG 的 303 號 建 議 書, 以 及 支 援 更 高 的 使 用 負 載 大 多 數 存 取 的 資 料 都 是 透 過 靜 態 網 頁 或 簡 單 的 CGI 命 令 稿 達 成, 因 為 瀏 覽 器 是 當 時 唯 一 需 要 服 務 的 對 象 隨 著 我 們 開 始 瞭 解 Semantic Web 生 命 科 學 出 版 業 以 及 類 似 社 群 中 需 要 持 續 不 變 唯 一 的 識 別 碼, 我 們 知 道 重 新 思 考 架 構, 讓 它 對 人 類 與 軟 體 都 更 有 用 的 時 候 到 了 PURL 系 統 是 設 計 來 減 緩 好 的 名 稱 與 可 解 析 名 稱 間 的 緊 張 關 係, 任 何 曾 經 在 Web 上 發 佈 內 容 的 人 都 知 道, 內 容 移 動 會 破 壞 連 結 Persistent URL 是 指 將 良 好 邏 輯 化 的 名 稱 對 應 http://smile.mit.edu/exhibit http://smile.mit.edu/timeline http://purl.org # 程 式 碼 成 為 非 常 成 功 的 TinyURL(http://tinyurl.com) 服 務 的 基 礎

資 源 導 向 式 架 構 : 進 入 網 頁 應 用 101 到 可 解 析 的 位 例, 例 如,PURL 可 以 定 義 成 將 http://purl.org/people/briansletten 指 向 http://bosatsu.net/foaf/brian.rdf 以 及 代 表 參 看 的 303 回 應 碼 我 並 不 是 能 夠 由 網 路 定 址 的 資 源, 但 我 朋 友 的 朋 友 (Friend of a Friend,FOAF) 檔 案 * 是 個 能 夠 找 到 與 我 相 關 訊 息 的 地 方, 我 能 夠 將 這 個 連 結 傳 給 任 何 想 要 連 到 我 的 FOAF 檔 案 的 人, 如 果 我 轉 到 了 其 他 公 司, 能 夠 修 改 PURL 指 向 新 的 FOAF 檔 案 位 址, 所 有 現 存 的 連 結 能 夠 持 續 運 作, 只 是 會 303 到 新 的 實 體 位 址, 圖 5-6 說 明 了 這 個 過 程,PURL 系 統 實 作 了 W3C TAG 的 建 議 : 使 用 303 回 應 碼 為 無 法 網 路 定 址 的 資 源 提 供 更 多 訊 息 圖 5-6:PURL 參 看 重 新 導 向 除 了 支 援 PURL 重 新 導 向 之 外, 我 們 也 想 讓 PURL 系 統 中 所 有 的 主 要 資 料 成 為 可 定 址 訊 息 資 源 (addressable information resource), 這 不 僅 能 夠 簡 化 與 使 用 者 介 面 間 的 互 動, 也 允 許 資 料 以 原 先 計 畫 之 外 的 方 式 重 複 使 用 操 作 這 些 資 源 必 須 擁 有 所 有 者 的 憑 證, 但 任 何 人 都 能 夠 從 PURL 系 統 取 得 這 些 資 料 的 定 義 ; 能 夠 直 接 解 析 到 特 定 的 PURL, 例 如 http://purl.org/employee/briansletten( 會 傳 回 303 重 新 導 向 碼 ), 或 是 PURL 資 源 的 間 接 RESTful 位 址 http://purl.org/admin/purl/employee/briansletten, 能 夠 傳 回 PURL 的 定 義, 目 前 看 起 來 是 像 這 樣 : <purl status="1"> <id>/employee/briansletten</id> <type>303</type> <maintainers> <uid>brian</uid> </maintainers> <seealso> <url>http://bosatsu.net/foaf/brian.rdf</url> </seealso> </purl> * http://foaf-project.org

102 第 五 章 PURL 伺 服 器 的 用 戶 能 夠 瀏 覽 資 料 定 義, 找 尋 特 定 PURL 資 源 的 相 關 資 訊 而 不 需 要 進 行 解 析 不 需 撰 寫 任 何 程 式 碼 就 能 夠 取 得 這 些 資 訊, 能 夠 在 瀏 覽 器 中 觀 看, 或 是 由 命 令 列 的 curl 指 令 取 得 所 以, 可 以 撰 寫 命 令 稿 使 用 資 源 中 的 資 料, 檢 查 PURL 端 點 是 否 指 向 有 效 位 址, 傳 回 合 理 的 結 果 ; 如 果 不 是, 就 根 據 PURL 內 容 找 出 訊 息 所 有 者, 透 過 電 子 郵 件 發 送 通 知 訊 息 可 定 址 存 取 的 資 料, 因 其 方 便 與 實 用 性, 可 以 通 過 各 種 不 同 方 式 使 用 : 命 令 稿 應 用 程 式 以 及 桌 面 元 件 有 趣 的 完 整 故 事 是, 最 初 的 版 本 中 並 不 支 援 JSON 的 請 求 格 式, 這 讓 使 用 AJAX 的 使 用 者 介 面 更 加 複 雜, 人 們 並 不 太 喜 歡 在 JavaScript 中 處 理 XML, 即 使 我 們 在 內 部 使 用 XML 格 式, 也 應 該 要 不 怕 麻 煩 提 供 瀏 覽 器 能 夠 剖 析 的 JSON 格 式 你 可 以 相 信 我 們 很 快 就 會 修 正 這 個 問 題, 如 果 我 們 一 開 始 就 做 對, 會 有 很 好 的 開 始, 雖 然 你 並 不 需 要 一 開 始 就 支 援 所 有 的 格 式, 但 對 現 代 的 環 境 而 言, 同 時 支 援 XML 與 JSON 是 個 很 好 的 開 始 另 一 個 有 趣 的 補 充 是, 對 於 目 前 介 紹 的 架 構, 能 夠 透 過 多 種 不 同 的 伺 服 器 或 工 具 達 成, 任 何 能 夠 回 應 HTTP 請 求 的 工 具 都 能 夠 作 為 PURL 伺 服 器, 如 同 圖 5-7 任 何 web 伺 服 器 或 應 用 程 式 伺 服 器 都 能 夠 作 為 簡 單 的 資 源 導 向 引 擎, 邏 輯 的 HTTP 請 求 能 夠 將 請 求 解 譯 為 servlet Restlet 或 其 他 類 似 可 定 址 的 函 數 圖 5-7: 簡 單 的 資 源 導 向 架 構 因 為 內 含 資 源 導 向 架 構 以 及 雙 重 授 權, 能 夠 用 在 開 放 原 始 碼 與 商 業 專 案, 我 們 選 擇 了 NetKernel 作 為 架 構 的 基 礎 ; 軟 體 架 構 中 採 用 了 不 同 的 呈 現 方 式 實 現 各 層 之 間 耦 合 的 想 法, 提 供 了 相 似 的 彈 性 延 展 性 與 簡 單 的 結 構 各 層 間 透 過 非 同 步 解 析 的 邏 輯 名 稱 連 結, 深 層 的 資 源 導 向 架 構 如 同 圖 5-8 因 為 NetKernel 在 內 部 採 用 了 邏 輯 上 相 連 資 源 的 概 念, 能 將 外 部 HTTP 的 邏 輯 請 求 轉 換 為 其 他 邏 輯 請 求, 讓 它 成 為 一 個 很 有 趣 的 軟 體 基 礎 架 構, 將 Web 的 特 性 呈 現 在 軟 體 環 境 的 執 行 期 當 中

資 源 導 向 式 架 構 : 進 入 網 頁 應 用 103 圖 5-8: 深 層 資 源 導 向 式 架 構 外 部 URL http://purl.org/employee/briansletten 透 過 重 寫 (rewrite) 對 應 到 稱 為 存 取 元 (accessor) 的 功 能, 存 取 元 位 於 能 夠 輸 出 外 部 公 開 URI, 形 成 位 址 空 間 的 模 組 當 中 ; 這 帶 來 的 好 處 是 只 要 修 改 重 寫 規 則 指 向 新 的 實 作, 就 能 夠 快 速 更 換 新 版 本 模 組, 使 用 新 的 實 作 技 術, 只 要 回 應 格 式 相 容, 用 戶 端 並 不 需 要 知 道 這 些 細 節, 這 種 彈 性 類 似 於 現 代 物 件 導 向 式 語 言 使 用 介 面 的 方 式, 但 物 件 導 向 式 語 言 在 介 面 上 仍 然 有 實 際 的 限 制 ; 利 用 邏 輯 層 連 結, 我 們 仍 然 需 要 支 援 現 有 用 戶 端 的 預 期, 但 除 此 之 外, 並 沒 有 對 任 何 特 定 的 實 作 細 節 有 所 耦 合, 這 和 在 Web 上 透 過 URI 通 訊 擁 有 相 同 的 價 值, 但 卻 是 執 行 在 本 地 端 的 軟 體 之 中! 我 們 在 內 部 使 用 Command Pattern, 實 作 請 求 方 法 類 型 的 存 取 元,HTTP GET 方 法 會 對 應 到 不 保 存 狀 態 的 GetResourceCommand, 收 到 請 求 時, 我 們 找 出 並 執 行 對 應 的 命 令, 不 需 要 在 命 令 實 體 (command instance) 中 維 護 狀 態 資 訊, 如 同 下 列 程 式 碼, 能 夠 透 過 環 境 實 體 (context instance) 取 得 請 求 狀 態, 對 Java 開 發 人 員 來 說 程 式 碼 十 分 直 接, 我 們 呼 叫 Java 物 件 的 方 法, 捕 抓 例 外 ; 需 要 特 別 強 調 的 是 使 用 了 IURAspect 介 面, 本 質 上 我 們 並 不 在 意 資 源 型 式, 可 以 是 DOM 實 體 JDOM 實 體 字 串 或 是 位 元 組 陣 列 (byte array); 對 我 們 的 目 的 而 言 這 並 不 重 要, 基 礎 建 設 會 將 資 源 轉 換 為 透 過 後 設 資 訊 註 冊 的 位 元 串 流 (bytestream), 再 傳 送 為 請 求 的 回 應 如 果 我 們 想 要 用 基 礎 建 設 支 援 的 特 定 格 式, 只 需 要 要 求 使 用 該 型 式 就 行 了, 這 種 宣 告 式 資 源 導 向 的 方 法 能 夠 大 量 減 少 操 作 資 料 需 要 的 程 式 碼, 能 讓 我 們 用 正 確 的 工 具 做 正 確 的 事 : http://docs.1060.org/docs/3.3.0/book/gettingstarted/doc_intro_code_accessor.html http://en.wikipedia.org/wiki/command_pattern

104 第 五 章 if(resstorage.resourceexists(context, uriresolver)) { IURAspect asp = resstorage.getresource(context, uriresolver); // Filter the response if we have a filter if (filter!=null) { asp = filter.filter(context, asp); } // Default response code of 200 is fine IURRepresentation rep = NKHelper.setResponseCode(context, asp, 200); rep = NKHelper.attachGoldenThread(context, "gt:" + path, rep); retvalue = context.createresponsefrom(rep); retvalue.setcacheable(); retvalue.setmimetype(nkhelper.mime_xml); } else { IURRepresentation rep = NKHelper.setResponseCode(context, new StringAspect("No such resource: " + uriresolver.getdisplayname(path)), 404); retvalue = context.createresponsefrom(rep); retvalue.setmimetype(nkhelper.mime_text); } 大 多 數 訊 息 資 源 對 GET 請 求 都 會 回 應 200, 顯 示 PURL 會 覆 蓋 了 這 種 行 為, 可 能 回 傳 302 303 307 404 等 等, 我 們 研 究 resstorage.getresource() 中 PURL 式 的 實 作 時, 可 以 看 到 資 添 導 向 式 有 趣 的 地 方 : INKFRequest req = context.createsubrequest("active:purl-storage-query-purl"); req.addargument("uri", uri); IURRepresentation res = context.issuesubrequest(req); return context.transrept(res, IAspectXDA.class); 基 本 上, 我 們 透 過 active:purl-storage-query-purl URI 送 出 邏 輯 請 求, 以 ffcpl:/purl/ employee/briansletten 作 為 參 數 不 需 要 在 意 這 些 不 尋 常 的 URI 格 式, 這 只 是 NetKernel 用 來 表 示 內 部 請 求 的 格 式, 我 們 並 不 知 道 取 得 請 求 格 式 的 PURL 需 要 執 行 那 些 程 式 碼, 事 實 上 我 們 也 不 在 意 在 資 源 導 向 式 環 境 中, 我 們 只 是 說 回 應 這 個 URI 的 東 西 會 產 生 我 需 要 的 回 應, 我 們 能 夠 在 設 計 階 段 回 應 靜 態 檔 案, 加 快 專 案 的 進 展, 之 後 再 對 關 連 式 資 料 庫 建 立 如 Hibernate 的 對 應 重 新 撰 寫 回 應 active:purl-storage-query-purl URI 就 能 夠 達 成 轉 換, 即 使 我 們 改 變 了 PURL 的 解 析 方 式, 區 分 出 本 地 實 體 層 與 遠 端 讀 取, 用 戶 端 也 不 需 要 在 意 這 是 我 們 曾 經 提 到 的 好 處, 透 過 強 大 的 軟 體 環 境, 實 現 了 資 源 導 向 式 企 業 運 算 架 構 我 們 不 只 用 這 種 方 式 實 現 了 各 層 間 的 鬆 耦 合, 這 樣 的 環 境 中 還 有 與 狀 態 無 關 的 請 求 所 帶 來 的 好 處 之 前 取 得 PURL 定 義 的 程 式 碼, 在 內 部 被 展 開 為 對 URI active:purl-storage-

資 源 導 向 式 架 構 : 進 入 網 頁 應 用 105 query-purl+uri@ffcpl:/purl/employee/briansletten 的 非 同 步 排 程 請 求 如 同 之 前 的 討 論, 這 成 為 複 合 的 雜 湊 鍵 值, 代 表 了 查 詢 永 續 層 的 結 果, 即 使 我 們 不 知 道 後 端 呼 叫 了 那 些 程 式 碼,NetKernel 仍 然 可 以 快 取 這 些 結 果, 這 就 之 前 提 過 的 架 構 化 記 憶 (architectural memoization) 雖 然 實 際 上 的 程 序 包 含 了 較 多 的 結 節, 但 概 念 上 就 是 這 樣 不 論 是 透 過 內 部 或 外 部 的 HTTP RESTful 介 面 解 析 相 同 的 PURL, 都 能 夠 從 快 取 中 取 得 結 果, 對 於 那 些 在 自 己 的 網 頁 上 架 上 快 取 的 人 來 說, 這 並 不 吸 引 人, 但 如 果 你 深 入 思 考, 這 實 際 上 十 分 令 人 佩 服, 所 有 可 能 的 URI 請 求 都 能 用 這 種 方 式 快 取, 不 論 是 從 磁 碟 機 讀 取 檔 案 由 HTTP 讀 取 內 容 利 用 XSLT 轉 換 XML 文 件 或 是 計 算 10,000 位 數 的 pi 值 這 些 動 作 都 是 透 過 邏 輯 化 無 狀 態 非 同 步 的 結 果 完 成, 每 個 結 果 都 可 以 快 取 這 種 資 源 導 向 架 構 方 式 給 了 我 們 能 夠 延 展 有 效 率 可 快 取 的 軟 體 架 構, 透 過 一 致 邏 輯 的 介 面 操 作 這 成 就 了 更 健 壯 更 靈 活 可 延 展 的 架 構, 就 像 Web 一 樣, 原 因 也 相 同 結 論 資 源 導 向 式 架 構 很 優 雅 地 實 現 了 一 些 折 衷 : 這 個 作 法 與 傳 統 不 同, 也 沒 太 多 人 試 過 關 心 自 己 履 歷 的 人 只 想 嚐 試 那 些 已 經 證 實 真 正 有 在 使 用 的 方 法 另 一 方 面, 對 那 些 研 究 Web 及 其 建 構 元 件 的 人 來 說, 這 個 作 法 十 分 合 理, 代 表 了 人 類 曾 經 想 像 與 實 作 過 最 大 也 最 成 功 的 網 路 軟 體 架 構 一 方 面 它 要 求 完 全 不 同 的 思 考 方 式, 另 一 方 面, 它 提 供 了 強 而 有 力 的 機 制, 能 夠 用 邏 輯 化 命 名 的 介 面 包 覆 與 重 有 現 存 的 程 式 碼 服 務 以 及 基 礎 建 設, 不 會 洩 露 出 實 作 的 細 節 我 們 可 以 自 由 地 調 整 伺 服 器 端 使 用 的 技 術 不 影 響 原 有 的 用 戶 端, 隨 著 時 間 過 去, 可 以 為 相 同 的 資 料 增 加 支 援 新 的 格 式, 我 們 可 以 轉 移 後 端 實 作 而 不 需 要 影 響 用 戶 端, 除 此 之 外, 這 樣 的 設 計 決 策 達 成 了 如 延 展 性 快 取 資 訊 導 向 的 存 取 控 制 以 及 符 合 法 規 要 求 等 重 要 特 性 軟 體 開 發 人 員 通 常 比 較 在 意 演 算 法 物 件 服 務 等 建 構 元 件, 而 非 資 料 在 J2EE.NET 與 SOAP 式 架 構 中 都 有 具 體 的 技 術 與 藍 圖 不 幸 的 是, 大 多 數 的 藍 圖 都 沒 有 考 慮 到 資 料, 將 我 們 限 制 在 特 定 的 連 結 上, 一 有 變 動 就 會 影 響 現 有 的 用 戶 端 這 是 我 們 多 年 來 延 用 的 傳 統 方 式, 企 業 組 織 已 經 感 到 疲 倦,Web Service 本 來 應 該 是 個 脫 離 這 種 狀 況 的 策 略, 但 錯 誤 的 抽 象 層 級 與 過 度 複 雜 的 使 用 案 例, 讓 整 個 程 序 完 全 無 法 接 受 該 是 從 軟 體 中 心 架 構 走 出 來, 開 始 注 重 資 訊 與 其 流 動 的 時 候 了, 我 們 將 會 繼 續 使 用 已 知 和 喜 愛 的 工 具 撰 寫 軟 體, 只 是 這 些 工 具 不 會 成 為 架 構 連 結 的 焦 點

106 第 五 章 資 源 導 向 式 方 法 提 供 了 業 務 單 位 與 提 供 支 援 的 技 術 部 門 間 良 好 的 橋 樑, 資 訊 中 心 的 觀 點 與 軟 體 連 結 的 方 式, 提 供 了 真 正 的 效 率 與 商 業 價 值 不 再 需 要 跟 著 供 應 商 的 偉 大 願 景 起 舞, 我 們 能 夠 從 Web 學 到 重 要 的 功 課, 了 解 它 的 架 構 方 式 所 帶 來 重 要 的 特 色 建 築 是 有 人 居 住 的 雕 塑, 我 們 不 得 不 承 受 以 往 決 策 的 後 果, 我 們 應 該 抓 住 機 會, 讓 功 能 性 美 和 彈 性 進 入 架 構 當 中, 讓 我 們 的 生 活 更 加 舒 適