• 沒有找到結果。

背景知識介紹

在文檔中 社群網路API之開發與研究 (頁 16-40)

2-1 Web Platform API

在目前 web 2.0 的發展,網站提供應用程式 API,是許多網站的趨勢,例 如 Google Maps,其提供 API,可讓使用者在他們自己的網頁上放置 Google 地 圖的時候,亦能做些設定,例如設定要顯示的控制項、決定地圖的中心點位置、

在地圖上放置標點說明等等。facebook 交友網站亦提出 facebook API,讓第 三方可以開發在 facebook 網站執行的程式,例如顯示使用者的人際關係連結 圖、或是有趣的小遊戲等,內容五花八門,不但能吸引網友使用,同時也豐富 了網站的應用層面,更進一步,有些具有交易功能的程式,借由第三方與網站 拆賬,更能因此為網站帶來營收。由此看來,API 的發展與建立,對網際網路 應用來說,確實為一不可忽視的發展潮流。

目前網際網路上的Web Platform API可大略被分為六大類[4],即

Information Services, Search Services, Storage Services, Messaging Services, Compute Services and Web 2.0 Services。這六大類的性質與簡 介,會在下面分別介紹之。

2-1-1 Information Services API

Information Services 是提供大量的專門資訊的網路服務,此類服務包含 有提供地理資料的服務,如 Google 的 Google Maps API 或如提供產品資訊的 服務如 Amazon E-Commerce 或 Amazon Historical Pricing Services。

以 Google Maps API 為例,我們可利用此 API,在自己的網頁上放置一個 Google 地圖,並在地圖上顯示我們想要顯示的東西,像是顯示自家附近的地 圖,或指定顯示成衛星圖或是道路圖等,並可在地圖上放置標記。以下是一個 利用 Google Maps API 的範例程式。

圖 1 Google Maps API 之範例程式

利用其傳遞給 Google Maps API 的參數,如地理座標、顯示的控制項等,

我們即可在網頁上顯示一個如下的地圖,並且此地圖並非靜態的而是動態的,

也就是說造訪網頁的人可以利用滑鼠來拖拉或縮放此地圖。

圖 2 Google Maps API 之範例畫面 資料來源: Google

2-1-2 Search Services API

另外一類的 API 是 Search Services API,顧名思義其目的就是提供搜尋

服務,較著名的有 Google AJAX Search API 及 Alexa Search Platform 等。

Google AJAX Search API 讓你可以在你的網頁上,加入一個搜尋引擎,可以用 來搜尋網頁、新聞及 blog 等。而 Alexa Search Platform 的 API 除了提供類 似以上的功能外,程式設計師並可利用它海量的資料庫及 API 做一些更特殊化 的搜尋,例如可利用其庫存網頁資料庫中相片中的 EXIF 資訊,找出某特定品 牌或特定型號的相機所拍出的照片;又或是不只對網頁做檢索,也可以針對其 庫存網頁資料庫中所儲存的網際網路上的壓縮檔,對壓縮檔中的檔案做檢索。

這些都是利用 Alexa Search Platform 所能做到的功能。

2-1-3 Storage Services API

Storage Services API 是提供儲存服務的 API,像 Amazon S3 及 openemy 皆是此種 API 的代表。S3 是 Simple Storage Service 之意,其所提供的 API 類似一個基本的 hash table,讓你可以輕易的儲存及取回檔案及資訊,其 API 是以 SOAP 及 REST 協定來做通訊協定,而且,除了可以用 HTTP 來傳檔之外,

還提供了 BitTorrent 的傳輸模式,這使得傳送大型檔案的時候可以更加的快 速。除了以上所提到的 Amazon 及 openemy 這兩家公司之外,Google 也在開發 他們的 GDrive,而微軟則是預備推出類似概念的 LiveDrive,而這兩者很有可 能也會推出對應他們的儲存服務的 API。

2-1-4 Messaging Services API

第四類 API 是 Messaging Services API,其概念類似傳統的 middleware (中 介軟體,用來在異質平台之間交換資訊的軟體)。此類的 API 因為不論在技術 層面或是商業層面,都會比一般的 API 更加複雜,所以目前的數量並不是很多。

目前較著名的是 Amazon 的 Simple Queue Service API,簡稱為 SQS。

2-1-5 Compute Services API

第五類是 Compute Services API,簡單來說即是網格運算的 API,讓你可 以利用其所提供的強大計算能力做大量的運算,之後再將結果傳回給你。像 SUN 的 Grid, DataSynapse 的 GridServer 及 Platform 的 Symphony 皆屬於此類的 API。

2-1-6 Web 2.0 Services API

Web 2.0 Services API 即是指操作網友上傳的內容作為應用的 API,其可 方便的查詢或是變更每位網友自行上載到網站上的內容。而在架構上來說,Web 2.0 Services API 可利用前述的其他五大類 API 做為基礎元件而開發出來。目 前 del.icio.us, Flickr 及 Basecamp 等 Web 2.0 網站皆提供此類的 API。

以 del.icio.us 網站為例,其是一個書籤網站,讓網友們可以上傳他們自 己的書籤到網站上,並與他人分享交流,是一個典型的 Web 2.0 網站。其所提 供的 API 是使用 http-based 的介面,讓程式開發者可以開發出程式,讓網友 們存取他們的美味書籤及標記。並且為了安全性的考量,所有的 Delicious APIs 皆透過 https 及 HTTP-Auth 協定來做為通訊的標準。其目前提供的 APIs 分為幾大類,一類是 Posts,即書籤類,讓你可以對書籤做新增、刪除、查詢

management 網站,可以讓一個群組有組織有計畫的共同完成一件工作,所以它 又稱自己為 Business 2.0 網站。其所提供的 Basecamp API 所使用的協定是 HTTP,而資訊交換則是以 XML 的格式來傳輸。其 API 功能種類繁多,包含了訊 息傳遞、事項加註、待辦事項管理、進度管理、成員通訊錄管理等等。

由以上所述看來,目前若想要開發功能強大且易用的 browser-based 應用 程式或是桌面應用程式,只要能善加利用這些 API,開發都是非常的容易且方 便。而且因為底層的元件都已俱備且相當完善,開發者將更加能把心力專注在 程式的可用性、易用性及內容的強化上。

在本研究中即是以發展一個應用於社群網路的 web 2.0 API 為主題之研究。

2-2 Firefox Add-on

Firefox 是近年來一個快速崛起的 web browser,憑藉著快速的效能及功 能眾多的 add-on,目前在全世界已有兩成以上的佔有率,是僅次於 Microsoft Internet Explorer 之外,最受歡迎的 web browser。

而Firefox的Add-ons[5],指的是針對Mozilla基金會的計畫 (及其相容的 變形,例如可攜版的Firefox),所開發的可安裝的加強元件。Add-ons讓使用 能。Extension 在 Firefox 中特別受到歡迎,因為 Mozilla 的開發者傾向於將 Firefox browser 定位在只包含最基本的功能,以儘可能的縮小程式體積並減 少 bugs,同時保持一高度的延展性,所以個別的使用者可以根據個自的喜好新 增他們需要的功能。

Extension 使用到的 technologies:

 CSS (Cascading Style Sheets)

 DOM (Document Object Model)[6] – 用來即時改變XUL[7][8] 或是編輯目前載入的HTML

 JavaScript – Mozilla browsers 的主要語言

 XPCOM (Cross-Platform Component Object Model) - 跨平台元 件物件模型

 XPConnect

 XPI (Cross-Platform Installer) - 跨平台的安裝包

 XUL (XML User Interface Language) – 用來定義使用者介面

(UI, User Interface) 並和使用者互動 用途:

 新增功能

Extensions 通常用來對應用程式新增功能,一個 Extension 可新 增的功能可能包含: RSS 閱讀器、bookmarks 整理工具

(organizers)、工具列、針對特定網站的客戶端程式、FTP、

e-mail、滑鼠手勢、代理伺服器切換、或是開發者工具。許多 Firefox Extensions 是實做之前 Mozilla 套件 (Mozilla Suite) 的部份功能,例如 ChatZilla IRC 客戶端及 calendar 等。

 改變使用者觀看網頁的方式

許多 Extension 在網頁被 render 時可改變網頁的內容,例如,

Adblock Extension 可使 browser 不要載入廣告圖片,

Greasemonkey 讓使用者安裝一些 scripts,而這些 scripts 可以 即時的變更某些網站的網頁。

2. Plugins

一般的 plugins 包含 Acrobat Reader, Flash Player, Java, Quicktime, RealPlayer, Shockwave, 及微軟的 Windows Media Player 等。

2-2-2 Extensions 的開發

/defaults/

開發 Extension 第一步是建目錄~/Extension/my_Extension,然後在 my_Extension 之內,建立 chrome/content 並建立兩個檔案:chrome.manifest

& install.rdf

Install.rdf 是使用者在安裝 Extension 時的設定檔,開發人員需在其內 指定以下內容:

 <em:id>: 此 Extension 的 id。

 <em:type>: 若值為 2,代表此為一 Extension;若值為 4,代表此為 一佈景主題 (theme)。

 <em:minVersion>: 此 Extension 所能對應的 Firefox 的最小版本。

 <em:maxVersion>: 此 exteision 所能對應的 Firefox 的最大版本。

構成 Firefox 的使用者介面的是 XUL & JavaScript。XUL,即 XML User Interface Language,它是一個 XML 文法,其提供了使用者介面小元件 (user interface widgets),例如按鈕、目錄、工具列及樹等等。而使用者所產生的 動作皆以 JavaScript 的功能所控制。

當我們想要擴展 browser 的介面時,我們可以靠著增加或修改 widget 的 方式,來變更 browser UI。舉例來說,

$FIREFOX_INSTALL_DIR/chrome/browser.jar 之中,包含了

content/browser/browser.xul 這個檔案,這個檔案即是 Firefox 瀏覽器的介 面的描述檔,其中的<statusbar id="status-bar">節點,即描述了 browser

的狀態列的組成。

1. URI scheme (chrome): 此部份告訴 Firefox 的 networking library 這是一個 Chrome URI。

2. package name (browser): 使用者介面元件的包裹。

3. 資料型態: 有三種型態:content, locale 及 skin。在此的 content 代表了應 用程式 UI 的結構與行為。

4. 檔案的路徑

在 chrome.manifest 檔案中,如下的程式碼:”content sample chrome/content/”定義了一名為 sample 的 package,其 content 檔案位於 chrome/content。而此程式碼:” overlay

chrome://browser/content/browser.xul

chrome://sample/content/sample.xul”則告訴 Firefox,當 browser.xul 載 入時,將 sample.xul 合併到 browser.xul 之中。

在本研究中社群網路 API 之開發,將會以 Firefox Extension 為基礎,應 用 Firefox 與 XUL 檔案之間的階層架構,以及 Firefox Extension JavaScript 語言,做為開發的 framework 之一。

2-2-3 XUL

XUL,即 XML User Interface Language,是一個由 Mozilla 計畫所開發出 的 XML 使用者介面標記語言,它被使用在 Mozilla 的跨平台應用程式之中,例 如 Firefox 及 Flock。目前只有 Gecko 排版引擎 (layout engine) 提供了 XUL 的完整實作。

XUL 必須依靠在許多現存的網頁標準及技術,包括 CSS, JavaScript, 及 DOM。如此的關係使得具有網頁程式設計及網頁設計的背景的人學習起 XUL 時 變得相對的容易。XUL 並無正式的規格,並且無法在非 Gecko 的實作上動作,

雖然如此,它使用的 Gecko 實作是開放原始碼的,而且有三種授權方式:GPL, LGL 及 MPL。Mozilla 提供了一個實驗性質的 XUL Runner 版本,以讓開發者在 Mozilla 應用程式框架 (Mozilla application framework) 及 XUL 上建構他們 的應用程式。XUL 的主要優點,即是提供了一個簡單並且可攜的,對於一般視 軟體本土化 (software localization)。

XUL 定義了許多的元素,大致上可分為以下幾類:

 頂層元素 (Top-level elements) 如 window, page, dialog, wizard 等

 視窗部件 (Widgets)

如 label, button, text box, list box, combo box, radio button, check box, tree, menu, toolbar, group box, tab box, color picker, spacer, splitter 等

 盒子模型 (Box model)

 事件與手稿程式 (Events and scripts)

如 script, command, key, broadcaster, observer 等

 資料來源 (Data source) 如 template, rule 等

 其他

如 overlay, iframe, browser, editor 等

XUL 文件之中,可以使用其他 XML 應用程式的元素,像是 XHTML, SVG 及 MathML

Mozilla 在 Gecko 1.9 的開發過程中新增了一些常見的視窗部件

(widgets),如<scale/>, <spinbox/>, 日期與時間選取器 (time and date

(widgets),如<scale/>, <spinbox/>, 日期與時間選取器 (time and date

在文檔中 社群網路API之開發與研究 (頁 16-40)

相關文件