高可靠性移動(dòng)應(yīng)用程序---J2ME工具(1)
2024-07-21 02:39:06
供稿:網(wǎng)友
在不可靠的無(wú)線網(wǎng)絡(luò)中應(yīng)用程序可靠性已經(jīng)成為關(guān)系移動(dòng)商業(yè)成功的一個(gè)中心話題。J2ME(java 2 平臺(tái)微型版)是支持離線模式智能移動(dòng)客戶端的完美平臺(tái)。整合了移動(dòng)關(guān)系數(shù)據(jù)庫(kù)的企業(yè)J2ME客戶端能夠治理在設(shè)備上的復(fù)雜數(shù)據(jù)并能在需要時(shí)和后臺(tái)服務(wù)器同步。 在這篇文章中,Michael Yuan首先他討論了高可靠性移動(dòng)移用應(yīng)用程序的“偶然連接”(occasionally-connected)范例。他在這個(gè)范例中解釋了移動(dòng)數(shù)據(jù)庫(kù)的作用。他還用一個(gè)J2ME應(yīng)用程序闡述了移動(dòng)數(shù)據(jù)庫(kù)應(yīng)用程序的要害組件。最后,他評(píng)論了主流的J2ME數(shù)據(jù)庫(kù)公司,為你在購(gòu)買所需要的數(shù)據(jù)庫(kù)時(shí)提供一個(gè)指導(dǎo)。
目前的無(wú)線網(wǎng)絡(luò)是極不可靠的。不可靠的應(yīng)用程序毀壞了移動(dòng)商業(yè)的核心價(jià)值,而它又許諾無(wú)論何時(shí)何地都可以訪問(wèn)到信息。實(shí)際上,總是保持連接的需求正是基于無(wú)線應(yīng)用協(xié)議(WAP)的瘦客戶移動(dòng)商業(yè)失敗的主要原因。移動(dòng)商業(yè)需要智能的移用客戶端,它能夠操縱當(dāng)?shù)氐膽?yīng)用程序并且甚至在網(wǎng)絡(luò)出現(xiàn)臨時(shí)的不可靠時(shí)可以持續(xù)的工作(例如,離線操作)。“偶然連接”移動(dòng)應(yīng)用程序需要高級(jí)的移動(dòng)數(shù)據(jù)儲(chǔ)存和治理工具。這樣的工具在J2ME上是輕易得到的。
在這篇文章中,我首先討論了移動(dòng)數(shù)據(jù)庫(kù)的一般概念和規(guī)范。我用了一個(gè)應(yīng)用程序例子來(lái)闡述J2ME移動(dòng)數(shù)據(jù)庫(kù)應(yīng)用程序的重要設(shè)計(jì)和要害組件。我也對(duì)現(xiàn)在變化的市場(chǎng)如何正確選擇正確的移動(dòng)數(shù)據(jù)庫(kù)提供了建議。
設(shè)備上的數(shù)據(jù)存儲(chǔ)和治理
對(duì)離線操作的首要需求是存儲(chǔ)和治理設(shè)備自身的應(yīng)用數(shù)據(jù)。標(biāo)準(zhǔn)的J2ME僅僅提供有限的數(shù)據(jù)存儲(chǔ)和治理能力。在低端的MIDP(移動(dòng)信息設(shè)備描述)電話上,我們僅靠記錄治理系統(tǒng)record management system(RMS)得到線性的記錄儲(chǔ)存;在基礎(chǔ)描述里(或PersonalJava)我們有簡(jiǎn)單的隨機(jī)文件。應(yīng)用程序開(kāi)發(fā)者們必須用那些一般工具來(lái)組織數(shù)據(jù),這些工具會(huì)對(duì)大應(yīng)用程序?qū)е路ξ丁⒌托屎湾e(cuò)誤的傾向。
在J2SE(Java2平臺(tái)標(biāo)準(zhǔn)版)和J2EE(Java2平臺(tái)企業(yè)版)的世界中,關(guān)系數(shù)據(jù)庫(kù)代表著數(shù)據(jù)治理的要害技術(shù)。大多數(shù)開(kāi)發(fā)人員已經(jīng)非常熟悉通過(guò)如JDBC(Java數(shù)據(jù)庫(kù)連接)的API訪問(wèn)普通數(shù)據(jù)庫(kù)。因此輕量級(jí)關(guān)系數(shù)據(jù)庫(kù)是我們對(duì)移動(dòng)數(shù)據(jù)治理自然的選擇。
除了提供離線操作模式外,設(shè)備上數(shù)據(jù)庫(kù)on-device databases還有其他的重要好處:
他們能治理用戶參數(shù)。極度的個(gè)性化已經(jīng)作為移動(dòng)商業(yè)的一個(gè)主要優(yōu)點(diǎn)被吹捧。
他們能提供一個(gè)性能高速緩存器performance cache來(lái)減少網(wǎng)絡(luò)往返回調(diào)。這樣就能大大的增強(qiáng)在目前低速和反應(yīng)慢的無(wú)線網(wǎng)絡(luò)中應(yīng)用程序的性能。
JDBC可選包
標(biāo)準(zhǔn)JDBC API對(duì)高端Java移動(dòng)設(shè)備已經(jīng)是可以選擇利用了。PersonalJava運(yùn)行時(shí)經(jīng)常和可選的JDBC1.x API捆綁在一起。PersonalJava的繼續(xù)物,J2ME 基礎(chǔ)/個(gè)性化的描述Foundation/Personal PRofile(FP/PP),它沒(méi)有委托JDBC來(lái)訪問(wèn)數(shù)據(jù)庫(kù)。相反,F(xiàn)P/PP設(shè)備通過(guò)J2ME JDBC可選包(JDBC OP)使用JDBC 3.x API 的一個(gè)富子集。JSR Java Specification Request(Java 規(guī)范需求)169正在發(fā)展這個(gè)可選包的規(guī)范,它的草案已在2002年11月提交上去。JDBC OP除了以下幾個(gè)特點(diǎn)外支持大多數(shù)用于JDBC的公共特性:
連接池
ParameterMetaData接口
在CallableStatement interface里為已經(jīng)存儲(chǔ)的程序通過(guò)名稱來(lái)設(shè)置參數(shù)
SQL 99的類型(如StrUCt,Array,Ref,SQLData,SQLInput,和SQLOutput接口 )
自定義類型映射(如setTypeMap() 和getTypeMap() 方法)
數(shù)據(jù)同步
偶然連接應(yīng)用程序范例的另一個(gè)重要特性是數(shù)據(jù)同步。獨(dú)立的移動(dòng)數(shù)據(jù)庫(kù)被數(shù)據(jù)包所隔開(kāi)。當(dāng)我們用強(qiáng)大的后臺(tái)服務(wù)器連接那些“孤島”時(shí)移動(dòng)應(yīng)用程序非常有用。已連接上的移動(dòng)數(shù)據(jù)庫(kù)有如下優(yōu)點(diǎn):
移動(dòng)客戶端經(jīng)常需要訪問(wèn)企業(yè)的基礎(chǔ)設(shè)施。例如,移動(dòng)銷售應(yīng)用程序需要更新庫(kù)存數(shù)據(jù)。
后端應(yīng)用程序需要上卷數(shù)據(jù)和聚集數(shù)據(jù)來(lái)制定智能商業(yè)決策或生成正確的報(bào)表。例如,供給鏈應(yīng)用程序在決定它應(yīng)該從供給商那里定購(gòu)多少貨物之前需要得到移動(dòng)銷售人員的聚集數(shù)據(jù)。
后臺(tái)能共享每個(gè)移動(dòng)終端信息
因此智能客戶端不但應(yīng)該提供離線設(shè)備數(shù)據(jù)治理,而且應(yīng)該當(dāng)網(wǎng)絡(luò)可用時(shí)提供后臺(tái)數(shù)據(jù)庫(kù)的數(shù)據(jù)同步。后臺(tái)數(shù)據(jù)庫(kù)當(dāng)作簡(jiǎn)單移動(dòng)設(shè)備治理的一個(gè)內(nèi)容儲(chǔ)存庫(kù)是同步解決方案的額外收益。
理論上應(yīng)用程序開(kāi)發(fā)者能操縱整個(gè)同步邏輯,然而開(kāi)發(fā)一個(gè)優(yōu)化的,安全的和可擴(kuò)展的同步解決方案需要非常專業(yè)的技能。
移動(dòng)數(shù)據(jù)庫(kù)產(chǎn)品同其附帶的同步工具和API一起趕走了開(kāi)發(fā)人員的痛苦。
什么是SyncML?
SyncML是一個(gè)流行的應(yīng)用層同步協(xié)議。除了包括像J2ME這樣的通用客戶應(yīng)用平臺(tái),移動(dòng)設(shè)備通常還預(yù)裝一些智能應(yīng)用程序。例如在智能電話或PDA上包括有日歷,地址本和聯(lián)系表(個(gè)人信息治理 personal information management, 或PIM應(yīng)用程序)這些應(yīng)用程序通常能夠通過(guò)設(shè)備軟件供給商所提供的協(xié)議與桌面PC或其他中心數(shù)據(jù)儲(chǔ)存庫(kù)進(jìn)行數(shù)據(jù)同步。協(xié)議間的不兼容造成用戶的許多問(wèn)題。例如,在Pocket PC上的Mac 和linux兩平臺(tái)進(jìn)行同步是非常困難的;假如一個(gè)人擁有多個(gè)移動(dòng)設(shè)備,那他必須安裝多個(gè)驅(qū)動(dòng)程序,而這些驅(qū)動(dòng)程序是存在潛在沖突的。用戶需要一個(gè)標(biāo)準(zhǔn)的同步協(xié)議,它答應(yīng)任何設(shè)備在不需要專門驅(qū)動(dòng)程序條件下與任何后端應(yīng)用程序進(jìn)行同步。
SyncML是一個(gè)標(biāo)準(zhǔn)的xml數(shù)據(jù)格式,它定義語(yǔ)法描述簡(jiǎn)單PIM數(shù)據(jù)例如vCard和vCalendar。SyncML能訪問(wèn)數(shù)據(jù)庫(kù)驅(qū)動(dòng)的企業(yè)后端信息系統(tǒng)。例如,IBM WebSphere Everyplace access提供SyncML客戶端訪問(wèn)Lotus Notes和Microsoft Exchange servers。像IBM DB2和Oracle9i Database這樣重要的企業(yè)數(shù)據(jù)庫(kù)已經(jīng)建立了對(duì)SyncML的支持。由于SyncML只是在PIM類型應(yīng)用程序上發(fā)揮作用,它還沒(méi)有強(qiáng)大到足以和通用關(guān)系數(shù)據(jù)庫(kù)同步的地步,因此本文沒(méi)有集中在SyncML上。