国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      發(fā)送用于目標服務執(zhí)行操作的請求的方法和系統(tǒng)的制作方法

      文檔序號:6368688閱讀:282來源:國知局
      專利名稱:發(fā)送用于目標服務執(zhí)行操作的請求的方法和系統(tǒng)的制作方法
      技術(shù)領(lǐng)域
      本發(fā)明涉及一種分布對象/服務系統(tǒng),具體涉及在這樣的系統(tǒng)中的對象/服務的位置(location)。
      背景技術(shù)
      分布對象/服務系統(tǒng)一般包括三個主要部分1)用于容納(locate)對象/服務和對象/服務工廠的機構(gòu);2)數(shù)據(jù)傳輸格式;3)傳送機構(gòu)。
      這三個部分一般經(jīng)由非常獨立的機構(gòu)來實現(xiàn)。例如,人們可以注意這樣一個系統(tǒng),其中一個LDAP(簡便目錄存取協(xié)議)目錄結(jié)構(gòu)被用于容納對象/服務;SOAP(簡單對象存取協(xié)議)被用作數(shù)據(jù)傳輸格式;諸如IBM的WebSphere MQ的消息傳送產(chǎn)品被用作傳送機構(gòu)。
      圖1提供了具有獨立可維護的目錄結(jié)構(gòu)一般如何運行的整體視圖。客戶端10從服務器20(例如銀行)請求對象/服務40。服務器20在目錄30中執(zhí)行查找,并且發(fā)現(xiàn)銀行駐留在系統(tǒng)1上。服務器20隨后向系統(tǒng)1發(fā)出對于銀行對象/服務的請求。這可能涉及調(diào)用關(guān)于銀行的方法并且傳送相關(guān)的參數(shù)(如記入借方的款項(S Todd,100))。
      獨立實現(xiàn)上述三個機構(gòu)的每個是困難和耗時的。例如,實現(xiàn)容納對象/服務的機構(gòu)不僅需要建立和維護目錄30,而且需要用于在目錄故障時提供容錯性的代碼。這樣的容錯性通常通過與初始副本(即復制)同步地保留目錄的備份來提供。另外,也有諸如安全這樣的其他考慮。
      因此,在工業(yè)中需要減少與實現(xiàn)一個分布對象/服務系統(tǒng)的這三個部分相關(guān)的開銷。

      發(fā)明內(nèi)容
      因此,本發(fā)明的第一方面提供了一種用于發(fā)送對于目標服務的請求以執(zhí)行操作的方法,所述方法包括步驟接收對于目標服務的請求以執(zhí)行操作;建立用于消息隊列的消息,所述消息代表所述請求,所述消息包括對所述消息隊列和要執(zhí)行的操作的指示;確定所述消息隊列的位置,所述隊列是在消息傳送簇中的簇隊列;向該隊列發(fā)送消息,其中所述隊列表示目標服務。
      因此在諸如WebSphere MQ這樣的消息傳送系統(tǒng)被用作分布服務系統(tǒng)中的傳送機構(gòu)的地方,用于容納隊列(即消息群集)的基礎(chǔ)結(jié)構(gòu)可以被應用來容納在分布系統(tǒng)中的服務。因此避免了保留用于容納服務的獨立目錄結(jié)構(gòu)的必要。由消息傳送系統(tǒng)提供的所有優(yōu)點將更好地應用來容納服務。
      優(yōu)選的是,所述隊列是映射到實際隊列的偽隊列。
      按照另一個方面,本發(fā)明提供了一種用于請求目標服務以執(zhí)行操作的系統(tǒng),所述系統(tǒng)包括目標服務;用于接收對于目標服務的請求以執(zhí)行操作的裝置;用于建立表示所述請求的消息的裝置,所述消息包括對目標服務和要執(zhí)行的操作的指示;表示目標服務的隊列,所述隊列是在消息傳送簇中的簇隊列;用于確定所述隊列的位置的裝置;用于響應于確定所述隊列的位置而向所述隊列發(fā)送消息;用于從所述隊列讀取消息的代理程序,和用于對目標服務執(zhí)行操作的裝置。
      注意,在一個實施例中,所述代理程序執(zhí)行對目標服務的操作。在另一個實施例中,代理程序?qū)⑾魉偷搅硪粋€分量以執(zhí)行操作。
      優(yōu)選的是,所述隊列是映射到實際隊列的偽隊列。
      優(yōu)選的是,存在多個偽隊列,每個隊列表示一個目標服務并且映射到實際的隊列。
      優(yōu)選的是,所述代理程序從實際隊列讀取消息。因此,一個代理程序優(yōu)選地從同一隊列中讀取與不同服務相關(guān)的消息。這相對于一個代理程序從多個隊列或甚至多個代理程序讀取更容易管理。
      值得贊賞的是,本發(fā)明可以以計算機軟件來實現(xiàn)。
      按照另一個方面,本發(fā)明提供了一種用于發(fā)送對于目標服務的請求以執(zhí)行這些操作的裝置,所述裝置包括用于接收對目標服務的請求以執(zhí)行操作的裝置;用于為消息隊列建立消息的裝置,所述消息表示請求,所述消息包括對消息隊列和要進行的操作的指示;用于確定所述消息隊列的位置的裝置,所述隊列是在消息傳送簇中的簇隊列;以及用于向所述隊列發(fā)送所述消息的裝置,其中所述隊列表示目標服務。


      現(xiàn)在參照附圖通過示例來說明本發(fā)明的優(yōu)選實施例。
      圖1示出了按照現(xiàn)有技術(shù)的、具有獨立可維護的目錄結(jié)構(gòu)的系統(tǒng)如何運行的整體視圖;圖2圖解了按照現(xiàn)有技術(shù)的消息傳送系統(tǒng);圖3示出了使用現(xiàn)有技術(shù)的群集技術(shù)的消息傳送系統(tǒng);圖4示出了按照本發(fā)明的一個優(yōu)選實施例的分布服務/對象系統(tǒng)的組成。
      具體實施例方式
      消息傳送系統(tǒng)是本領(lǐng)域公知的。如上所述,一種這樣的系統(tǒng)是IBM的WebSphere MQ。圖2提供了這樣的系統(tǒng)如何運行的整體視圖。系統(tǒng)100執(zhí)行程序120和130。系統(tǒng)110執(zhí)行程序140。這些程序經(jīng)由消息編隊接口(MQI)150與在隊列管理器160、170上運行的隊列180、Q1、Q2通信。例如,程序120可能希望將一個消息放到Q1上以便由程序130檢索。該程序?qū)⑦@個請求放到它的本地隊列管理器160,隊列管理器160立即知道Q1在哪里,因為它管理那個隊列。于是,可以直接將消息放到Q1。另一方面,程序120(運行在系統(tǒng)100中)可能希望將消息放到Q2(運行在系統(tǒng)110中)以便由程序140的檢索(GET)。在這種情況下,Q2對于程序的本地隊列管理器160不是本地的。當它接收到要放到Q2的請求的時候,隊列管理器160將查找遠程隊列的本地定義(即關(guān)于在哪里找到Q2的指針)。在已經(jīng)找到本地定義的時候,該消息被放到TransmitQ 180以便經(jīng)由信道190傳送到由隊列管理器170管理的Q2。一旦消息到達Q2,就可以由程序140進行檢索。于是,對于每個遠程隊列,隊列管理器保持本地定義是必要的。這當然強加了管理的負擔。
      部分由于這個原因,發(fā)明了消息群集(clustering)。圖3提供了按照現(xiàn)有技術(shù)的消息群集的整體視圖。以一定方式關(guān)聯(lián)的隊列管理器可以一起編組到簇120中。例如,每個隊列管理器210、220、230可以分別表示以紐約、倫敦和巴黎為基礎(chǔ)的商店。紐約隊列管理器210管理一個庫存隊列(InventQ)205,它被定義為在簇200內(nèi)的簇隊列。簇隊列是對簇公開的隊列。一個或多個、最好是兩個隊列管理器保留“全倉庫”208,它包括關(guān)于在特定簇內(nèi)的所有簇隊列的信息。在這個示例中,紐約和倫敦隊列管理器掌握全倉庫。在該簇中的其他隊列管理器掌握“部分倉庫”(未示出)。因此,當客戶端240連接到巴黎隊列管理器230來請求將一個消息250放到InventQ 205的時候,巴黎QM首先查看它的部分倉庫以看是否它知道InventQ 205的位置。部分倉庫包括關(guān)于巴黎QM 230先前已經(jīng)請求的隊列的信息。如果從未請求巴黎向InventQ 205發(fā)送消息,則它與包含全倉庫210、220的隊列管理器之一聯(lián)系。一般,每個部分倉庫隊列管理器選擇一個這樣的全倉庫隊列管理器,并且總是與那個隊列管理器連接。在這個示例中,巴黎的所選擇的隊列管理器是倫敦QM 230。因此巴黎QM連接到倫敦以發(fā)現(xiàn)InventQ 205的位置,并且在已經(jīng)發(fā)現(xiàn)這個信息的時候,巴黎能夠向在紐約QM 210上的其目的地205發(fā)送消息250。
      于是,在本發(fā)明的一個優(yōu)選實施例中,消息簇(cluster)提供一種有效的方式來將隊列容納在消息傳送系統(tǒng)中,因為所有定義為簇隊列的隊列經(jīng)由全倉庫對相關(guān)的簇公開。其他部分倉庫隊列管理器可以通過從全倉庫隊列管理器請求位置信息來容納這樣的簇隊列。
      關(guān)于有關(guān)消息群集的更多的信息,請參看可以從http//www-3.ibm.com/software/ts/mqseries/library/mqpdfs.html下載的、IBM的MQ系列隊列管理器簇手冊(SC34-5349-00)。
      因此,在本發(fā)明的一個優(yōu)選實施例中--其中諸如WebSphere MQ的一個消息傳送(messaging)系統(tǒng)被用做在分布對象/服務系統(tǒng)中的傳送機構(gòu),用于容納隊列的基本結(jié)構(gòu)(即消息群集)被應用來容納在分布系統(tǒng)中的對象/服務。這有利地避免了保留一個獨立目錄結(jié)構(gòu)來容納對象/服務的位置的需要。
      圖4圖解了按照本發(fā)明的一個優(yōu)選實施例的分布服務/對象系統(tǒng)的組成。對象服務器330和380被編組到簇300。每個對象服務器具有對象服務器(Object Server)定義的隊列350、400。(注意當這個實施例描述在每個對象服務器330、380上的具有相同名稱的隊列350、400的時候,不必是這種情況)對于在一個對象服務器上實現(xiàn)的每類對象380、385、430、430,本地偽隊列被定義為CLASS&lt;classid〉(Class Insurance、Class Bank、Class Travel、Class HireCars)260、370、410、420。(注意classid可能是類名或類UUID(通用唯一標識符))每個本地偽隊列地址轉(zhuǎn)換為對象服務器隊列。例如,Class Bank 370轉(zhuǎn)換為(resolve to)對象服務器隊列350。每個偽隊列360、370、410、420被定義為簇隊列,因此將其公開到在簇300中的隊列管理器。換句話說,關(guān)于每個偽隊列的位置的信息被存儲在簇300內(nèi)保留的任何全倉庫中。(在這個情況下,信息被存儲在全倉庫308中)。對象客戶端310向它的本地隊列管理器320提交對簇隊列的請求(方法),傳入適當?shù)膮?shù)(如Class Bank(信用(S Todd,100)))。本地隊列管理器向其所選擇的全倉庫隊列管理器(在這個示例中是對象服務器380)提交請求,并且包含在全倉庫308中的信息將本地隊列管理器320引導到對象服務器330,在對象服務器330上容納了偽隊列Class Bank。與來自對象客戶端的每個請求有關(guān)的一個消息被建立,并且這被映射到適當?shù)膶ο蠓掌麝犃?50。每個對象服務器330、380實現(xiàn)一個代理程序340、380,從它的對象服務器隊列讀取消息并且處理它們。每個代理程序知道它的本地對象的位置(如代理程序340知道銀行380和保險385的位置),因此可以執(zhí)行客戶端的請求(如對S Todd的帳戶給£100的信用)。
      從上面內(nèi)容,應當理解本發(fā)明的一個優(yōu)選實施例中的消息群集的使用提供了有效的機構(gòu)來用于容納隊列以及對象/服務。
      當圖4指定在系統(tǒng)上的每個偽隊列映射到單個主隊列(object server)的時候,這僅僅是一個示例配置。也可能偽隊列是真實的隊列,并且代理程序(或其幾個實例)340、390從每個真實隊列讀取消息。但是應當理解,更容易(并且更少地消耗資源)使得一個代理程序(或如果工作的級別要求的話是幾個)實例從一個隊列(即對象服務器隊列)讀取消息。
      應當理解,術(shù)語“服務”包括術(shù)語“對象”。
      應當注意,所述詳細的說明主要涉及客戶端在與對象服務器相同的簇的情況。這不是必須的。在客戶端和對象服務器在不同的簇的時候,可以使用標準MQ簇結(jié)合技術(shù)。當客戶端不是在一簇內(nèi)的時候也是這樣,可以使用用于將消息放到在簇內(nèi)的隊列的標準技術(shù)。
      總之,本發(fā)明的優(yōu)選實施例提供了一個系統(tǒng),其中可以利用相同的機構(gòu)(消息傳送)來容納隊列和對象/服務。消息傳送系統(tǒng)提供的所有優(yōu)點將因此也最好地應用到對象/服務的容納。因此,例如,通過在消息群集情況中由一般利用至少兩個全倉庫而提供的信息的復制來提供對隊列信息和對象/服務信息的備份。通過消息傳送系統(tǒng)提供的安全性現(xiàn)在可以不僅應用到傳送機構(gòu),而且可以應用到對象/服務容納機構(gòu)(因為它們現(xiàn)在是相同的)。
      權(quán)利要求
      1.一種用于發(fā)送對于目標服務的請求以執(zhí)行操作的方法,所述方法包括步驟接收對于目標服務的請求以執(zhí)行操作;建立用于消息隊列的消息,所述消息代表所述請求,所述消息包括對所述消息隊列和要執(zhí)行的操作的指示;確定所述消息隊列的位置,所述隊列是在消息傳送簇中的簇隊列;向該隊列發(fā)送消息,其中所述隊列表示目標服務。
      2.按照權(quán)利要求1的方法,其中所述隊列是偽隊列,所述偽隊列映射到實際隊列。
      3.一種用于請求目標服務以執(zhí)行操作的系統(tǒng),所述系統(tǒng)包括目標服務;用于接收對于目標服務的請求以執(zhí)行操作的裝置;用于建立表示所述請求的消息的裝置,所述消息包括對目標服務和要執(zhí)行的操作的指示;表示目標服務的隊列,所述隊列是在消息傳送簇中的簇隊列;用于確定所述隊列的位置的裝置;用于響應于確定所述隊列的位置而向所述隊列發(fā)送消息的裝置;用于從所述隊列讀取消息的代理程序,和用于對目標服務執(zhí)行操作的裝置。
      4.按照權(quán)利要求3的系統(tǒng),其中所述隊列是偽隊列,所述偽隊列映射到實際隊列。
      5.按照權(quán)利要求4的系統(tǒng),包括多個偽隊列,每個隊列表示一個目標服務并且映射到實際的隊列。
      6.按照權(quán)利要求4或5的系統(tǒng),其中所述代理程序從實際隊列讀取消息。
      7.一種計算機程序,包括程序代碼,用于當在計算機上被執(zhí)行的時候執(zhí)行權(quán)利要求1或2的方法。
      8.一種用于發(fā)送對于目標服務的請求以這些操作的裝置,所述裝置包括用于接收對目標服務的請求以執(zhí)行操作的裝置;用于為消息隊列建立消息的裝置,所述消息表示請求,所述消息包括對消息隊列和要進行的操作的指示;用于確定所述消息隊列的位置的裝置,所述隊列是在消息傳送簇中的簇隊列;以及用于向所述隊列發(fā)送所述消息的裝置,其中所述隊列表示目標服務。
      9.按照權(quán)利要求8的裝置,其中所述隊列是偽隊列,所述偽隊列映射到實際隊列。
      全文摘要
      本發(fā)明提供了一種系統(tǒng),其中在消息傳送系統(tǒng)中的隊列和對象/服務可以經(jīng)由同一結(jié)構(gòu)來容納(消息群集)。
      文檔編號G06F17/00GK1508701SQ0314361
      公開日2004年6月30日 申請日期2003年7月25日 優(yōu)先權(quán)日2002年12月18日
      發(fā)明者斯蒂芬·J·托德, 斯蒂芬 J 托德 申請人:國際商業(yè)機器公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1