如何實現乙個簡單的remoteing例項

2021-04-02 08:32:51 字數 1023 閱讀 1220

我們先花20分鐘做乙個簡單的remoteing的例子。

首先我們建立乙個dll的remoteing遠端物件,這個物件有點類似於ejb裡面的介面檔案的功能,但是又不完全只是負責通訊,我們會把業務邏輯也寫在這個介面裡面:

建立1個類庫專案remoteobject:

using system;

namespace remoteobject

public string str()

} }

編譯一下。

接著建立伺服器端程式remoteserver:

using system;

using system.runtime.remoting;

將剛才編譯好的dll檔案考到新建的伺服器程式的bin目錄下,新增引用,編譯伺服器程式。

建立客戶端程式remoteclient:

using system;

將剛才編譯好的dll檔案考到新建的客戶端程式的bin目錄下,新增引用,編譯伺服器程式。

先執行伺服器程式,然後在執行客戶端程式,可以看到如下介面:

現在我們完成了乙個簡單的remoteing例項,他和ejb同樣是實現異地通訊,但是我們現在看看他和ejb有什麼不同:

1.remoteing事務寫在dll(即介面),ejb寫在伺服器。

2.伺服器程式相當於ejb裡面的容器,可以裝載n個實現業務的介面,通過對配置檔案裡面的通道型別,埠號,介面名字的設定,確定客戶端程式訪問哪乙個dll.

3.通過客戶段啟用和伺服器啟用的例子也可以知道,雖然完成的業務是在dll裡面寫好了,但實際上申請的空間和業務所使用的記憶體空間是在伺服器裡面,dll物件會通過自己的建構函式去使用伺服器程式在伺服器端構造一些記憶體位址,以及存放變數或者其他函式的空間,所以dll的業務操作並不是在客戶端。

所以由此也可知道,實現事務所在的記憶體位址實際上是在伺服器上面。

(感謝lovecherry的blog,我的文章裡面加入了一些自己的理解和思考,如果大家想看到純淨版的remoting請看http://www.cnblogs.com/lovecherry,不敢掠人之美。)

乙個簡單的Matrix實現

我們直接來看 吧 matrix.h pragma once include using namespace std 矩陣類 class matrix 下面是實現和測試的 matrix.cpp include matrix.h include include matrix matrix void ma...

LinkList的乙個簡單實現

鏈式線性表是資料結構裡很簡單但也是很常見的資料結構,相比順序儲存的線性表,可以更快的實現新增和刪除操作,但讀取速度比順序結構會慢。鏈式線性表的關鍵在於,每個資料儲存為節點形式。不僅僅儲存有資料,還有乙個引用 next 指向下乙個節點。鏈式結構還可以再擴充套件為雙向鍊錶 迴圈鍊錶等等。基本原理一樣,只...

實現乙個簡單的 shared ptr

智慧型指標的作用有如同指標,但會記錄有多少個 shared ptrs 共同指向乙個物件。這便是所謂的引用計數。一旦最後乙個這樣的指標被銷毀,也就是一旦某個物件的引用計數變為 0,這個物件會被自動刪除。shared ptr 的實現機制其實就是在拷貝構造時使用同乙份引用計數。同乙個 shared ptr...