freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內容

基于websocket的異構應用協(xié)同服務設計與實現(xiàn)(編輯修改稿)

2025-07-15 17:15 本頁面
 

【文章內容簡介】 一、開放的特性,使得基于XMPP的服務器與客戶端更加規(guī)范、更加標準,易于擴展。XMPP協(xié)議處于TCP/IP分層模型中的應用層,處于傳輸層TCP之上,和WebSocket協(xié)議處于同一層[6]。使用XMPP協(xié)議的各主體之間通過滿足XMPP協(xié)議的XML流來進行信息交互。每一條XML流都是一個信息交互de 基本單位,一般會包含XML流的發(fā)出者、接收者、流id、流類型、操作和信息等等內容。XMPP可以分為三種類型,即message、presence和IQ。其中message用來表示應用協(xié)同的過程中所產(chǎn)生的具體的協(xié)同信息及協(xié)同事務;presence用來表示協(xié)同應用的狀態(tài)信息,比如在線、離線、被訂閱等等狀態(tài);IQ用來表示協(xié)同過程中的請求和查詢信息,有get、set、result、error四種,其中get表示請求數(shù)據(jù)、set表示設置數(shù)據(jù)、result表示服務器返回給客戶端的結果、error表示請求或者查詢的過程中發(fā)生錯誤。XMPP協(xié)議的開放性和可擴展性使得其能夠以一個更高層的、更規(guī)范的方式來傳輸即時消息,可以跨平臺、跨應用、跨協(xié)議來進行消息的傳遞。在XMPP中,總共有三個角色,分別是服務器、組件和客戶端[7]。服務器用來對客戶端提供服務,承擔了記錄客戶端信息、管理客戶端連接、路由客戶端信息等功能;組件用來對服務器進行一定程度或某一個方面的輔助,協(xié)助服務器完成網(wǎng)絡通信,一般具有一定特殊性,帶有一定業(yè)務特性;客戶端用來幫助用戶進行收發(fā)數(shù)據(jù)、處理業(yè)務、完成任務。XMPP在這三者之間以純文本XML的方式進行傳輸。每一條XMPP消息都成為一“節(jié)”或者“stanza”,在邏輯上相互獨立,每一個stanza都承載著一條業(yè)務信息或者控制信息,是XMPP協(xié)議中用來傳送信息的最基本的單位。XMPP中共有三種stanza類型,分別是“Message”、“Presence”和“IQ”,每一種stanza類型中又包含四個基本屬性,分別是“from”、“to”、“type”、“xmlns”。其中,四個屬性的作用分別為:(1) from:from代表stanza的發(fā)送方。發(fā)送方實體可以是客戶端(用戶名),也可以是服務器(域名),也可以是組件(組件名),也可以是協(xié)同空間(協(xié)同空間id)。(2) to:to代表stanza的接收方。一般由本條stanza的發(fā)送方指定。發(fā)送方實體可以是客戶端(用戶名),也可以是服務器(域名),也可以是組件(組件名),也可以是協(xié)同空間(協(xié)同空間id)。(3) type表示stanza子類型。type的取值一般會根據(jù)stanza類型的不同而不同,Message類型的節(jié)、Presence類型的節(jié)和IQ類型的節(jié)都會有自己專有的子類型。(4) xmlns又稱為“命名空間”,服務根據(jù)命名空間的不同將stanza 交由不同的處理類進行處理。三種類型的作用分別為:(1) MessageMessage類型的節(jié)一般用于承載用戶之間首發(fā)的即時交互信息,或者應用系統(tǒng)主動發(fā)送的信息。其type取值一般有“chat”、“groupchat”、“error”等。chat表示一對一交互時所產(chǎn)生的數(shù)據(jù),“group”表示群組交互時所產(chǎn)生的數(shù)據(jù),“error”表示錯誤數(shù)據(jù),一般會在服務器處理出現(xiàn)錯誤或者接收方不能對消息進行處理時發(fā)送。(2) PresencePresence類型的節(jié)一般用于表示自身狀態(tài),用于客戶端。其type屬性有以下幾種,根據(jù)客戶端實際的狀態(tài)而不同,一般有“available”、“unavailable”和“error”等?!癮vailable”表示用戶當前可用,可以給用戶轉發(fā)數(shù)據(jù),“unavailable”表示用戶當前不可用,不可給用戶轉發(fā)數(shù)據(jù),“error”表示在操作過程中出現(xiàn)了錯誤。(3) IQIQ類型的節(jié)一般用于請求或者消息查詢。其type屬性有“get”、“set”、“result”、“error”。其中get表示請求數(shù)據(jù),set表示設置參數(shù),result表示請求的結果,error表示操作過程中出現(xiàn)錯誤。客戶端和服務器所處理的所有XMPP消息連在一起會形成一個完整XML文檔,文檔以stream開始,以/stream結束,中間包含若干個stanza節(jié)。XMPP協(xié)議的核心就是通過stream將數(shù)據(jù)通過事先協(xié)商好的方式進行通信。在stream建立的同時建立連接,在stream關閉的同時關閉連接。XMPP有一個很重要的概念:地址。地址是XMPP中的統(tǒng)一資源定位符,能唯一地定義XMPP中的資源。XMPP中的地址稱為JabberID,一般情況下簡稱為JID,可以用來標識XMPP系統(tǒng)中的所有的XMPP實體。JID包含三個部分,分別是domain、node idenfitifer和resource。其中,domain一般代表XMPP服務器的名稱,node identifer一般代表一些主動發(fā)送請求的實體,典型的比如客戶端,resource一般代表會話或者連接,比如,通過spark(一個流行XMPP客戶端)登陸的用戶jid中的resource部分就會是”spark”。三個部分的排列如下:jid = [ node @ ] domain [ / resource ] 第3章 第三章 協(xié)同通信技術分析協(xié)同通信技術是協(xié)同工作的基礎,協(xié)同服務必須支持某種協(xié)同通信技術,而基于WebSocket的異構應用協(xié)同服務必須對包括WebSocket技術在內的多種協(xié)同技術進行支持。為了基于WebSocket的異構應用協(xié)同服務設計與實現(xiàn),必須首先分析協(xié)同服務需要支持的協(xié)同通信技術。本章介紹了常用的及新興的幾種網(wǎng)絡通信技術,網(wǎng)絡通信技術主要分為C/S架構下的通信技術及B/S架構下的通信技術,分別用于C/S架構下應用的協(xié)同及B/S架構下應用的協(xié)同。其中,C/S架構下的通信技術以socket為主,B/S架構下的通信技術以BOSH技術、WebSocket技術為主。其中WebSocket技術是近年新興的網(wǎng)絡通信技術。 C/S架構下通信技術分析C/S架構下的通信技術以socket技術為主。MINA框架對socket進行了封裝,提供了簡易的接口,可以讓使用者通過接口方便高效的進行通信。MINA是Multipurpose Infrastructure NetWorked Application的簡稱,專門用于網(wǎng)絡傳輸。MINA框架以java的BIO、NIO相關技術為基礎,提供了一個處于傳輸層之上的傳輸API,用來為開發(fā)者提供簡單而高質量的傳輸接口。 NIO概述java中的IO主要有兩種類型:BIO、NIO。BIO為同步阻塞式IO,使用這種IO模式時,首先需要在服務器端打開一個服務器端socket端口進行監(jiān)聽,然后在客戶端打開一個客戶端socket來連接到服務器端socket,最后才能進行通信。在這種連接方式下,每當有一個客戶端請求建立連接后,都會首先查詢服務器是否有相對應的相關線程,如果有,服務器就要重新打開一個線程,建立到此客戶端的連接,然后客戶端等待線程建立完成后再執(zhí)行下一步動作;如果沒有,就會一直等待下去,直到超時或者被拒絕。BIO為每個連接都啟動一個線程,服務器為每個連接的客戶端操持一個線程,多個線程同時運行,每個線程中的方法都需要根據(jù)當前消息的傳遞情況進行阻塞運行,當連接數(shù)量增加時,服務器需要維護大量的線程,從而導致消耗資源過多,如下圖所示: BIO消息傳輸NIO的特點是在一個線程內保持多個連接,NIO保持了一個多路復用器,新的連接會被注冊到多路復用器之上。NIO是非阻塞式IO,和BIO不同,NIO將所有的IO事件處理放到同一個線程之中,利用事件驅動而非同步監(jiān)視,采用channel(通道)進行數(shù)據(jù)傳輸,可以將數(shù)據(jù)放在通道內雙向傳輸,而不必像傳統(tǒng)IO一樣通過單向的stream(流)來傳輸,如下圖所示: NIO消息傳輸java NIO提供了四個NIO結構,分別是處理數(shù)據(jù)的Buffer、字節(jié)Unicode轉換器chartsets、非阻塞IO主類selector、實體連接channel。其中channel類和selector類最為重要,channel類為用戶提供了服務器和客戶端進行連接的接口,和傳統(tǒng)socket IO從OutputStream中讀取、向InputStream中寫入不同,在NIO中,用戶可以直接從channel中讀取數(shù)據(jù)或者寫入數(shù)據(jù)。selector類是一個多路復用器,維護著所有的通道信息,selector類是NIO的主類,只需要把目標通道的值向NIO的主類selector注冊,就會在通道產(chǎn)生數(shù)據(jù)時獲得通知。selector類會在內部維持一個通道鏈,不斷地在通道鏈之中進行輪詢,一旦某一個通道有數(shù)據(jù)產(chǎn)生,selector就會獲得此事件,將獲取的數(shù)據(jù)通知上層。 基于MINA的通信技術分析MINA框架采用非阻塞方式異步傳輸,模塊之間耦合度很低,通過事件進行驅動,可以自定義過濾器鏈,自定義線程數(shù)量,非常適用于多連接多會話類型的服務。MINA上面承接應用層,為應用層提供接口,下面通過調用Java API和Invm munication,MINA負責將底層傳輸?shù)臄?shù)據(jù)轉換為JAVA可以理解的對象,為用戶程序提供服務,或者將JAVA產(chǎn)生的結果對象轉換為底層數(shù)據(jù)發(fā)送給TCP/UDP。MINA的工作流程如下圖所示: MINA工作流程MINA接收到客戶端發(fā)送的信息后,IoService接口將信息相關屬性存放在session(會話)中,然后將信息投入過濾器鏈(IO Filter Chain)中。過濾器鏈中存在多個過濾器,這些過濾器將收到的原始信息轉換為業(yè)務所理解的標準信息,然后將信息發(fā)送給IoHandler(IO處理器)進行處理。反過來,當IO處理器將信息處理完成,返回給客戶端時,首先也要經(jīng)過過濾器鏈進行層層過濾,將標準信息轉換為原始信息,再通過IoService接口返回給客戶端。MINA有三個主要接口,分別為IoService接口、IoFilter接口和IoHandler接口。三個接口主要功能如下:(1) IoService接口模塊:IoService接口是連接客戶端和服務器之間的橋梁,有IoAcceptor、IoConnector兩個次級接口,分別管理服務端接口、客戶端接口;派生出AbstractIoService抽象類,用于實現(xiàn)服務端接口和客戶端接口所必需實現(xiàn)的部分。AbstractIoAcceptor抽象類實現(xiàn)了IoAcceptor接口和AbstractIoService抽象類,構成了服務器端管理類,派生出NioSocketAcceptor子類。AbstractIoConnector抽象類實現(xiàn)了IoConnector接口和AbstractIoService抽象類,構成了客戶端管理類,派生出NioSocketConnector子類。整個IoService接口如下所示: IoService接口(2) IoFilter接口模塊IoFilter接口完成了底層信息到標準信息對象的轉換,是MINA中最重要的部分。和Servlet過濾器類似,IoFilter用于過濾和處理I/O過程中產(chǎn)生的信息,另外,同時也承擔了了日志信息、性能測試、信息驗證等功能。IoFilter接口有IoFilterAdapter類、ExecutorFilter類、LoggingFilter類、ProtocolCodecFilter類、ReferenceCountingFilter類等實現(xiàn)類。其中:IoFilterAdapter是抽象類,作為一個適配器提供給用戶,MINA框架本身已經(jīng)實現(xiàn)了這個適配器下的一些處理類,用戶可以提供更多的處理列。ReferenceCountingFilter是一個IoFilter的管理類,監(jiān)控filter個數(shù),生成或銷毀IoFilter。MINA已經(jīng)提供了IoFilterAdapter類的多個實現(xiàn),包括ExecutorFilter類、LoggingFilter類、ProtocolCodecFilter類,用于處理具體事務,其中ProtocolCodecFilter為用戶提供了自配置編碼器和解碼器的接口。整個IoFilter接口模塊如下圖所示: IoService接口(3) IoHandler接口接口模塊IoHandler接口模塊用來實現(xiàn)MINA具體的業(yè)務邏輯。在IoHandler中有七個方法分別為:sessionCreated:當新的會話建立時調用。sessionOpened:當會話打開時調用。messageReceived:當收到消息時調用。messageSent:當消息發(fā)送后調用。sessionIdle:當會話掛起時調用。sessionClosed:當會話關閉時調用。exceptionCaught:當出現(xiàn)異常時調用。 BOSH通信技術初步分析BOSH技術是B/S架構下進行協(xié)同時所采用的傳統(tǒng)的通信技術,在瀏覽器客戶端和服務器之間通過HTTP無狀態(tài)短連接模擬長連接以進行雙向通信。其技術的原理是,服務器對客戶端發(fā)送的請求,不直接返回,而是對其緩存,直到有數(shù)據(jù)需要發(fā)送給客戶端或者連接超時,才對客戶端請求進行回復。而客戶端方面,每當接收到服務器返回的信息,就立刻向服務器發(fā)送一個空的請求,這樣,服務器就會一直保持有一個客戶端的請求,可以隨時給客戶端發(fā)送數(shù)據(jù)。當客戶端想主動發(fā)送數(shù)據(jù)而不僅僅是空的請求時,需要通過第二條HTTP連接發(fā)送信息。服務器接收到通過第二條HTTP連接發(fā)送的信息后,便將已經(jīng)緩存的客戶端空請求返回,轉而緩存客戶端發(fā)送的有實際數(shù)據(jù)的HTTP請求??蛻舳私邮盏椒祷氐目栈貜秃?,必須經(jīng)過一個網(wǎng)絡來回的時間后,才能繼續(xù)進行發(fā)送。BOSH下客戶端服務器的信息傳輸方式如下圖所示: BOSH信息傳輸流程 WebSocket技術分析WebSocket協(xié)議使在受控環(huán)境下運行不受信任代碼的客戶端和能夠選擇與那些代碼通信的遠程主機之間能夠雙向通信[8]。WebSocket是HTML5框架下的一套新的通信協(xié)議,可以方便地在瀏覽器和服務器之間建立雙向持久通道,以方便協(xié)同信息的交換和協(xié)同工作的展開。 WebSocke
點擊復制文檔內容
醫(yī)療健康相關推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1