999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于J2EE和XML的SOA服務(wù)層數(shù)據(jù)模型研究及實(shí)現(xiàn)

2010-01-01 00:00:00馮留春
電腦知識(shí)與技術(shù) 2010年3期

摘要:SOA 服務(wù)層數(shù)據(jù)模型能很好的解決企業(yè)內(nèi)異構(gòu)數(shù)據(jù)源的信息交換和傳遞問題,同時(shí)也是企業(yè)全面實(shí)施 SOA 的基礎(chǔ)和關(guān)鍵。該文介紹了其工作原理和其相關(guān)的支撐技術(shù)(XML)和開發(fā)平臺(tái)(J2EE)在某企業(yè)訂單管理中實(shí)例化服務(wù)層數(shù)據(jù)模型。

關(guān)鍵詞:服務(wù)層;數(shù)據(jù);模型;J2EE;XML

中圖分類號(hào):TP309.2 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2010)03-544-03

The Implementation of SOA Service Layer Data Model Based on J2EE and XML

FENG Liu-chun

(Dalian City, Liaoning Province Lushunkou District 91278 Units 60 Units, Dalian 116041, China)

Abstract: The SOA service data model can solve the problem of information exchange and transfer among different database source. At the same time, it is the foundation and key step. The passage introduce the work principle and relative technology(XML) and development platform(J2EE). At last, give an example of service data model based on order man-agement of a enterprise.

Key words: service; data; model; J2EE; XML

目前,由于市場競爭環(huán)境的不斷變化,越來越多的企業(yè)正在逐步實(shí)現(xiàn)以生產(chǎn)為主導(dǎo),到銷售為主導(dǎo),到服務(wù)為主導(dǎo)的架構(gòu)的變遷。隨需應(yīng)變的客戶服務(wù)能力被越來越多的企業(yè)所重視。SOA作為一種軟件系統(tǒng)架構(gòu)方法 論應(yīng)運(yùn)而生,以滿足市場對(duì)軟件互聯(lián)互通,復(fù)用和業(yè)務(wù)流程管理的需求。同時(shí),數(shù)據(jù)和數(shù)據(jù)管理幾乎是所有企業(yè)軟件解決方案的關(guān)鍵因素。SOA也不例外。從IT業(yè)界的發(fā)展?fàn)顩r和趨勢來分析,有一樣?xùn)|西是亙古不變的:那就是數(shù)據(jù)。有效的數(shù)據(jù)建模和管理是成功實(shí)現(xiàn)SOA的基礎(chǔ)。大部分IT工作的核心就是收集、分發(fā)和管理數(shù)據(jù),并且當(dāng)需要數(shù)據(jù)時(shí)、在需要數(shù)據(jù)的地方、以要求的方式為需要數(shù)據(jù)的人(擁有正確的權(quán)限)提供數(shù)據(jù)。任何軟 件系統(tǒng)或應(yīng)用程序,離開了數(shù)據(jù)都將成為空中樓閣。

1 SOA 和服務(wù)層數(shù)據(jù)模型

面向服務(wù)的架構(gòu)(Service - Oriented Architecture, SOA)是一種設(shè)計(jì)方式,它指導(dǎo)著業(yè)務(wù)服務(wù)在其生命周期中的任何步驟。與其他新興技術(shù)不同的是:SOA不是一種技術(shù),而是一種企業(yè)架構(gòu)。其發(fā)展經(jīng)歷了從XML到Web服務(wù)再到SOA的過程,主要目的就是幫助實(shí)現(xiàn)企業(yè)業(yè)務(wù)流程的靈活多變。通過讓IT運(yùn)行環(huán)境更好的支持業(yè)務(wù)的變化,來保證業(yè)務(wù)的靈活性。當(dāng)業(yè)務(wù)靈活性發(fā)生變化的時(shí)候,IT的支撐架構(gòu)能夠很快的適應(yīng)這種變化。構(gòu)建SOA服務(wù),以及用標(biāo)準(zhǔn)的方法重用與整合服務(wù)

是SOA的核心任務(wù)。SOA服務(wù)的構(gòu)造可以是對(duì)已有系統(tǒng)中的功能進(jìn)行提取和包裝,也可以是基于新的業(yè)務(wù)需求進(jìn)行構(gòu)造。

服務(wù)數(shù)據(jù)層模型處于SOA技術(shù)架構(gòu)圖的最底層,即數(shù)據(jù)層。服務(wù)層數(shù)據(jù)模型為服務(wù)請(qǐng)求者和服務(wù)提供者所共享,并提供了一種請(qǐng)求者和提供者雙方都能理解的數(shù)據(jù)交換格式與結(jié)構(gòu)—XML。如圖1。

服務(wù)請(qǐng)求者和服務(wù)提供者是SOA實(shí)現(xiàn)過程中兩種關(guān)鍵角色。其中,服務(wù)提供者指的是通過發(fā)送請(qǐng)求消息并處理響應(yīng)消息來提供服務(wù)的應(yīng)用程序,它了解服務(wù)層數(shù)據(jù)模型,因?yàn)樗仨毮軌蚋鶕?jù)服務(wù)契約指定的數(shù)據(jù)類 型信息接受和生成數(shù)據(jù)值;服務(wù)請(qǐng)求者指的是通過發(fā)送請(qǐng)求消息調(diào)用服務(wù)的應(yīng)用程序,它也了解服務(wù)層數(shù)據(jù)模型,因?yàn)樗仨毮軌蚋鶕?jù)服務(wù)契約指定的數(shù)據(jù)類型信息發(fā)送和接收數(shù)據(jù)值。一些服務(wù)提供者同時(shí)也是服務(wù)請(qǐng)求者。同時(shí),在SOA技術(shù)中還包含了第三種角色—服務(wù)代理(service broker)。服務(wù)代理作為服務(wù)提供者和服務(wù)請(qǐng)求者之間的中介,是一個(gè)服務(wù)和數(shù)據(jù)描述的存儲(chǔ)庫。其中,服務(wù)提供者可以通過服務(wù)代理發(fā)布它們的服務(wù),服務(wù)使用者可以通過服務(wù)代理發(fā)現(xiàn)或查找可用的服務(wù)。服務(wù)請(qǐng)求者有其自己的內(nèi)部數(shù)據(jù)模型,它被用于實(shí)現(xiàn)其內(nèi)部的業(yè)務(wù)邏輯。服務(wù)請(qǐng)求者要調(diào)用某個(gè)服務(wù)時(shí),它必須構(gòu)造一個(gè)符合服務(wù)契約的服務(wù)請(qǐng)求。即:通過必要的 數(shù)據(jù)轉(zhuǎn)換將內(nèi)部數(shù)據(jù)模型中的數(shù)據(jù)元素轉(zhuǎn)換為XML格式的服務(wù)層數(shù)據(jù)模型。同樣,服務(wù)請(qǐng)求者在收到服務(wù)提 供者的響應(yīng)后,必須通過必要的數(shù)據(jù)轉(zhuǎn)換將XML格式 的服務(wù)層數(shù)據(jù)模型中的數(shù)據(jù)元素轉(zhuǎn)換為內(nèi)部數(shù)據(jù)模型。這些轉(zhuǎn)換,封裝了在服務(wù)請(qǐng)求者內(nèi)部的實(shí)現(xiàn)細(xì)節(jié)—它們對(duì)于服務(wù)請(qǐng)求者和Web服務(wù)平臺(tái)來說是完全不可見的。同樣,服務(wù)提供者也有其自己的內(nèi)部數(shù)據(jù)模型,它也 要通過數(shù)據(jù)轉(zhuǎn)換將服務(wù)層數(shù)據(jù)模型中的數(shù)據(jù)元素轉(zhuǎn)換為內(nèi)部的數(shù)據(jù)模型。服務(wù)層數(shù)據(jù)模型的主要目的就是協(xié)調(diào)不同服務(wù)領(lǐng)域間的異構(gòu)數(shù)據(jù)模型。

2 服務(wù)層數(shù)據(jù)模型中的關(guān)鍵技術(shù)及平臺(tái)

XML Schema是目前表達(dá)SOA的服務(wù)層數(shù)據(jù)模型的最好的技術(shù),因?yàn)樗情_放的、基于標(biāo)準(zhǔn)的,而且是可擴(kuò)展的。此外,XML還有一系列相關(guān)技術(shù)作為補(bǔ)充,它們提供了SOA所需的功能。具體如下所示:

XML:提供了一個(gè)跨平臺(tái)的數(shù)據(jù)編碼與格式化方案。

XML Schema:用于描述XML文檔的結(jié)構(gòu)和定義共享詞匯。

帶驗(yàn)證的XML解析器:一個(gè)帶驗(yàn)證的XML解析器。會(huì)根據(jù)相應(yīng)的XML Schema來檢查XML文檔,并報(bào)告錯(cuò)誤。

XPath:用于定位XML文檔中的某個(gè)部分。

XSL轉(zhuǎn)換(XSLT):一種將XML轉(zhuǎn)換為其他XML文檔或本地格式的語言。

XQuery:是W3C制定的一個(gè)用于XML的查詢語言,它可被廣泛應(yīng)用于各類XML數(shù)據(jù)源。可以視之為一種“用于XML的SQL”。

當(dāng)前使用Web服務(wù)開發(fā)企業(yè)解決方案的兩個(gè)主要平臺(tái)為J2EE和.NET。其中大部分廠商使用的都是J2EE 技術(shù)平臺(tái),如IBM、BEA和普元公司等。Java 2平臺(tái)企業(yè) 版(Java 2 Enterprise Editon, J2EE)用于支持構(gòu)建大規(guī)模分布式解決方案,其開發(fā)平臺(tái)包含大量的可組合片斷,能夠?qū)⑵浣M裝成合格的Web解決方案。顯示了J2EE平臺(tái)為支持 J2EE面向服務(wù)解決方案所提供的基本層。

3 服務(wù)層數(shù)據(jù)模型開發(fā)及程序?qū)崿F(xiàn)[3]

進(jìn)行 SOA服務(wù)層數(shù)據(jù)模型的開發(fā),其核心就是實(shí)現(xiàn)對(duì)異構(gòu)數(shù)據(jù)源的信息交換和共享。XSLT轉(zhuǎn)換編輯器對(duì)于 SOA服務(wù)層數(shù)據(jù)模型的實(shí)現(xiàn)是至關(guān)重要的。企業(yè)在確定訂單信息(Order Information OI)的要求后,開始創(chuàng)建靜態(tài)表單,以設(shè)計(jì)信息的結(jié)構(gòu)。在數(shù)據(jù)庫中,靜態(tài)表單即表模式。在XML,此靜態(tài)表單即XML模式(XSD)。如果以后需要收集更多的相關(guān)信息,需要重新設(shè)計(jì)表單(表模式/XSD)。

下面以某企業(yè)倉庫訂貨單為例來說明服務(wù)層數(shù)據(jù)模型在實(shí)現(xiàn)數(shù)據(jù)抽象,根據(jù)所定義的業(yè)務(wù)邏輯來處理數(shù)據(jù),以滿足業(yè)務(wù)需求。

訂單信息包括:

1) 訂單日期:Order date: 2009-12-25;

2) 供 應(yīng) 商 信 息 :Name:Peter;City:GanZhou City; Province:JiangXi Province;Country:China

基于訂單和供應(yīng)商信息,可以使用一個(gè) OI(order in-formation) 類型來表示。我們將其命名為 OrderType。下列程序顯示了結(jié)構(gòu)化為 XSD 格式的文件中包含的所有信息:

xmlns:oi=\"http://www.example.com/OI\" targetNamespace=\"http://www.example.com/ OI\">

如下所示的示例Java 程序首先通過調(diào)用XSD-Helper.INSTANCE.define() 方法注冊(cè)oi.xsd 中描述的所有類型。然后,它從 OrderType創(chuàng)建一個(gè)根 DataObject。 該程序?qū)脑撎幨褂?DataObject API來構(gòu)建 DataOb-ject樹,以表示訂單信息:

public class CreateOrder {

private static final String OI_MODEL = \"oi.xsd\"; private static final String OI_NAMESPACE = \"http://www.example.com/OI\";

private static final String OI_XML = \"oi.xml\";

private static void defineOITypes() throws Exception { FileInputStream fis = new FileInputStream (OI_MOD-EL);

XSDHelper.INSTANCE.define(fis, 1); fis.close();}

public static void main(String[] args) throws Exception { defineOITypes();

DataObject Order =DataFactory.INSTANCE.create (OI_NAMESPACE, \"OrderType\");

Order.setString(\"orderDate\", \"2007- 11- 20 \") DataObject provider =Order.createDataObject (\"

provider \");

provider.set(\"country\", \"China \"); provider.set(\"name\", \"Peter\"); provider.set(\"city\", \"GanZhou\"); provider.set(\"Province \", \"JiangXi\");

CreateOrder.java 程序用于創(chuàng)建一個(gè) OI,該 OI采用 名為 oi.xml的 XML格式

oi.xml 程序清單如下:

com/PO\" orderDate=\"2007- 10- 20\"> Peter GanZhou JiangXi China

讀取示例 OI

創(chuàng)建了 oi.xml 后,我們可以編譯并運(yùn)行讀取數(shù)據(jù)城 據(jù) ReadOrder.java使用服務(wù)層數(shù)據(jù)模型 API來遍歷 oi. xml的內(nèi)容。該應(yīng)用程序?qū)?zhí)行以下操作:

public class ReadOrder {

private static final String OI_MODEL = \"oi.xsd\"; private static final String OI_XML = \"oi.xml\";

private static void defineOITypes() throws Exception { FileInputStream fis = new FileInputStream(OI_MOD-EL);

XSDHelper.INSTANCE.define(fis, 1); fis.close(); }

public static void main(String[] args) throws Excep-tion {

defineOITypes();

FileInputStream fis = new FileInputStream(OI_XML); XMLDocument xmlDoc = XMLHelper.INSTANCE.load(fis);

DataObject purchaseOrder = xmlDoc.getRootObject(); System.out.println(\"Order date: \" + Order.get(\"order-Date\"));

DataObject provider = Order.getDataObject (\" provider\");

System.out.println(\"name: \" + provider.get(\"name\")); Order.getDataObject(\"provider\");

System.out.println(\"city: \" + provider.get(\"city \")); Order.getDataObject(\"provider\"); Order.getDataObject(\"provider\");

System.out.println (\"province: \" + provider.get (\" province \"));

Order.getDataObject(\"provider\"); System.out.println(\"country: \" + provider.get(\"country\"));

System.out.println();}}

運(yùn)行 ReadOrder 的控制臺(tái)輸出 Order date: 2007- 10- 20 name:Peter

4 結(jié)束語

企業(yè)在實(shí)施 SOA的過程中,數(shù)據(jù)服務(wù)層是基礎(chǔ)也是關(guān)鍵的一層。而且,數(shù)據(jù)服務(wù)層應(yīng)該是首先要設(shè)計(jì)、開發(fā)和部署的層之一。精心定義、設(shè)計(jì)的數(shù)據(jù)服務(wù)層能使隨后的 SOA解決方案更輕松、更透明,并提高軟件重用率、質(zhì)量和功能,同時(shí)又能降低成本。與企業(yè)中其他任何單個(gè)以實(shí)現(xiàn)某種具體應(yīng)用為目的的系統(tǒng)開發(fā)相比,SOA作為一種企業(yè)總體架構(gòu),其參考架構(gòu)中的其他所有層(包括服務(wù)展示層、服務(wù)層、服務(wù)實(shí)現(xiàn)層等)通常重用和受益于精心設(shè)計(jì)的服務(wù)數(shù)據(jù)層。設(shè)計(jì)良好的服務(wù)數(shù)據(jù)層為企業(yè)提供了可重用的共享數(shù)據(jù)模型以及有效地訪問和管理這些數(shù)據(jù)的能力,從而使企業(yè)獲得期望的業(yè)務(wù)和IT靈活性。

參考文獻(xiàn):

[1] Thomas Erl.SOA 概念、技術(shù)與設(shè)計(jì)[M].王滿紅,陳榮華,譯.北京:機(jī)械工業(yè)出版社,2006.

[2] Eric Newcomer,Greg Lomow.Understanding SOA with Web Services 中文版[M].徐涵,譯.北京:電子工業(yè)出版社,2006.

[3] 劉海川,陳培久.基于ASP.NET和XML的工作流管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)工程與應(yīng)用,2004(15).

主站蜘蛛池模板: 香蕉99国内自产自拍视频| 538国产在线| 亚洲成aⅴ人片在线影院八| 一级毛片在线播放免费观看| 在线亚洲小视频| 国产欧美视频在线观看| 亚洲三级电影在线播放| 精品小视频在线观看| 美女免费黄网站| 99成人在线观看| 亚洲网综合| 激情五月婷婷综合网| 国产白浆在线| h网址在线观看| 玖玖精品视频在线观看| 国产精品999在线| 亚洲av日韩av制服丝袜| 日韩精品专区免费无码aⅴ| 精品久久久久久成人AV| AV色爱天堂网| 野花国产精品入口| 国产尤物视频在线| 国产香蕉一区二区在线网站| 国产无码网站在线观看| 日本亚洲欧美在线| 激情乱人伦| 日韩第九页| 中国成人在线视频| 亚洲永久精品ww47国产| 精品国产亚洲人成在线| 国产在线观看一区精品| 极品国产一区二区三区| 新SSS无码手机在线观看| 在线无码私拍| 热思思久久免费视频| 亚洲成aⅴ人在线观看| 狠狠做深爱婷婷久久一区| 成人免费网站在线观看| 亚洲精品无码在线播放网站| 午夜国产在线观看| 亚洲伊人久久精品影院| 香蕉视频在线精品| 国产一区二区在线视频观看| 国产精品久久久久久久久kt| 91在线中文| 玖玖免费视频在线观看| 毛片在线看网站| 成年人久久黄色网站| 国产综合精品一区二区| 亚洲成人一区在线| 天天激情综合| 午夜久久影院| 91探花国产综合在线精品| 国产情侣一区二区三区| 中文字幕在线观看日本| 欧美国产日韩在线播放| 久久性视频| 精品久久久久久成人AV| 老司机久久99久久精品播放| 色综合激情网| 国产激爽大片高清在线观看| 欧美日韩国产在线人成app| 亚洲国产成熟视频在线多多| 成人毛片在线播放| 国产精品毛片一区视频播| 一级一级一片免费| 免费xxxxx在线观看网站| 国产成人高清在线精品| 成人久久精品一区二区三区| 国产乱人伦精品一区二区| 久久久久久久97| 91亚洲视频下载| 亚洲伦理一区二区| 这里只有精品免费视频| 欧美亚洲国产精品第一页| 国产一级毛片yw| 欧美在线综合视频| 99在线观看国产| 综合成人国产| 亚洲热线99精品视频| 国产欧美视频在线观看| 青青草综合网|