最近在因為在學習remoting,純粹只是了解一下,發現remoting確實是好東西。
我們通常有三種方式來使用remoting,一種是
第一種:publishing a public object
公開的物件建立在本地
第二種:remote creation of a public object (sao)
物件建立在客戶端請求中
第三種:remote creation of a private object (cao)
物件建立在host上,客戶端引用伺服器上的物件
目次我也沒有很好理解這三種的本質區別在**。而這三種方式的remoting建立方式也不相同。
第一種方式
host:
channelservices.registerchannel (new tcpchannel(1500));
ctransfer trans = new ctransfer();
remotingservices.marshal (trans, "testservice");client:
ctransfer t = (ctransfer) activator.getobject(typeof(ctransfer),
"tcp://host:1500/testservice");
第二種方式
host:
channelservices.registerchannel (new tcpchannel(1500));
remotingconfiguration.registerwellknownservicetype(typeof(ctransfer),
"testservice", wellknownobjectmode.singleton);client:
ctransfer t = (ctransfer) activator.getobject(typeof(ctransfer),
"tcp://host:1500/testservice");
第三種方式
host:
channelservices.registerchannel (new tcpchannel(1500));
remotingconfiguration.registeractivatedservicetype(typeof(ctransfer));client:
object attr = ;
object args = ;
ctransfer t = (ctransfer) activator.createinstance(typeof(ctransfer), args, attr);
如果我們需要乙個物件(object)允許遠端呼叫處理,那麼這個物件(object)需要繼承於marshalbyrefobject這個類。
如何在remoting中傳送檔案呢?基本思路就是在client開啟client的檔案,轉換在byte型別之後呼叫host的物件。
client與host之間傳送的物件
[serializable]
public struct kaction
;開啟檔案,將流位元組儲存到context中去
stream filestream=file.open(this.transfilename.text,filemode.open);
filestream.position=0;
byte content = new byte[((int) filestream.length) 1];
filestream.read(content,0,content.length) ;
在host在讀取到kaction之後,把它儲存到指定資料夾下面
memorystream meoerystream=new memorystream(k_action.context);
filestream filestream=new filestream(@"d:/" k_action.filename,filemode.create);
meoerystream.writeto(filestream);
filestream.close();
meoerystream.close();
發現不能在物件中又定義新的物件。在準備傳送到host上會提示「包含潛在危險的型別」。
[serializable]
public struct kaction
;記錄一下自己的心得。有空我會好好整理下下回做篇完整點的。
cnzc's blogs
通過ActiveProcessLinks遍歷程序
程序的遍歷有多種方法。在應用程式裡可以使用createtoolhelp32snapshot函式先做個程序快照 snapshot 然後通過返回的資料進行遍歷。在核心程式設計裡可以通過核心資料結構來實現。核心結構eprocess 執行體程序塊 executive process 是乙個不透明 opaqu...
通過RestHighLevelClient操作ES
一 查詢相關 在es查詢中,must相當於sql語句中的and,should相當於or。當想要實現類似於 select from table where a and b or c or d 的功能時可以借助於es中的bool。即resthighlevelclient中的boolquerybuilde...
IEEE PDF eXpress 通過方法
ieee pdf express這個東西比較煩人 文章是用latex寫的,生成pdf後始終是不能通過 原因是有些文字無法嵌入到pdf中的,本人之前的解決方法是把所有檔案打包生成zip後上傳,讓ieee來生成pdf 但這次一直不行,不過最後找到了乙個非常簡單的方法 安裝pdfcreater,之後列印生...