|
Java與.NET是現(xiàn)今世界競爭激烈的兩大開發(fā)媒體,兩者語言有很多相似的地方。而在很多大型的開發(fā)項(xiàng)目里面,往往需要使用兩種語言進(jìn)行集成開發(fā)。而很多的開發(fā)人員都會偏向于其中一種語言,在使用集成開發(fā)的時候?qū)α硪环N語言感覺到畏懼。在這里在下向各位介紹一下,Java與.NET相互調(diào)用的例子。下面的介紹主要包括三方面:一是通過常用Web服務(wù)進(jìn)行相互調(diào)用,二是使用TCP/IP套接字進(jìn)行相互調(diào)用,三是使用Remote實(shí)現(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)點(diǎn)在于它既與平臺無關(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é)議將它包裝起來。
SOAP
SOAP即簡單對象訪問協(xié)議(Simple Object Access Protocol),它是用于交換XML編碼信息的輕量級協(xié)議。它有三個主要方面:XML-envelope為描述信息內(nèi)容和如何處理內(nèi)容定義了框架,將程序?qū)ο缶幋a成為XML對象的規(guī)則,執(zhí)行遠(yuǎn)程過程調(diào)用(RPC)的約定。SOAP可以運(yùn)行在任何其他傳輸協(xié)議上。例如,你可以使用 SMTP,即因特網(wǎng)電子郵件協(xié)議來傳遞SOAP消息,這可是很有誘惑力的。在傳輸層之間的頭是不同的,但XML有效負(fù)載保持相同。Web Service 希望實(shí)現(xiàn)不同的系統(tǒng)之間能夠用“軟件-軟件對話”的方式相互調(diào)用,打破了軟件應(yīng)用、網(wǎng)站和各種設(shè)備之間的格格不入的狀態(tài),實(shí)現(xiàn)“基于Web無縫集成”的目標(biāo)。
WSDL
Web Service描述語言WSDL 就是用機(jī)器能閱讀的方式提供的一個正式描述文檔而基于XML的語言,用于描述Web Service及其函數(shù)、參數(shù)和返回值。因?yàn)槭腔赬ML的,所以WSDL既是機(jī)器可閱讀的,又是人可閱讀的。
下面分開兩個方面講解一下如果通過Web服務(wù)實(shí)現(xiàn)Java與.NET的相互調(diào)用。
一、使用.NET作為服務(wù)器端,Java作為客戶端實(shí)現(xiàn)相互調(diào)用。
在.NET系統(tǒng)里面,以WCF作為新一代的服務(wù)開發(fā)工具是微軟的一個新賣點(diǎn),我們就以WCF為例子實(shí)現(xiàn)服務(wù)器端,首先新建一個網(wǎng)站項(xiàng)目,在網(wǎng)站添加一個WCF服務(wù)PersonService。你將看到PersonService.svc、IPersonService、PersonService.cs三個文件,其中IPersonService是對向暴露一個接口,接口的功能由PersonService來實(shí)現(xiàn),客戶端則通過PersonalService.svc來尋獲服務(wù),并對其添加引用的。
//在PersonService.svc里,只包括一行,其中列明了該服務(wù)的實(shí)現(xiàn)類
<%@ ServiceHost Language="C#" Debug="true" Service="Service.PersonService" CodeBehind="~/App_Code/PersonService.cs" %>
//服務(wù)的實(shí)現(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
{
[ServiceContract]
public interface IPersonService
{
[OperationContract]
IList<Person> GetList();
}
public class PersonService : IPersonService
{
public IList<Person> GetList()
{
IList<Person> personList = new List<Person>();
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;
}
}
}
NET技術(shù):JAVA與.NET的相互調(diào)用——通過Web服務(wù)實(shí)現(xiàn)相互調(diào)用,轉(zhuǎn)載需保留來源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。