




已閱讀5頁,還剩8頁未讀, 繼續(xù)免費閱讀
版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
JAVA與.NET的相互調(diào)用通過Web服務實現(xiàn)相互調(diào)用博客園 / 2011-08-28 / 字體大小選擇:大 中 小JAVA與.NET是現(xiàn)今世界競爭激烈的兩大開發(fā)媒體,兩者語言有很多相似的地方。而在很多大型的開發(fā)項目里面,往往需要使用兩種語言進行集成開發(fā)。而很多的開發(fā)人員都會偏向于其中一種語言,在使用集成開發(fā)的時候?qū)α硪环N語言感覺到畏懼。在這里在下向各位介紹一下,JAVA與.NET相互調(diào)用的例子。下面的介紹主要包括三方面:一是通過常用Web服務進行相互調(diào)用,二是使用TCP/IP套接字進行相互調(diào)用,三是使用Remote實現(xiàn)遠程對象相互調(diào)用。在這章里面先為大家介紹一下最簡單,最常用的Web服務相互調(diào)用方式。首先說一下Web服務的來源,Web服務是一種新的Web應用程序分支,可以執(zhí)行從簡單的請求到復雜商務處理等任何功能。一旦部署以后,其他Web服務應用程序可以發(fā)現(xiàn)并調(diào)用它部署的服務。 Web Service是一種應用程序,它可以使用標準的互聯(lián)網(wǎng)協(xié)議,像超文件傳輸協(xié)議(HTTP)、簡單對象訪問協(xié)議(SOAP)、XML等,將功能綱領性地體現(xiàn)在互聯(lián)網(wǎng)和企業(yè)內(nèi)部網(wǎng)上,Web服務被視作是Web上的組件編程。Web服務必須提供一套標準的類型系統(tǒng),用于溝通不同平臺、編程語言和組件模型中的不同類型系統(tǒng)。XML和XSD可擴展的標記語言XML是Web Service平臺中表示數(shù)據(jù)的基本格式。除了易于建立和易于分析外,XML主要的優(yōu)點在于它既與平臺無關,又與廠商無關。XML是由萬維網(wǎng)協(xié)會 (W3C)創(chuàng)建,W3C制定的XML SchemaXSD定義了一套標準的數(shù)據(jù)類型,并給出了一種語言來擴展這套數(shù)據(jù)類型。 Web Service平臺是用XSD來作為數(shù)據(jù)類型系統(tǒng)的。當你用某種語言如JAVA、C#來構造一個Web Service時,為了符合Web Service標準,所有你使用的數(shù)據(jù)類型都必須被轉換為XSD類型。如想讓它使用在不同平臺和不同軟件的不同組織間傳遞,還需要通過SOAP協(xié)議將它包裝起來。SOAPSOAP即簡單對象訪問協(xié)議(Simple Object Access Protocol),它是用于交換XML編碼信息的輕量級協(xié)議。它有三個主要方面:XML-envelope為描述信息內(nèi)容和如何處理內(nèi)容定義了框架,將程序?qū)ο缶幋a成為XML對象的規(guī)則,執(zhí)行遠程過程調(diào)用(RPC)的約定。SOAP可以運行在任何其他傳輸協(xié)議上。例如,你可以使用 SMTP,即因特網(wǎng)電子郵件協(xié)議來傳遞SOAP消息,這可是很有誘惑力的。在傳輸層之間的頭是不同的,但XML有效負載保持相同。Web Service 希望實現(xiàn)不同的系統(tǒng)之間能夠用“軟件-軟件對話”的方式相互調(diào)用,打破了軟件應用、網(wǎng)站和各種設備之間的格格不入的狀態(tài),實現(xiàn)“基于Web無縫集成”的目標。WSDLWeb Service描述語言WSDL就是用機器能閱讀的方式提供的一個正式描述文檔而基于XML的語言,用于描述Web Service及其函數(shù)、參數(shù)和返回值。因為是基于XML的,所以WSDL既是機器可閱讀的,又是人可閱讀的。下面分開兩個方面講解一下如果通過Web服務實現(xiàn)JAVA與.NET的相互調(diào)用。一、使用.NET作為服務器端,JAVA作為客戶端實現(xiàn)相互調(diào)用。在.NET系統(tǒng)里面,以WCF作為新一代的服務開發(fā)工具是微軟的一個新賣點,我們就以WCF為例子實現(xiàn)服務器端,首先新建一個網(wǎng)站項目,在網(wǎng)站添加一個WCF服務PersonService。你將看到PersonService.svc、IPersonService、PersonService.cs三個文件,其中IPersonService是對向暴露一個接口,接口的功能由PersonService來實現(xiàn),客戶端則通過PersonalService.svc來尋獲服務,并對其添加引用的。/在PersonService.svc里,只包括一行,其中列明了該服務的實現(xiàn)類/服務的實現(xiàn)using System;using System.Collections.Generic;using System.Linq;using System.Runtime.Serialization;using System.ServiceModel;using System.Text;/ 注意: 使用“重構”菜單上的“重命名”命令,可以同時更改代碼和配置文件中的接口名“IPersonService”。namespace Service ServiceContractpublic interface IPersonService OperationContract IList GetList(); public class PersonService : IPersonService public IList GetList() IList personList= new List(); Person person1= new Person(); person1.ID= 0; person1.Age= 27; person1.Name= Leslie; personList.Add(person1); Person person2= new Person(); person2.ID= 1; person2.Age= 23; person2.Name= Rose; personList.Add(person2); Person person3= new Person(); person3.ID= 2; person3.Age= 29; person3.Name= Jack; personList.Add(person3);return personList; 為了使用Person能夠?qū)崿F(xiàn)遠程傳送,我們必須對Person進行序列化,在WCF中包括服務契約、數(shù)據(jù)契約、消息契約三部分,而數(shù)據(jù)契約正是用于對數(shù)據(jù)進行序列化處理的,如果想對WCF有進一步的了解,可以鏈接使用WCF實現(xiàn)SOA面向服務編程:using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Runtime.Serialization;/ /Person 的摘要說明/ namespace Service DataContractpublic class Person DataMemberpublic int ID get;set; DataMemberpublic string Name get;set; DataMemberpublic int Age get;set; 數(shù)據(jù)契約里面有多種的序列化方式,包括DataContractSerializer,NetDataContractSerializer,XmlServializer,DataContractJsonSerializer。在這里面只用使用最普遍的DataContractSerializer,而DataContractJsonSerializer是現(xiàn)今比較熱門的方式,特別是在開發(fā)網(wǎng)絡項目時候,多使用Json進行數(shù)據(jù)通訊。最后配置好web.config,就可以成功將WCF服務發(fā)布: /注意將httpGetEnabled設置為true,使客戶端能夠成功捕獲服務 /name屬性必須與服務實現(xiàn)類的類名相對應 /contract必須與契約名相對應 /注意打開元數(shù)據(jù),使客戶能下載下面使用MyEclipse8.6進行客戶端開發(fā),首先添加對服務的引用,按Ctrl+N新建一個項目,選擇Web Service-Web Service Client,單擊下一步,這時候選擇在Framework上選擇JAX-WS,單擊下一步:在WSDL URL上輸入服務的路徑,并為服務添加一個Java pagckage包myServices,點擊完成,這樣WCF服務便可成功加入到客戶端。此時為此項目添加測試類,運行進行測試:package myAssembly;import java.util.List;public class Test public static void main(String args) myServices.PersonService service=new myServices.PersonService();/獲取服務對象 myServices.IPersonService personService=service.getBasicHttpBindingIPersonService();/通過basicHttpBinding協(xié)議綁定遠程對象 List personList=personService.getList().getPerson();for(int n=0;nAdd XFire Web Service Capabilities,引用了XFire工具包以后。在項目會自動建立一個WebServices文件夾,文件夾里面的service.xml就是對發(fā)布Web Service進行配置的?,F(xiàn)在先建立好一個服務層:/建立一個Model包,里面包含一個值對象Person package Model;import java.io.Serializable;public class Personimplements Serializable private int id;private String name;private int age;public int getId()return id; public void setId(int id)this.id=id; public String getName()return name; public void setName(String name)=name; public int getAge()return age; public void setAge(int age)this.age=age; /建立一個Service包,里面包含服務接口package Service;import java.util.List;import Model.*;public interface PersonService List GetList();/建立一個ServiceImpl包,實現(xiàn)服務package ServiceImpl;import Model.*;import Service.*;import java.util.*;public class PersonServiceImplimplements PersonServicepublic List GetList() List personList=new LinkedList(); Person person1=new Person(); person1.setId(0); person1.setAge(23); person1.setName(Leslie); personList.add(person1); Person person2=new Person(); person2.setId(1); person2.setAge(30); person2.setName(Mike); personList.add(person2);return personList; 在Service.xml上面對服務進行配置:PersonServicehttp:/leslie-pc:8080/PersonService Service.PersonService ServiceImpl.PersonServiceImpl其配置功能如下:service service 標簽和它所包含的 xml 內(nèi)容為發(fā)布成 Web 服務的 POJO 提供完整的描述。name Web 服務被發(fā)布時所采用的唯一名稱。namespace Web 服務發(fā)布時所使用的命名空間。serviceClass Web 服務接口類的全名,包括包名和類名。implemetationClass Web 服務實現(xiàn)類的全名,包括包名和類名。現(xiàn)在可以運行程序,對服務進行測試,在測試時輸入服務地址http:/leslie-pc:8080/WebSite1/services/PersonService?wsdl,系統(tǒng)將顯示wsdl代碼: - - - - - - - - - - - - 服務器端測試已經(jīng)成功,現(xiàn)在使用.NET對服務進行調(diào)用,在項目上單擊右鍵-選擇添加Web服務-在URL地址上輸入服務的地址http:/leslie-pc:8080/WebSite1/services/PersonService?wsdl ,在一個頁面上輸入代碼進行測試。protected void Page_Load(object sender, EventArgs e) Service.PersonService personService= ne
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 華大聯(lián)盟數(shù)學試卷
- 中國女士呢行業(yè)市場發(fā)展前景及發(fā)展趨勢與投資戰(zhàn)略研究報告(2024-2030)
- 升壓站施工場地防汛安全風險評估報告
- 油茶行業(yè)研究報告
- 安全風險評估報告52917
- 中國海豹魚鱗塊褥子項目投資可行性研究報告
- 健康男性課件視頻
- 藥品注冊管理辦法中國
- 董事會授權管理辦法決議
- 虹口區(qū)智慧城市管理辦法
- 4輸變電工程施工質(zhì)量驗收統(tǒng)一表式(電纜工程電氣專業(yè))-2024年版
- 無菌技術操作評分標準
- JJG 693-2011可燃氣體檢測報警器
- YY/T 0287-2017醫(yī)療器械質(zhì)量管理體系用于法規(guī)的要求
- LY/T 3256-2021全國優(yōu)勢喬木樹種(組)基本木材密度測定
- GB/T 25760-2010滾動軸承滾針和推力球組合軸承外形尺寸
- 2023年歷年軍考真題之軍考數(shù)學真題
- 特勞特-定位課件
- 口腔工藝管理基教學課件
- 真石漆施工外墻涂料工藝方案課件
- 2022年泰州興化市教師進城考試筆試題庫及答案解析
評論
0/150
提交評論