一区二区久久-一区二区三区www-一区二区三区久久-一区二区三区久久精品-麻豆国产一区二区在线观看-麻豆国产视频

Java和.NET互操作:我們應(yīng)該放棄Web Service嗎?

  通過(guò)Web Service混合.NETJava技術(shù)往往很容易,但Web Service并非是.NETJava互操作的萬(wàn)靈丹。WebService在集成獨(dú)立的跨網(wǎng)絡(luò)通信的組件時(shí)非常有用,在簡(jiǎn)單的調(diào)用/返回情景中,涉及的數(shù)據(jù)類型數(shù)量非常有限,且WebService是基于標(biāo)準(zhǔn)的,混合.NETJava技術(shù)通常顯得很簡(jiǎn)單,因此有人認(rèn)為WebService是實(shí)現(xiàn).NETJava互操作的萬(wàn)能答案,但事實(shí)卻并非如此。

  在搜索引擎中搜索一下“Java .NET互操作”將會(huì)返回很多搜索結(jié)果,但聽(tīng)過(guò)今年6月JavaOne會(huì)議上微軟主題演講的人應(yīng)該還有印象(51CTO編者注:互操作性在近年來(lái)成為了微軟的關(guān)注重點(diǎn)之一,不僅僅是Java,還有php互操作性等等),微軟說(shuō)放棄Web Service可能是最好的辦法。這是很不幸的消息,因?yàn)閷?duì)于很多任務(wù),WebService并不是Java和.NET互操作的理想解決方案,而且對(duì)于部分任務(wù),根本不可能使用WebService。在這篇文章中,我會(huì)列舉三個(gè)Java和.NET互操作情景,如果使用Web Service實(shí)現(xiàn)會(huì)被認(rèn)為是愚蠢的行為。

  首先,我先說(shuō)一下我認(rèn)為的Java和.NET互操作的含義,真正的Java和.NET互操作機(jī)制應(yīng)允許你在任何地方使用.NET語(yǔ)言編寫的代碼代替用Java語(yǔ)言編寫的代碼,換句話說(shuō),它應(yīng)該允許你從.NET代碼中訪問(wèn)任何基于Java的實(shí)體(如對(duì)象,類或方法),反之亦如此。

  情景1 在Java應(yīng)用程序中嵌入.NET UI控件

  假設(shè)你要在基于AWT的Java應(yīng)用程序中使用一個(gè)Windows窗體控件,標(biāo)準(zhǔn)的做法是獲得與AWT容器對(duì)等的句柄,然后使用該句柄設(shè)置Windows窗體控件的父對(duì)象為AWT容器,你可以使用一個(gè)Web Service實(shí)現(xiàn)這類互操作。

  WebService是松散耦合的,服務(wù)和客戶端運(yùn)行在獨(dú)立的進(jìn)程中,因?yàn)槭仟?dú)立的進(jìn)程,你就不能交換窗口句柄,句柄只在同一個(gè)進(jìn)程中才有效,有意義,換句話說(shuō),這是一個(gè)必須緊密結(jié)合才能互通的情況,這種情況WebService不能適應(yīng),想在基于Java的GUI應(yīng)用程序中嵌入基于.NET的控件,開發(fā)人員必須想另外的辦法,反之亦如此。

  情景2 從Java應(yīng)用程序中調(diào)用.NET程序庫(kù)

  如果你想在Java程序中調(diào)用.NET程序庫(kù),那你可能正處于以下環(huán)境:

  1)已經(jīng)在.NET開發(fā)中使用過(guò)這個(gè)庫(kù),你想在Java環(huán)境中繼續(xù)使用;

  2)已經(jīng)花錢購(gòu)買過(guò).NET程序庫(kù),不想再花錢購(gòu)買Java程序庫(kù);

  3)不考慮平臺(tái)差異的話,這個(gè)程序庫(kù)可能是最好使用的了。

  在這種情況下,你可以使用Web Service從Java訪問(wèn).NET代碼,但這種用法似乎有點(diǎn)小題大做,WebService更適合兩個(gè)更大的獨(dú)立組件之間的通信,而不是將一個(gè)庫(kù)集成到一個(gè)更大的系統(tǒng)中去。如果程序庫(kù)就在同一臺(tái)機(jī)器上,非要?jiǎng)?chuàng)建一個(gè)WebService來(lái)訪問(wèn)這個(gè)庫(kù)顯得有點(diǎn)過(guò)分,在這種情況下,在Java程序進(jìn)程內(nèi)運(yùn)行基于.NET的程序庫(kù)意義更大,但采用WebService是做不到的。

  情景3 使用Java API注冊(cè).NET監(jiān)聽(tīng)器

  假設(shè)你使用了JMS(Java消息服務(wù)),想創(chuàng)建一個(gè).NET組件來(lái)向它發(fā)送消息,以及從它那里接收消息。向JMS發(fā)送消息一般使用JMS API中的各種發(fā)送函數(shù),通過(guò)在JMS基礎(chǔ)架構(gòu)上注冊(cè)監(jiān)聽(tīng)器來(lái)接收消息。

  你也可以使用Web Service來(lái)實(shí)現(xiàn),但它并不擅長(zhǎng)處理異步通信,如果你真要使用Web Service實(shí)現(xiàn)異步通信,你有兩個(gè)選擇:

  1)實(shí)現(xiàn)一個(gè)輪詢機(jī)制,客戶端反復(fù)輪詢服務(wù)獲得結(jié)果,當(dāng)?shù)玫浇Y(jié)果后,服務(wù)將其放在一個(gè)預(yù)定的地方,輪詢操作就會(huì)發(fā)現(xiàn)它。

  2)實(shí)現(xiàn)一個(gè)回調(diào)機(jī)制,客戶端留下回復(fù)地址,當(dāng)獲得結(jié)果后,服務(wù)將結(jié)果發(fā)往該地址。

  不幸的是,這兩個(gè)機(jī)制都需要實(shí)現(xiàn)重大的基礎(chǔ)架構(gòu),使用輪詢機(jī)制時(shí),需要實(shí)現(xiàn)輪詢機(jī)制,還需要為服務(wù)提供一個(gè)機(jī)制放置結(jié)果,以便輪詢機(jī)制可以找到它,使用回調(diào)時(shí),必須在客戶端嵌入一個(gè)全新的“反向”Web Service,以便原始服務(wù)可以聯(lián)系到它,并返回異步結(jié)果。

  這兩個(gè)方法都不完美,如果你想一個(gè)應(yīng)用程序簡(jiǎn)單地調(diào)用一個(gè)程序庫(kù),Web Service需要實(shí)現(xiàn)超乎任務(wù)需要的機(jī)制,必須要有更好的方式來(lái)做到這一點(diǎn)。

  Java和.NET互操作需要的附件工具

  對(duì)于復(fù)雜的Java和.NET互操作需求(如在Java程序中調(diào)用.NET庫(kù),或使用Java API注冊(cè)一個(gè).NET監(jiān)聽(tīng)器),WebService強(qiáng)迫你另起爐灶,你必須建立復(fù)雜的基礎(chǔ)架構(gòu)——通過(guò)套接字交換XML——完成本應(yīng)該很簡(jiǎn)單的任務(wù),可以說(shuō)這么做顯得很愚蠢,對(duì)于其它任務(wù),如在Java程序中嵌入.NET UI控件,使用Web Service根本是不可能的。

  開發(fā)人員和架構(gòu)師工具箱應(yīng)該擁有很多Java和.NET互操作解決方案,對(duì)有些情況可能有用,但對(duì)于許多互操作任務(wù),你需要不同的工具,當(dāng)WebService滿足不了要求時(shí),Java和.NET橋接器可能會(huì)有用,甚至在那些可以使用WebService的情景中,使用Java和.NET橋接器可能效率更好,并且更易于使用。

  如果你理解了Web Service在互操作性方面的限制,并熟悉其它解決方案,你就可以在你的應(yīng)用程序中同時(shí)充分利用Java和.NET技術(shù)。

NET技術(shù)Java和.NET互操作:我們應(yīng)該放棄Web Service嗎?,轉(zhuǎn)載需保留來(lái)源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 丁香六月综合网 | 亚洲第一福利视频 | 成人福利免费视频 | 九九视频精品在线 | 婷婷丁香综合网 | 青青草97国产精品免费观看 | 99久久精品免费精品国产 | 亚洲精品美女久久久aaa | 福利影院在线看 | 精品国产一区二区三区香蕉事 | 国产精品李雅在线观看 | 国产成人精品视频播放 | 国产成人亚洲精品91专区高清 | 网色网站 | 激情在线视频 | 四房激情网 | 日韩一级片免费 | 在线观看中文字幕国产 | 一本色道久久88加勒比—综合 | 91精品国产高清久久久久 | 久久国产精品夜色 | 国产欧美日韩不卡一区二区三区 | 亚洲激情文学 | 欧美成人亚洲综合精品欧美激情 | 丁香婷婷激情五月 | 欧美com| 国产精品玖玖 | 免费在线色 | 91麻豆国产免费观看 | 精品一区二区三区四区五区 | 欧美激情a∨在线视频播放 欧美激情不卡 | 久本草在线中文字幕亚洲欧美 | 影音先锋中文在线 | 亚洲精品第一 | 久久久久avav久久久 | 亚洲成在人色婷婷 | 欧美日本一二三区 | 国产熟睡乱子伦视频观看看 | 免费精品一区二区三区在线观看 | 五月天开心激情 | 国产美女白丝袜精品_a不卡 |