国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

【.NetRemoting-1】

2019-11-14 14:00:36
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

【.NetRemoting】2015.09.16
【分布式應(yīng)用程序】
應(yīng)用程序分布在不同計(jì)算機(jī)上,通過(guò)網(wǎng)絡(luò)來(lái)共同完成一項(xiàng)任務(wù)
C/S架構(gòu)[模式]
【互操作性,InterOperability】又稱【互用性】
是指不同的計(jì)算機(jī)系統(tǒng)、網(wǎng)絡(luò)、操作系統(tǒng)和應(yīng)用程序一起工作并共享信息的能力。

【.Net網(wǎng)絡(luò)編程技術(shù)】
WCF,Web Service,Remoting,Socket

【應(yīng)用程序域,AppDomian,application Domain】
1.【緣由】
【1】.Net程序集需要運(yùn)行在托管環(huán)境中
【2】操作系統(tǒng)并不了解托管代碼
【3】需要有一個(gè)中介,既能為程序集提供托管環(huán)境,又能運(yùn)行在非托管的操作系統(tǒng)的進(jìn)程之內(nèi)==>AppDomian;
【4】所有.Net程序集都運(yùn)行在AppDomain
2.
【應(yīng)用程序域是運(yùn)行為它加載的程序集訪問(wèn).Net CLR提供的服務(wù)的】
【.Net提供的運(yùn)行時(shí)服務(wù)】
托管堆,GC,JIT編譯器,程序集加載器等

3.
【1】可以將AppDomian類比為一個(gè)輕量級(jí)的進(jìn)程,
【2】一個(gè)線程可以有多個(gè)AppDomian
【3】【默認(rèn)的應(yīng)用程序域】+【其他的應(yīng)用程序域】
【4】應(yīng)用程序域提供與進(jìn)程類似的隔離性

4.創(chuàng)建AppDomian的優(yōu)勢(shì)
【進(jìn)程創(chuàng)建一個(gè)AppDomian比操作系統(tǒng)創(chuàng)建一個(gè)進(jìn)程的開(kāi)銷要小】

5.應(yīng)用程序域的基本操作
【1】獲取當(dāng)前運(yùn)行代碼/程序集所在的AppDomian
AppDomian.CurrentDomain;
Thread.GetDomain();
【2】獲取應(yīng)用程序域的名稱
FriendlyName
【3】創(chuàng)建新的應(yīng)用程序域
AppDomian.CreareDomain("AppDomianName");
【4】在應(yīng)用程序域中創(chuàng)建對(duì)象
【A】使用CreateInstanceAndUnWrap()方法;
【B】使用CreateInstance()方法創(chuàng)建對(duì)象

【5】判斷是否是默認(rèn)AppDomian
IsDefaultAppDomain();


【默認(rèn)的程序域】
【1】線程創(chuàng)建時(shí)即被創(chuàng)建
【2】無(wú)法卸載,與所在的進(jìn)程同生同滅

【在默認(rèn)程序域中創(chuàng)建對(duì)象】

【在新建的應(yīng)用程序域中創(chuàng)建對(duì)象】
對(duì)象從另外一個(gè)AppDomian中傳遞給本地AppDomian
需要對(duì)傳遞的對(duì)象進(jìn)行序列化

【思考】
如何使用應(yīng)用程序域動(dòng)態(tài)的加載一個(gè)程序集

【代理,PRoxy】
【1】在應(yīng)用程序域中創(chuàng)建對(duì)象和使用構(gòu)造函數(shù)創(chuàng)建對(duì)象的區(qū)別?
【構(gòu)造函數(shù)】
在堆中直接創(chuàng)建一個(gè)對(duì)象,由變量名直接引用到對(duì)象
【在應(yīng)用程序域中創(chuàng)建對(duì)象】
【1】在應(yīng)用程序域中創(chuàng)建對(duì)象
【2】將對(duì)象序列化后封送【Marshaling】到本地/客戶端應(yīng)用程序域==>【遠(yuǎn)程對(duì)象】
【3】客戶端應(yīng)用程序域重新創(chuàng)建對(duì)象,還原對(duì)象狀態(tài),==>創(chuàng)建對(duì)象代理【Proxy】,【代理對(duì)象】
【4】客戶端通過(guò)代理對(duì)象訪問(wèn)遠(yuǎn)程對(duì)象

【Proxy】提供了和遠(yuǎn)程對(duì)象完全相同的接口。
客戶端基于遠(yuǎn)程對(duì)象的類型元數(shù)據(jù)來(lái)創(chuàng)建代理,因此客戶端必須包含遠(yuǎn)程對(duì)象的類型元數(shù)據(jù)
【元數(shù)據(jù)】
類型得接口,包含名稱,簽名,不包括實(shí)現(xiàn)代碼

【代理對(duì)象】newAppDomain中創(chuàng)建的對(duì)象
【遠(yuǎn)程對(duì)象】客戶端應(yīng)用程序域中創(chuàng)建的對(duì)象

【封送,Marshal】==>2中方式,傳值,傳引用
【傳值封送,Marshal By Value】將對(duì)象傳遞到客戶端
【傳引用封送,Marshal By reference】將對(duì)象依舊留在遠(yuǎn)程AppDomian中,創(chuàng)建代理,通過(guò)代理訪問(wèn)遠(yuǎn)程對(duì)象
【傳引用封送的方式】【有三種方式】
【1】客戶端激活【Client activated】==>客戶端激活對(duì)象,CAO,Client activated Object
【2】服務(wù)端激活Singleton【Service activated Singleton】
【3】服務(wù)端激活SingleCall【Service activated SingleCall】

【傳引用封送】==>MBR對(duì)象
【MarshalByRefObject對(duì)象】
需要封送的對(duì)象必須要繼承MBR類
【當(dāng)一個(gè)對(duì)象繼承自MBR之后,標(biāo)志著該對(duì)象永遠(yuǎn)無(wú)法離開(kāi)他所在的應(yīng)用程序域】

【傳引用封送和傳值封送的優(yōu)勢(shì)】
對(duì)象大時(shí)候,傳值封送的效率要低,傳值封送需要將對(duì)象序列化,將整個(gè)對(duì)象封送到客戶端,增加了網(wǎng)絡(luò)負(fù)擔(dān)。。。

【Remoting】
跨應(yīng)用程序域的訪問(wèn)都屬于Remoting。
【無(wú)論AppDomian是在同一個(gè)進(jìn)程內(nèi),還是同一個(gè)主機(jī)不同進(jìn)程內(nèi)的AppDomian,還是不同計(jì)算機(jī)的進(jìn)程】
【客戶端】
發(fā)出請(qǐng)求的一端
【服務(wù)端】
提供類型的一端

【一個(gè)典型的Remoting程序】
【1】【服務(wù)程序集,提供服務(wù)的類型】
==>這些類型通常繼承自MBR,[傳引用封送的優(yōu)勢(shì)]
【2】【服務(wù)端應(yīng)用程序】==>【宿主應(yīng)用程序域】
==>提供服務(wù)程序集運(yùn)行的環(huán)境【IIS,Windows服務(wù),控制臺(tái)程序,winform窗體程序等等】
【3】【客戶端應(yīng)用程序域】
==>向宿主應(yīng)用程序域發(fā)出請(qǐng)求的應(yīng)用程序域


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 亳州市| 永新县| 衡东县| 祁东县| 牟定县| 芒康县| 岑巩县| 海南省| 治多县| 敦煌市| 墨江| 株洲市| 崇阳县| 肇源县| 饶河县| 新龙县| 泊头市| 太仓市| 潍坊市| 安岳县| 紫金县| 长顺县| 麟游县| 嘉峪关市| 仲巴县| 亚东县| 郓城县| 兖州市| 铜川市| 贵州省| 杭州市| 西贡区| 安化县| 华阴市| 阿拉善右旗| 乐安县| 沂源县| 江源县| 东莞市| 修武县| 邵阳县|