麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

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

用CORBA創建Client/Server 程序

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

  假如你想找一個利用面向對象的方法去連接一個Client到Server,你有兩個主要的選擇:DCOM和CORBA。DCOM是微軟的解決方案,并且當你為WINDOWS系統寫代碼時非常有用。在本文中,我們將要研究用CORBA去解決分布式應用程序問題。

  CORBA概要:

  在一個通常的用C++或者java寫的面向對象的程序里,程序包含所有應用程序需要用到的類。編譯器編譯和連接這些對象,當你用new語句初始化對象時,它們被創建在應用程序所在的內存里并且被當作一個簡單的過程來執行。

  CORBA是一種技術答應一個Client程序調用屬于一個Server的對象,這個Server可以是運行在同一臺機器或者是幾千里外的機器。在它的最基本的階段,CORBA是非常簡單的-實例化一個在你的處理內存空間的對象代替你在通常的程序中所做的,你可以實例化這個對象無論在哪一個網絡的Server上。調用這個對象的方法以及這些方法需要傳遞的參數被打包成網絡包的格式發送到服務器上。這個功能實際上是運行在服務器上,返回結果通過網絡傳遞到調用者。

  這種方案的優點是服務器可以作為高效的、共享的資源中心,以Server為基礎的CORBA對象可以訪問Server的數據庫和其它服務。當然,它的缺點是速度。每秒調用功能的數目被網絡速度嚴格限制,以便保證其它技術通過網絡傳輸數據,因而,CORBA不是獨儀無二的。DCOM,甚至Socket都要忍受同樣的延遲。

  用CORBA方法非凡的方面是可以方便的調用ORB(Object Request Broker), ORB處理和操作Client和Server之間的連接。在下面的例子里我們將要用InPRise VisiBroker ORB。用VisiBroker,Client和Server都用一個叫做OSAGENT的服務,OSAGENT用一個標準的端口(通常是14000)連接Client,OSAGENT可以當作一個目錄去幫助Client的ORB去找到一個它要找的對象。

  用java設置一個簡單的CORBA的Client和Server是非常簡單的,在下面我們將要看到幾段例子代碼段去顯示這個過程,在接下來的部分我們將要解釋代碼怎樣工作的,我們從要害字"安裝"開始。
安裝

  用文檔中的例子代碼,除了VisiBroker ORB之外你需要下載Sun的JDK1.1,你能下載SDK從http://java.sun.com/prodUCts/jdk/1.1/index.Html。我們用JDK1.1代替1.2是為了避免和java2的ORB沖突。你可以得到VisiBroker ORB從http://www.inprise.com/visibroker/。先裝SDK,再裝ORB。
例子代碼

  為了創建一個CORBA Server并且讓Client訪問它,你要決定Server類將要做什么再開始。在這個例子里我們要用一個非常簡單的Server類,這個類擁有一個私有的整型變量,在這個類里的一個方法將要增加這個整型變量,并且另一個方法將要答應Client訪問這個變量的正確值,下面是這個類的接口描述:

//Counter.idl
module Counter{
interface Count
{
void increment();
long getCounter();
};
};

  這個類被命名為Count,它的兩個方法是Increment和getCounter,這個類被包含在一個叫Counter的模板中,只要你愿意這個模板可以包含好幾個不同的類,把這IDL代碼放在一個叫Counter.idl名字的文件中。

  為了用這個IDL文件,你需要IDL2JAVA去運行它,這個工具將要創Client和Server要用到的類,IDL2JAVA產生的Client類叫做Helper并且被命名為CountHelper.java,Client用helper類去調用Server的功能,IDL2JAVA產生的Server類叫做ImplBase并且被命名為_CountImpleBase.java,你將要執行這些Server擴展ImplBase的方法。

  注重:當你在Client直接用CounterHelper.java類時,當你調用一個Counter接口的方法時執行在Client的代碼是_st_Counter.java。這個類調用stub把數據打包發送到Server并且返回正確的數據,它同Server端的skeleton(是_sk_Counter.java,繼續與_CounterImplBase.java)通信。進入討論組討論。

  客戶端代碼是非常簡單的,下面是你能創建的最小的客戶端程序。

// Client.java
public class Client
{
public static void main(String[] args)
{
Counter.Count count = null;
org.omg.CORBA.ORB orb = null;
// Initialize the ORB
orb = org.omg.CORBA.ORB.init();
// Bind to the object on the server
count = Counter.CountHelper.bind(orb, "test");
// Call the server functions
count.increment();
System.out.println("Current Count = " + count.getCounter());
// clean up
count = null;
orb.shutdown();
}
}



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 性生活视频网站 | 激情久久一区二区 | 美国一级黄色毛片 | 全黄毛片 | 精品国产99久久久久久宅男i | 国产亚洲高清在线精品不卡 | 精国品产一区二区三区有限公司 | 日本在线视频一区二区三区 | 国产精品色综合 | av手机免费在线观看 | 综合网天天射 | 欧美成人做爰高潮片免费视频 | 国产九色在线播放九色 | 毛片免费观看完整版 | 中文字幕一区二区三区久久 | 男女一边摸一边做羞羞视频免费 | 久久精品久久精品国产大片 | 午夜视频福利 | 久久人体 | 国产69精品福利视频 | 91精品国产99久久久久久红楼 | 欧美高清另类自拍视频在线看 | 毛片在线免费视频 | 国产第一页精品 | 一本色道久久综合亚洲精品图片 | 亚洲第五色综合网 | 欧美精品18| 日韩黄在线观看 | 在线成人免费观看视频 | 在线91视频 | 国产精品毛片无码 | 久久久久久久.comav | 在线看一区二区三区 | 久久9色 | 亚洲第一黄色网 | 一区二区三区黄色 | 国产视频软件在线 | 日韩欧美电影一区二区三区 | av最新在线 | 96视频在线免费观看 | 欧美激情猛片xxxⅹ大3 |