国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
正確使用CORBA,ICE等分布式技術(shù)的一種思路

1.1       前言

目前分布式應用軟件越來越多,但在如何平衡分布式應用和單機應用的處理性能有一些麻煩。另外就是從一種分布式技術(shù)遷移到另一種分布式技術(shù)也很困難。一個原因就是我們的上層應用代碼和底層的分布式技術(shù)(CORBA,ICE,SOCKET)緊密相關(guān),難以分割導致。本文給出一種分離具體分布式技術(shù)的設計方案,目的是強調(diào)一點:對于應用軟件來講,CORBA,ICE,SOCKET等具體分布式技術(shù)不是核心,核心是我們的客戶需要的業(yè)務功能。

下面以CORBASOCKET(ASN.1協(xié)議)為例子說明這種分離架構(gòu)。

1.2       實現(xiàn)方法

1.2.1       原則:

1. 所有業(yè)務功能都通過接口定義;

2. 所有使用業(yè)務功能的代碼都必須通過接口工廠獲取業(yè)務接口的實例

1.2.2       軟件結(jié)構(gòu)

接口+類工廠的方式。保證任何一個業(yè)務模塊(組件)對外(包括大平臺內(nèi)部各個業(yè)務模塊或組件之間)提供的所有服務都是接口,同時提供類工廠讓外部訪問業(yè)務模塊(組件)中某個接口的實現(xiàn)。

 

說明:

1) IExpand是需要外部定制的接口,當然可能存在多個,如果一個業(yè)務模塊(組件)不需要外部定制,就不存在這個接口了;

2) IPlatform是提供外部使用的功能接口,當然可能存在多個;

3) IPlatformFactory是類工廠的接口,類工廠也用接口定義,是因為需要對外屏蔽底層通信細節(jié),比如ASN.1,CORBA等;當然這個接口的定義應該是很少變化的;一般而言,一個業(yè)務模塊或組件只需要一個類工廠的接口定義;

4) TFactory是一個類工廠的實現(xiàn),這是外部唯一可見的一個實現(xiàn)類。

5) PlatformImpl是一個內(nèi)部用標準C++開發(fā)的一個功能實現(xiàn)體,它對外部是不可見的。

 

所有業(yè)務都是利用這個核心架構(gòu)來實現(xiàn),下面考慮CORBA,ASN.1接口的適配方式,這兩種方式都有一個共同點:都可以看作是CLIENT/SERVER結(jié)構(gòu),需要我們提供CLIENT/SERVER兩端的外部接口

1.2.3       適配CORBA服務端

利用Adaptordelegate模式來屏蔽CORBA技術(shù)細節(jié)。

說明:

1)     IServerIDL利用IDL語言定義IPlatform這個接口,是外部不可見的;

2)     CorbaServerImplIServerIDLIPlatform繼承下來,將IServerIDL的任何調(diào)用轉(zhuǎn)調(diào)IPlatform的接口實現(xiàn);同時CorbaServerImpl還使用委托模式,將IPlatform的接口調(diào)用轉(zhuǎn)調(diào)給PlatformImpl來實現(xiàn),這樣CorbaServerImpl在實現(xiàn)CORBA對象的時候僅僅是將CORBA數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)換為標準C++的接口,將CORBA調(diào)用轉(zhuǎn)換為普通的C++API接口調(diào)用,它內(nèi)部沒有復雜的業(yè)務邏輯,實現(xiàn)非常簡單

3)     TCorbaServerFactory是內(nèi)部負責創(chuàng)建CorbaServerImpl對象,外部完全看不到CORBA的任何信息

4)     這里沒有標出IExpand接口,因為它與CORBA任何細節(jié)無關(guān)

 

1.2.4       對于CORBA客戶端適配

采用delegate模式來實現(xiàn)

說明:

1) IClientIDL是利用IDL定義的IPlatform接口,這是IDL編譯器編譯后的客戶端的接口,這是外部不可見的

2) CorbaClientImpl IPlatform同時繼承,將IPlatform接口的都轉(zhuǎn)調(diào)用IClientIDL接口來實現(xiàn),它是外部不可見的

3) TCorbaClientFactory負責創(chuàng)建CorbaClientImpl實例,對外屏蔽CORBA的實現(xiàn)細節(jié)

4) IExpand接口沒有在圖中出現(xiàn),是因為它和CORBA的任何細節(jié)都無關(guān)

1.2.5       適配ASN.1服務端

CORBA的適配方式,采用AdaptorDelegate模式來實現(xiàn)

說明:

1) IASN接口定義發(fā)送消息和接收消息兩個接口

2) ASN.1ServerImpl采用Adpator模式和委托模式來實現(xiàn),將IPlatform的接口轉(zhuǎn)調(diào)用PlatformImpl來實現(xiàn)的,另外它分析收到的所有ASN.1的消息,將消息內(nèi)容轉(zhuǎn)換為IPlatform的接口調(diào)用,然后再將IPlatform接口調(diào)用的返回值組裝為一個ASN.1消息發(fā)送出去

3) TASN.1ServerFactory內(nèi)部負責ASN.1ServerImpl實例的創(chuàng)建,對外屏蔽ASN.1的任何技術(shù)細節(jié)

4) IExpand接口沒有出現(xiàn),是因為它和ASN.1的任何細節(jié)無關(guān)

 

1.2.6       對于ASN.1客戶端的適配

采用Adaptor模式來實現(xiàn)。

說明:

1) ASN.1ClientImplIPlatform接口調(diào)用轉(zhuǎn)換為ASN.1消息發(fā)送出去,然后將收到的ASN.1響應消息轉(zhuǎn)為為標準C++的數(shù)據(jù)結(jié)果作為IPlatform接口調(diào)用的返回值和輸出參數(shù)

2) TASN.1ClientFactory對外屏蔽ASN.1的技術(shù)細節(jié)

1.2.7       最后應用方式總結(jié)

從上面可以看出,對于外部用戶來說,是內(nèi)部是采用CORBA,ASN.1還是純粹的c++API接口都沒有任何區(qū)別。我們甚至可以同時提供這三種方式,用戶根據(jù)需要進行選擇。比如所有業(yè)務模塊(組件)都是同機運行,我們可以放棄CORBA,ASN.1技術(shù),以后要改為分布式組網(wǎng)方式,只需要替換為一個類工廠庫即可。以后要支持一種新的分布式技術(shù),只需要采用同樣的方式實現(xiàn)一個適配層即可,上層業(yè)務的業(yè)務的所有實現(xiàn)都是可以重用的。

最后回到一點:應用軟件的核心是業(yè)務不是底層分布式技術(shù)。

本站僅提供存儲服務,所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
跨平臺的網(wǎng)絡通信中間件:ICE和ACE
ICE和ACE-高效的網(wǎng)絡編程中間平臺簡介--hustlg的博客
什么是Web 服務****
深入探究EJB應用技術(shù)的體系結(jié)構(gòu)
淺談SOAP
計算機世界網(wǎng)-第一講:CORBA簡介
更多類似文章 >>
生活服務
分享 收藏 導長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服