




已閱讀5頁,還剩8頁未讀, 繼續(xù)免費閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
JAVA與.NET的相互調(diào)用通過Web服務(wù)實現(xiàn)相互調(diào)用博客園 / 2011-08-28 / 字體大小選擇:大 中 小JAVA與.NET是現(xiàn)今世界競爭激烈的兩大開發(fā)媒體,兩者語言有很多相似的地方。而在很多大型的開發(fā)項目里面,往往需要使用兩種語言進(jìn)行集成開發(fā)。而很多的開發(fā)人員都會偏向于其中一種語言,在使用集成開發(fā)的時候?qū)α硪环N語言感覺到畏懼。在這里在下向各位介紹一下,JAVA與.NET相互調(diào)用的例子。下面的介紹主要包括三方面:一是通過常用Web服務(wù)進(jìn)行相互調(diào)用,二是使用TCP/IP套接字進(jìn)行相互調(diào)用,三是使用Remote實現(xiàn)遠(yuǎn)程對象相互調(diào)用。在這章里面先為大家介紹一下最簡單,最常用的Web服務(wù)相互調(diào)用方式。首先說一下Web服務(wù)的來源,Web服務(wù)是一種新的Web應(yīng)用程序分支,可以執(zhí)行從簡單的請求到復(fù)雜商務(wù)處理等任何功能。一旦部署以后,其他Web服務(wù)應(yīng)用程序可以發(fā)現(xiàn)并調(diào)用它部署的服務(wù)。 Web Service是一種應(yīng)用程序,它可以使用標(biāo)準(zhǔn)的互聯(lián)網(wǎng)協(xié)議,像超文件傳輸協(xié)議(HTTP)、簡單對象訪問協(xié)議(SOAP)、XML等,將功能綱領(lǐng)性地體現(xiàn)在互聯(lián)網(wǎng)和企業(yè)內(nèi)部網(wǎng)上,Web服務(wù)被視作是Web上的組件編程。Web服務(wù)必須提供一套標(biāo)準(zhǔn)的類型系統(tǒng),用于溝通不同平臺、編程語言和組件模型中的不同類型系統(tǒng)。XML和XSD可擴(kuò)展的標(biāo)記語言XML是Web Service平臺中表示數(shù)據(jù)的基本格式。除了易于建立和易于分析外,XML主要的優(yōu)點在于它既與平臺無關(guān),又與廠商無關(guān)。XML是由萬維網(wǎng)協(xié)會 (W3C)創(chuàng)建,W3C制定的XML SchemaXSD定義了一套標(biāo)準(zhǔn)的數(shù)據(jù)類型,并給出了一種語言來擴(kuò)展這套數(shù)據(jù)類型。 Web Service平臺是用XSD來作為數(shù)據(jù)類型系統(tǒng)的。當(dāng)你用某種語言如JAVA、C#來構(gòu)造一個Web Service時,為了符合Web Service標(biāo)準(zhǔn),所有你使用的數(shù)據(jù)類型都必須被轉(zhuǎn)換為XSD類型。如想讓它使用在不同平臺和不同軟件的不同組織間傳遞,還需要通過SOAP協(xié)議將它包裝起來。SOAPSOAP即簡單對象訪問協(xié)議(Simple Object Access Protocol),它是用于交換XML編碼信息的輕量級協(xié)議。它有三個主要方面:XML-envelope為描述信息內(nèi)容和如何處理內(nèi)容定義了框架,將程序?qū)ο缶幋a成為XML對象的規(guī)則,執(zhí)行遠(yuǎn)程過程調(diào)用(RPC)的約定。SOAP可以運行在任何其他傳輸協(xié)議上。例如,你可以使用 SMTP,即因特網(wǎng)電子郵件協(xié)議來傳遞SOAP消息,這可是很有誘惑力的。在傳輸層之間的頭是不同的,但XML有效負(fù)載保持相同。Web Service 希望實現(xiàn)不同的系統(tǒng)之間能夠用“軟件-軟件對話”的方式相互調(diào)用,打破了軟件應(yīng)用、網(wǎng)站和各種設(shè)備之間的格格不入的狀態(tài),實現(xiàn)“基于Web無縫集成”的目標(biāo)。WSDLWeb Service描述語言WSDL就是用機器能閱讀的方式提供的一個正式描述文檔而基于XML的語言,用于描述Web Service及其函數(shù)、參數(shù)和返回值。因為是基于XML的,所以WSDL既是機器可閱讀的,又是人可閱讀的。下面分開兩個方面講解一下如果通過Web服務(wù)實現(xiàn)JAVA與.NET的相互調(diào)用。一、使用.NET作為服務(wù)器端,JAVA作為客戶端實現(xiàn)相互調(diào)用。在.NET系統(tǒng)里面,以WCF作為新一代的服務(wù)開發(fā)工具是微軟的一個新賣點,我們就以WCF為例子實現(xiàn)服務(wù)器端,首先新建一個網(wǎng)站項目,在網(wǎng)站添加一個WCF服務(wù)PersonService。你將看到PersonService.svc、IPersonService、PersonService.cs三個文件,其中IPersonService是對向暴露一個接口,接口的功能由PersonService來實現(xiàn),客戶端則通過PersonalService.svc來尋獲服務(wù),并對其添加引用的。/在PersonService.svc里,只包括一行,其中列明了該服務(wù)的實現(xiàn)類/服務(wù)的實現(xiàn)using System;using System.Collections.Generic;using System.Linq;using System.Runtime.Serialization;using System.ServiceModel;using System.Text;/ 注意: 使用“重構(gòu)”菜單上的“重命名”命令,可以同時更改代碼和配置文件中的接口名“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)遠(yuǎn)程傳送,我們必須對Person進(jìn)行序列化,在WCF中包括服務(wù)契約、數(shù)據(jù)契約、消息契約三部分,而數(shù)據(jù)契約正是用于對數(shù)據(jù)進(jìn)行序列化處理的,如果想對WCF有進(jìn)一步的了解,可以鏈接使用WCF實現(xiàn)SOA面向服務(wù)編程: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)絡(luò)項目時候,多使用Json進(jìn)行數(shù)據(jù)通訊。最后配置好web.config,就可以成功將WCF服務(wù)發(fā)布: /注意將httpGetEnabled設(shè)置為true,使客戶端能夠成功捕獲服務(wù) /name屬性必須與服務(wù)實現(xiàn)類的類名相對應(yīng) /contract必須與契約名相對應(yīng) /注意打開元數(shù)據(jù),使客戶能下載下面使用MyEclipse8.6進(jìn)行客戶端開發(fā),首先添加對服務(wù)的引用,按Ctrl+N新建一個項目,選擇Web Service-Web Service Client,單擊下一步,這時候選擇在Framework上選擇JAX-WS,單擊下一步:在WSDL URL上輸入服務(wù)的路徑,并為服務(wù)添加一個Java pagckage包myServices,點擊完成,這樣WCF服務(wù)便可成功加入到客戶端。此時為此項目添加測試類,運行進(jìn)行測試:package myAssembly;import java.util.List;public class Test public static void main(String args) myServices.PersonService service=new myServices.PersonService();/獲取服務(wù)對象 myServices.IPersonService personService=service.getBasicHttpBindingIPersonService();/通過basicHttpBinding協(xié)議綁定遠(yuǎn)程對象 List personList=personService.getList().getPerson();for(int n=0;nAdd XFire Web Service Capabilities,引用了XFire工具包以后。在項目會自動建立一個WebServices文件夾,文件夾里面的service.xml就是對發(fā)布Web Service進(jìn)行配置的。現(xiàn)在先建立好一個服務(wù)層:/建立一個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包,里面包含服務(wù)接口package Service;import java.util.List;import Model.*;public interface PersonService List GetList();/建立一個ServiceImpl包,實現(xiàn)服務(wù)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上面對服務(wù)進(jìn)行配置:PersonServicehttp:/leslie-pc:8080/PersonService Service.PersonService ServiceImpl.PersonServiceImpl其配置功能如下:service service 標(biāo)簽和它所包含的 xml 內(nèi)容為發(fā)布成 Web 服務(wù)的 POJO 提供完整的描述。name Web 服務(wù)被發(fā)布時所采用的唯一名稱。namespace Web 服務(wù)發(fā)布時所使用的命名空間。serviceClass Web 服務(wù)接口類的全名,包括包名和類名。implemetationClass Web 服務(wù)實現(xiàn)類的全名,包括包名和類名?,F(xiàn)在可以運行程序,對服務(wù)進(jìn)行測試,在測試時輸入服務(wù)地址http:/leslie-pc:8080/WebSite1/services/PersonService?wsdl,系統(tǒng)將顯示wsdl代碼: - - - - - - - - - - - - 服務(wù)器端測試已經(jīng)成功,現(xiàn)在使用.NET對服務(wù)進(jìn)行調(diào)用,在項目上單擊右鍵-選擇添加Web服務(wù)-在URL地址上輸入服務(wù)的地址http:/leslie-pc:8080/WebSite1/services/PersonService?wsdl ,在一個頁面上輸入代碼進(jìn)行測試。protected void Page_Load(object sender, EventArgs e) Service.PersonService personService= ne
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 財務(wù)出納擔(dān)保責(zé)任協(xié)議(含保密協(xié)議)
- 城市排水設(shè)施拆遷補償安置協(xié)議書
- 車輛事故道路修復(fù)賠償協(xié)議書范例
- 草場承包租賃與農(nóng)業(yè)產(chǎn)業(yè)化合作協(xié)議
- 財務(wù)擔(dān)保資產(chǎn)擔(dān)保合同范本
- 文化創(chuàng)意產(chǎn)業(yè)代理記賬及知識產(chǎn)權(quán)財務(wù)保護(hù)合同
- 舊區(qū)改造拆遷安置房購置合同范本(含產(chǎn)權(quán))
- Brand KPIs for hotels:Lemon Tree in India-英文培訓(xùn)課件2025.5
- 2025年電子商務(wù)與供應(yīng)鏈管理職業(yè)考試試卷及答案
- 2025年各行業(yè)技能提升考試試卷及答案
- 2025年全釩液流電池行業(yè)調(diào)研分析報告
- 2025年生態(tài)環(huán)境保護(hù)知識測試題及答案
- 2025年二級建造師考試《礦業(yè)工程管理與實物》真題及答案
- 2025年P(guān)ython數(shù)據(jù)分析試題及答案
- 植物保護(hù)通論重點復(fù)習(xí)題
- 兒童抽動障礙共患焦慮抑郁障礙診治2025
- 道路監(jiān)控系統(tǒng)培訓(xùn)課件
- 2025年湖北省新高考信息卷(三)物理試題及答題
- 活動策劃服務(wù)投標(biāo)方案(技術(shù)方案)
- 2025慢性阻塞性肺?。℅OLD)指南更新要點解讀課件
- 高教版2023年中職教科書《語文》(基礎(chǔ)模塊)下冊教案全冊
評論
0/150
提交評論