国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

用Java Web服務打造聊天程序

2019-11-18 15:39:38
字體:
來源:轉載
供稿:網友

  Web服務是什么或者應該是什么有許多定義,每個或多或少都可以理解。很有趣的事情是最簡單的東西往往是最難描述的。眼前就有一個很好的例子:一個Web服務是一個可以和外部世界交換文檔的實體。這個實體是自我描述的并且擁有一個唯一的特性。

  這個文檔內容是xml;嚴格來說是SOAP。SOAP(簡單對象存取協議)定義Web服務消費和生成的XML文檔的內部結構。SOAP被認為是一個行業標準并且被許多跨平臺軟件供給商、硬件平臺、操作系統或者編程語言廣泛地采用。

  每個Web服務都有一個地址。這是它的ID。這個地址由一個URI(亦稱URL)定義。一個Web服務存在于并且被它的URI標識。這個地址經常被稱為一個終端。這個ID和內容的安全性毫無關系。本教程的服務存在于http://localhost:6060/ChatService/。

  Web服務帶有它自己的描述。這告訴你它交換的是什么類型的文檔。它說明了服務存在于什么地方(URI地址)。并且它還說明了它可以使用哪個傳輸協議來交換文檔。Web服務描述使用的語言是WSDL(Web服務定義語言)。一個Web服務完全由它的WSDL文檔描述。為了和一個獨立Web服務通訊,你只需要WSDL文檔。即使WSDL在它自己的上下文中描述Web服務,它還是無法描述多個Web服務組合起來所形成的美妙的樂章。

  Web服務有一個地址,但是為了訪問它,你需要發現它在哪兒。換句話說,你需要一個電話號簿列表Web服務。UDDI (通用描述、發現和集成)是行業標準的電話號碼薄。UDDI處理寄存器并且發現Web服務。

  綜合起來,一個Web服務就是和現實世界交換SOAP文檔的一個實體,使用一些URI定位,使用WSDL文檔描述并且可以使用UDDI注冊來列出并發現。 一個真實的示例

  無數類型的文檔可以被發送到Web服務并來源于Web服務。它可以是一個鋼廠中的周期的溫度報道,它可以是一個地方政府定義的退稅請求,或者它可以是一個從一個軟件組件到另一個組件的RPC調用的文檔風格表現。同樣的情況也發生在文檔交換方案中。
你可以設想單向的消息或者請求-響應消息傳送,這里面都需要跟隨一個響應文檔的請求文檔。 Web服務大部分當前的用法遵循XML模式上的遠程過程調用。這就是為什么開發者可以很輕易轉到開發Web服務,而不要對現有的應用程序做重大的修改,或者之需要付出最小的努力就能創建用于Web服務的客戶端。Web服務框架經常可以隱藏底層體系結構的復雜性。他們通常提供了用于從語言到WSDL和從WSDL到語言生成的工具。展示象Web服務這樣的語言結構比手工處理XML文檔快得多并且輕易的多。現在,Web服務經常用作一個集成工具,讓開發者和系統設計師互連不同的應用程序。

  即使本文中的Web服務和它的客戶端遵循XML模式上的遠程過程調用,但是Web服務的應用范圍是非常寬廣的。近期,有許多基于松散耦合的純文檔交換模式實現。

  一個簡單的聊天服務器

  在本文中,我試圖創建一個比聞名的股票行情服務更具挑戰的應用程序,但是仍然簡單易讀。它是一個聊天服務器應用程序。聊天服務器的功能是非常簡單的客戶端或者發送新消息并讀取它們。

  這個聊天服務器實現是與Wasp和Web服務完全互不相關的。它可以成功地被編譯并且用于任何其他的java環境。這個聊天服務器還描述預存在的業務邏輯。請查看代碼來領會。你可以在這里下載用于聊天實現的源代碼(而不是Web服務,那個還沒有寫)。

  設計聊天服務器

  聊天服務器的全部的實現被分割到好幾個類中。接口定義在程序包com.systinet.simplechat.server.iface中。它由三個類組成;聊天服務器的接口類IChatService.java和用于聊天消息的表現兩個結構和participants-ChatMessage.java和ChatPerson.java。

  聊天服務器的實現在程序包com.systinet.simplechat.server.impl中。它把簡單的接口的實現從后端業務邏輯中分離出來。我使用了適配器設計模式,那就是說,到ChatService.java的調用被委托給一個后端處理機。業務邏輯是相當簡單的。它是在一個集合中保存消息的SimpleBackendImpl.java類的單一實例。

  初看起來,置配器/后端實現看起來對于用于一個簡單的教程太復雜了。然而,即使復雜的現有的業務邏輯可以被重使用來變成一個沒有任何改變它的代碼的需要的Web服務。這是一個常見的現實的使用案例。即使應用程序沒有使用原來的適配器模式,編寫一個象ChatService這樣的包裝類,不需要重寫原始的后端程序邏輯。然而,后端可以使用JDBC和一個關系數據庫來實現,否則作為一個EJB,甚至調用外部非Java應用程序的本地方法。可能發生的事是無窮盡的。適配器模式只答應你很快地觸發新的后端邏輯。 把一個聊天服務器轉為一個Web服務

  現在,這個聊天服務器只是一個Java實現。它還不是SOAP。它只是一個用于運行在相同JVM上的客戶端的可工作的聊天服務器。下一步就是生成聊天服務器發言SOAP并且創建一個描述它的WSDL文檔。



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 湖南省| 苏尼特右旗| 共和县| 青神县| 丹江口市| 锦屏县| 霍州市| 延川县| 九寨沟县| 镶黄旗| 惠州市| 吉木乃县| 旬阳县| 庆安县| 成武县| 宁海县| 四会市| 红河县| 屏边| 蒙山县| 佛教| 阿瓦提县| 金山区| 永丰县| 福海县| 凤台县| 调兵山市| 玉门市| 中卫市| 长汀县| 法库县| 五寨县| 灵川县| 安平县| 凤阳县| 新兴县| 登封市| 马边| 商洛市| 毕节市| 镇巴县|