• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            隨筆 - 181, 文章 - 2, 評(píng)論 - 85, 引用 - 0
            數(shù)據(jù)加載中……

            在企業(yè)級(jí) SOA 中使用 Web 服務(wù),第 2 部分: 使外部 Web 服務(wù)互操作性最優(yōu)

            外部和內(nèi)部 Web 服務(wù)之間多個(gè)面向服務(wù)的體系結(jié)構(gòu) (Service-Oriented Architectures,SOA) 中的外部 Web 服務(wù)的互操作性最優(yōu)。Judith Myerson 展示了如何更改服務(wù)的類型、位置以及每個(gè) Web 服務(wù)的平臺(tái),以便實(shí)現(xiàn)原始應(yīng)用程序的業(yè)務(wù)流程。

            引言

            在關(guān)于企業(yè)級(jí)面向服務(wù)的體系結(jié)構(gòu) (SOA) 系列我的第一篇文章,“使用多重 SOA 來(lái)消除企業(yè)系統(tǒng)之間的差異”(參閱參考資料)中,通過(guò)說(shuō)明如何重用一個(gè)或多個(gè) SOA 中的 Web 服務(wù)(以數(shù)據(jù)為中心 (data-centric) 和業(yè)務(wù)邏輯),然后將他們聯(lián)合到一個(gè)受組織控制的組合應(yīng)用程序中,討論了使用 SOA 縮小企業(yè)系統(tǒng)差異的方案。

            當(dāng) Web 服務(wù)不受組織所控制時(shí),需要確保它們?cè)谕獠靠梢员舜嘶ゲ僮鳎瑏?lái)共享語(yǔ)義和契約職責(zé)。語(yǔ)義的誤解(例如所有權(quán))和契約漏洞(例如多平臺(tái)間的區(qū)別)會(huì)影響外部企業(yè) Web 服務(wù)之間的互操作性問(wèn)題。

            在本文中,我展示了四個(gè)實(shí)現(xiàn)制造資源規(guī)劃 (Manufacturing Resource Planning,MRP) 和客戶關(guān)系管理 (Customer Relationship Management,CRM) 服務(wù)的實(shí)例,如下所示:

            1. 企業(yè)以前的應(yīng)用程序
            2. 到外部 Web 服務(wù)的動(dòng)態(tài)鏈接
            3. 請(qǐng)求外部 Web 服務(wù)的 REpresentational State Transfer/Simple Object Access Protocol (REST/SOAP) 共存
            4. 使用 IBM? WebSphere? Application Server 和 Microsoft? Visual Studio .Net 的 Web 服務(wù)互操作性

            考慮各種交易時(shí),確定系統(tǒng)可以負(fù)載的可互操作的 SOA 的數(shù)量非常重要,這樣可以避免 SOA 過(guò)載。







            企業(yè)以前的應(yīng)用程序

            假設(shè)企業(yè)以前的應(yīng)用程序(參見(jiàn)圖 1)被分成業(yè)務(wù)流程的模塊化組件。該應(yīng)用程序的兩個(gè)重要組件(MRP 和 CRM)要求不斷發(fā)生變化且重新編譯長(zhǎng)期運(yùn)行的應(yīng)用程序。


            圖 1. 企業(yè)以前的應(yīng)用程序
            企業(yè)以前的應(yīng)用程序






            動(dòng)態(tài)服務(wù)鏈接

            為增加運(yùn)行效率,從應(yīng)用程序中提取出這些組件并將其重新構(gòu)建為外部 Web 服務(wù)更有意義。通過(guò)這種方式,您可以更改兩個(gè) Web 服務(wù)的代碼,而不用重新編譯龐大的、復(fù)雜的長(zhǎng)期運(yùn)行的應(yīng)用程序。

            在第一個(gè) SOA(參見(jiàn)圖 2)中以更加緊湊的形式重新設(shè)計(jì)的應(yīng)用程序可以動(dòng)態(tài)鏈接到第二個(gè) SOA 中的外部企業(yè) MRP Web 服務(wù),依次的,指向第三個(gè) SOA 中的外部企業(yè) CRM Web 服務(wù)。一旦收到請(qǐng)求,CRM Web 服務(wù)將請(qǐng)求和信息發(fā)送給應(yīng)用程序來(lái)進(jìn)行進(jìn)一步處理。


            圖 2. 到 Web 服務(wù)的動(dòng)態(tài)鏈接
            動(dòng)態(tài)鏈接

            每個(gè)鏈接機(jī)制都是以發(fā)送請(qǐng)求或消息,接收響應(yīng),或執(zhí)行 SQL 或 HTTP 操作的形式出現(xiàn)的。還可以封裝沒(méi)有 MRP 組件的應(yīng)用程序,這樣就可以向 MRP Web 服務(wù)發(fā)送請(qǐng)求。







            軟件架構(gòu)

            需要牢記,在從一個(gè)協(xié)議轉(zhuǎn)換到另一個(gè),或者從一個(gè)軟件架構(gòu)轉(zhuǎn)換到另一個(gè)時(shí),可能會(huì)引起平臺(tái)間的互操作性問(wèn)題。一些實(shí)例包括 SOAP、REST、.Net 架構(gòu)、企業(yè) Java Bean (Enterprise Java Beans,EJB) 以及 Java 消息服務(wù) (Java Messaging Service,JMS)。

            運(yùn)行在 HTTP 上的 .Net Web 服務(wù)可以以三種不同的方式調(diào)用:HTTP GET 操作、HTTP POST 操作和 SOAP。如果需要快速的調(diào)用 Web 服務(wù)且沒(méi)有 SOAP 客戶端的話,GET 和 POST 操作都是非常有用的。可以通過(guò) Perl 腳本在 HTTP 上使用 REST 來(lái)執(zhí)行 GET、POST、PUT 和 DELETE 操作。在這個(gè)腳本中,您可以指定 SQL 查詢和簡(jiǎn)單的消息隊(duì)列。

            如果 SOAP 客戶端可用,下面是如何在 REST 和 SOAP 之間進(jìn)行簡(jiǎn)單的選擇。如果應(yīng)用程序是 基于資源的,選擇 REST。如果應(yīng)用程序是 基于行為的,選擇 SOAP。在 REST 中,客戶端可以通過(guò) HTTP 請(qǐng)求執(zhí)行在一系列資源上的多個(gè)操作。對(duì)于基于 SOAP 的請(qǐng)求,可能需要執(zhí)行請(qǐng)求的每個(gè)面向活動(dòng)的客戶端可能僅需要一個(gè)調(diào)用操作。







            調(diào)用框架

            要構(gòu)建 SOAP 請(qǐng)求,需要使用 Web 服務(wù)描述語(yǔ)言 (Web Services Description Language,WSDL),這是一種描述如何訪問(wèn) Web 服務(wù)以及將執(zhí)行什么操作的語(yǔ)言。您可以指定服務(wù)的類型,而不用自定義 Web 服務(wù)的代碼,也不用重新編譯以前的應(yīng)用程序。

            為確保 WSDL 文件能在各種軟件架構(gòu)中工作,您可以利用 IBM Web Services Invocation Framework (WSIF),它讓您可以將 WSDL 作為不同軟件標(biāo)準(zhǔn)來(lái)描述。這表明您可以通過(guò)描述語(yǔ)言周圍的 API 以獨(dú)立于協(xié)議和位置的方式訪問(wèn) WSDL。還意味著您可以通過(guò) WSDL 將 Web 服務(wù)結(jié)合復(fù)合成應(yīng)用程序,在 WSDL 中您可以在各種條件和異常情況下切換協(xié)議和位置。

            為構(gòu)建 WSIF,無(wú)論您打算使用什么提供商,您都需要滿足最低需求,該選項(xiàng)包括如下:

            • JAXP XML 解析器
            • Java API 的 WSDL
            • Apache SOAP
            • Apache Axis。






            REST 和 SOAP 共存

            雖然 REST 請(qǐng)求不像 SOAP 請(qǐng)求那樣依賴 WSDL,您仍需要 XML Schema 來(lái)驗(yàn)證 REST 操作。既然 WSDL 支持 schema 規(guī)范,REST 和 SOAP 可以作為從一個(gè)合成的 Web 服務(wù)應(yīng)用程序到外部應(yīng)用程序的請(qǐng)求而共存。

            例如,SOA #1(參閱圖 3)中的應(yīng)用程序首先發(fā)送 SOAP 請(qǐng)求調(diào)用 SOA #2 的 MRP Web 服務(wù)中調(diào)用基于活動(dòng)的服務(wù),接下來(lái)發(fā)送一個(gè) REST 請(qǐng)求來(lái)操作相同 MRP Web 服務(wù)中的面向行為的服務(wù)。所有基于 SOAP 的請(qǐng)求都是基于 IBM WSIF 的。


            圖 3. REST 和 SOAP 共存
            REST 和 SOAP 共存

            正如您所見(jiàn)到的,第一個(gè) SOA 里面的應(yīng)用程序運(yùn)行在 Unix 或者 Linux 服務(wù)器上,而第二個(gè) SOA 中的 MRP Web 服務(wù)運(yùn)行在 IBM WebSphere Application Server (Application Server) 中。您可以使用 WSIF 來(lái)更改基于 SOAP 的請(qǐng)求的規(guī)范版本中的服務(wù)類型和位置。







            WebSphere 和 .Net 產(chǎn)品的互操作性

            如果您希望開(kāi)發(fā)更加復(fù)雜的 Web 服務(wù),作為 Linux 或者 Window 平臺(tái)上的較大企業(yè)系統(tǒng)開(kāi)發(fā)項(xiàng)目的一部分,可以考慮使用用于 WebSphere 軟件的 IBM Rational? Application Developer。它同用于 Java? 和 EJB 的統(tǒng)一建模語(yǔ)言 (Universal Modeling Language,UML) Visual Editor 一起提供,并且運(yùn)行在 Eclipse 源碼開(kāi)放平臺(tái)上,允許您擴(kuò)展您的開(kāi)發(fā)環(huán)境。還可以使用 Microsoft Visual Studio.Net。

            您可以使用軟件來(lái)將應(yīng)用程序邏輯分割成模塊化的多業(yè)務(wù)流程 Web 服務(wù)組件。IBM 通過(guò)提供 Web Services Navigator(Rational Application Developer 插件) 更前進(jìn)了一步,讓您直觀地同 Web 服務(wù)事務(wù)交互。

            如果您正在使用 Visual Studio.Net 在 Microsoft .Net 平臺(tái)上開(kāi)發(fā) Web 服務(wù),可以在 Application Server 中運(yùn)行它們。這意味著使兩個(gè)平臺(tái)之間的 Web 服務(wù)互操作(參閱參考資料),您所要做的只是開(kāi)發(fā)與兩種平臺(tái)公用的 WSDL。

            例如,運(yùn)行在 Unix 或者 Linux 服務(wù)器上的應(yīng)用程序(參見(jiàn)圖 4)首先發(fā)送 SOAP 請(qǐng)求來(lái)調(diào)用運(yùn)行在 Application Server 上的 MRP Web 服務(wù)的基于活動(dòng)的服務(wù)。接下來(lái),該應(yīng)用程序發(fā)送一個(gè) REST 請(qǐng)求來(lái)執(zhí)行同樣 MRP Web 服務(wù)上的一系列基于資源的服務(wù)。一旦收到請(qǐng)求,SOA #3 中的 CRM Web 服務(wù)向原始應(yīng)用程序發(fā)送一個(gè)請(qǐng)求或者信息。


            圖 4. 多平臺(tái)外部 Web 服務(wù)
            多平臺(tái)外部 Web 服務(wù)

            正如您所看到的,第三個(gè) SOA 中的 CRM Web 服務(wù)運(yùn)行在 .Net 平臺(tái)上并且訪問(wèn) Application Server。CRM Web 服務(wù)向第一個(gè) SOA 中的應(yīng)用程序發(fā)送請(qǐng)求或者信息。您可以為 Visual Studio.NET 添加一個(gè) Visual Perl 插件。您還可以使用用于 Unix 到 Windows 移植的命令行級(jí)別的基于 REST 的腳本,并且使其適應(yīng) Visual Perl 環(huán)境,這取決于簡(jiǎn)本的復(fù)雜性。







            Visual Studio

            對(duì)于您來(lái)說(shuō),使用 Visual Studio .Net 比 Visual Basic、C++、Java、Kornshell 來(lái)封裝 Unix 應(yīng)用程序?yàn)?COM 組件要更加容易。同樣,如果您正在開(kāi)發(fā)應(yīng)用程序,使用 Unix shell 腳本來(lái)運(yùn)行 Window 應(yīng)用程序,或者如果您將 Unix 應(yīng)用程序移植到 Window 平臺(tái)下來(lái)鏈接到外部 Web 服務(wù),使用它也非常容易。

            這里有一些您應(yīng)該了解的提示。首先,您應(yīng)該將自己的 WSDL 文件發(fā)布到一個(gè)公共的位置來(lái)解決互操作性的差別。您可以跳過(guò) Rational Application Developer's 自底向上的方法或者 Visual Studio .Net 的 WSDL First 方法中的自動(dòng)生成 WSDL 文件。可以使用 Rational Application Developer 的 Skeleton 或者自頂向下的方法 來(lái)啟動(dòng)您的 WSDL 文件并填充 Java Class 實(shí)現(xiàn)。或者,還可以禁用 Visual Studio 的 WDSL First 方法中的自動(dòng)生成 WSDL 文件選項(xiàng)并且發(fā)布您自己的 WSDL。

            第二,要為自己提供一個(gè)可以使用的 WSDL 模板,可以考慮 Rational Application Developer 的自底向上的方法(從 Java Bean 開(kāi)始),Rational XDE(基于類模型生成模板代碼),或者 Visual Studio 的 Implementation First Approach(在通過(guò)編寫 Web 服務(wù)代碼開(kāi)始后生成模板代碼)。然而 Rational Application Developer 提供了 WSDL,Visual Studio.Net 可能沒(méi)有提供。







            需要多少 SOA?

            用來(lái)連接 EAI 應(yīng)用程序的 SOA 的數(shù)量取決于項(xiàng)目、互操作性問(wèn)題、業(yè)務(wù)流程和負(fù)載性能問(wèn)題之間復(fù)雜性的平衡。如果您避免了 SOAP 超標(biāo),您需要確保 SOAP 在開(kāi)發(fā)的整個(gè)生命周期不會(huì)超載。您應(yīng)該在周期的每一點(diǎn)上測(cè)試超載。







            結(jié)束語(yǔ)

            使多平臺(tái) SOA 之間的外部 Web 服務(wù)互操作性最優(yōu)需要事先計(jì)劃好可以開(kāi)發(fā)多少 SOA。您應(yīng)該與業(yè)務(wù)分析團(tuán)隊(duì)和 IT 專家在各種性能問(wèn)題上進(jìn)行交流。您會(huì)發(fā)現(xiàn)解決互操作性問(wèn)題將使您的開(kāi)發(fā)工作變得更加得容易。您可以開(kāi)發(fā)外部 Web 服務(wù),每個(gè)服務(wù)可以使用不同的平臺(tái)和請(qǐng)求協(xié)議。分析師將發(fā)現(xiàn)解決該問(wèn)題將使設(shè)計(jì)和分析多個(gè) SOA 系統(tǒng)的工作更加容易。他們可以確定 Web 服務(wù)可以運(yùn)行在什么平臺(tái)上,而不用導(dǎo)致 SOA 超載。

            posted on 2006-04-17 03:13 wsdfsdf 閱讀(141) 評(píng)論(1)  編輯 收藏 引用 所屬分類: 技術(shù)文章

            評(píng)論

            # re: 在企業(yè)級(jí) SOA 中使用 Web 服務(wù),第 2 部分: 使外部 Web 服務(wù)互操作性最優(yōu)  回復(fù)  更多評(píng)論   

            調(diào)用框架

            要構(gòu)建 SOAP 請(qǐng)求,需要使用 Web 服務(wù)描述語(yǔ)言 (Web Services Description Language,WSDL),這是一種描述如何訪問(wèn) Web 服務(wù)以及將執(zhí)行什么操作的語(yǔ)言。您可以指定服務(wù)的類型,而不用自定義 Web 服務(wù)的代碼,也不用重新編譯以前的應(yīng)用程序。

            為確保 WSDL 文件能在各種軟件架構(gòu)中工作,您可以利用 IBM Web Services Invocation Framework (WSIF),它讓您可以將 WSDL 作為不同軟件標(biāo)準(zhǔn)來(lái)描述。這表明您可以通過(guò)描述語(yǔ)言周圍的 API 以獨(dú)立于協(xié)議和位置的方式訪問(wèn) WSDL。還意味著您可以通過(guò) WSDL 將 Web 服務(wù)結(jié)合復(fù)合成應(yīng)用程序,在 WSDL 中您可以在各種條件和異常情況下切換協(xié)議和位置。

            為構(gòu)建 WSIF,無(wú)論您打算使用什么提供商,您都需要滿足最低需求,該選項(xiàng)包括如下:

            JAXP XML 解析器
            Java API 的 WSDL
            Apache SOAP
            Apache Axis。

            WSDL.....
            2006-04-24 14:20 | Tory
            久久久久AV综合网成人| 久久精品一区二区| 91精品国产高清久久久久久国产嫩草 | 国内精品久久久久影院老司| 国产成人无码精品久久久免费| 国内精品久久久久影院日本 | 久久免费国产精品一区二区| 久久久久AV综合网成人| 国产综合久久久久久鬼色| 久久久亚洲欧洲日产国码aⅴ| 久久综合久久自在自线精品自 | 久久精品国产免费观看| 一本色道久久综合亚洲精品| 亚洲中文字幕无码久久综合网| AV无码久久久久不卡蜜桃| 久久青青草原亚洲av无码app| 久久国产精品无码HDAV| 亚洲国产天堂久久综合网站| 国产午夜电影久久| 中文字幕久久亚洲一区| 亚洲午夜久久久久久噜噜噜| 精品无码久久久久久午夜| 亚洲乱亚洲乱淫久久| 青青青青久久精品国产h久久精品五福影院1421 | 精品国产VA久久久久久久冰| 久久久久久a亚洲欧洲aⅴ| 久久人妻少妇嫩草AV蜜桃| 国产精品熟女福利久久AV| 久久精品中文字幕一区| 国内精品久久久久久久久电影网| 国产精久久一区二区三区| 日韩精品久久久久久| 色成年激情久久综合| 亚洲va久久久噜噜噜久久男同| 国产精品久久毛片完整版| 人人狠狠综合久久亚洲高清| 亚洲精品NV久久久久久久久久| 亚洲国产天堂久久综合网站 | 久久久噜噜噜久久中文字幕色伊伊| 亚洲国产日韩综合久久精品| 99久久人妻无码精品系列 |