




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
內(nèi)容安排當(dāng)前的分布式應(yīng)用.NETRemoting的架構(gòu)與概念.NETRemoting和SOAP總結(jié)問(wèn)答更深入一些(選項(xiàng))參考資料當(dāng)前的分布式應(yīng)用今天的分布式應(yīng)用面對(duì)各種各樣的情況有些機(jī)器離得很近(ServerFarm)有的離得很遠(yuǎn)跨越防火墻有些應(yīng)用之間共享相同的協(xié)議(SOAP,WSDL),但是運(yùn)行在不同的平臺(tái)上有些應(yīng)用之間不僅使用相同的協(xié)議,而且運(yùn)行在相同的平臺(tái)之上當(dāng)前的分布式應(yīng)用要考慮的問(wèn)題如何傳遞數(shù)據(jù)?對(duì)象是按值傳遞還是按引用傳遞?如何穿越火墻和代理服務(wù)器?如何適應(yīng)不同的線路情況?如何處理全局緩沖區(qū)?如何處理安全,認(rèn)證問(wèn)題?如何連接已有的系統(tǒng)(舊的通信協(xié)議,報(bào)文格式)如何進(jìn)行通信的審計(jì)和日志記錄?如何快速地開(kāi)發(fā)?如何一次把所有問(wèn)題都想全?.NETRemoting的架構(gòu)與概念幾種.NETRemoting對(duì)象SingleCall-無(wú)狀態(tài)設(shè)計(jì)SingletonObject–共享緩沖ClientActivated–有狀態(tài)設(shè)計(jì).NETRemoting的架構(gòu)與概念Sample:.NETRemotingServerObjectusingSystem;usingSystem.Runtime.Remoting;namespacemyRemoteService{ //WellKnownWebServiceobject publicclassmyRemoteObject:MarshalByRefObject { //MethodmyRemoteMethod publicStringmyRemoteMethod(Strings) { return“HelloWorld,”+s; } }}.NETRemoting的架構(gòu)與概念Sample:Client訪問(wèn)代碼usingSystem;usingSystem.Runtime.Remoting;usingSystem.Runtime.Remoting.Channels;usingSystem.Runtime.Remoting.Channels.Http;usingmyRemoteService;publicclassClient{publicstaticintMain(string[]args){ChannelServices.RegisterChannel(newHttpChannel());//CreateaninstanceofamyRemoteObjectclass
myRemoteObjectmyObj=(myRemoteObject)Activator.GetObject(typeof(myRemoteObject),"myHost:7021/host/myRemoteObject.soap");myObj.myRemoteMethod(“RongShen");return0;}}.NETRemoting的架構(gòu)與概念RemotingObject的宿主.NETEXE:任何正常的.NETEXE或者ServiceIIS需要在IIS上建立一個(gè)新的虛目錄把包含遠(yuǎn)程對(duì)象的EXE或者DLL放在虛目錄\bin目錄下虛目錄下放一個(gè)配置文件.NETComponentServices-DTC,pooling,JITA
.NETRemoting的架構(gòu)與概念DEMORemotingHello:….\FrameworkSDK\Samples\technologies\remoting\basic\remotinghelloDEMO:SingletonObjectlocalhost/quickstart/HowTo/DEMO:異步調(diào)用localhost/quickstart/HowTo/.NETRemoting的架構(gòu)與概念用.NETRemoting來(lái)傳遞對(duì)象MarshalByValue:對(duì)象實(shí)現(xiàn)ISerializable接口或者使用SerializableAttributeMarshalByReference:對(duì)象必須從MarshalByRefObject基類派生對(duì)于MBV,CLR根據(jù)具體情況使用MBV對(duì)于MBR對(duì)象的Object的成員函數(shù),CLR根據(jù)類型和重載情況決定調(diào)用本地的方法還是遠(yuǎn)程的方法.NETRemoting的架構(gòu)與概念RemotingServerObject的生命期對(duì)于ServerActivated對(duì)象ServerObject是在第一次方法調(diào)用時(shí)建立只能使用缺省的構(gòu)造函數(shù)生命期:SingleCall:每次調(diào)用結(jié)束對(duì)象被回收Singleton:AppDomain退出時(shí)對(duì)象被回收.NETRemoting的架構(gòu)與概念RemotingServerObject的生命期對(duì)于ClientActivated對(duì)象LeasedBasedLifetime和傳統(tǒng)的方法比,更小的網(wǎng)絡(luò)開(kāi)銷服務(wù)器對(duì)象可以把租期設(shè)為無(wú)限長(zhǎng)每次客戶端對(duì)于服務(wù)器對(duì)象的方法調(diào)用都可以自動(dòng)延長(zhǎng)一段時(shí)間的租期客戶端可以添加自己的超期處理邏輯通過(guò)注冊(cè)一個(gè)Sponsor.NETRemoting的架構(gòu)與概念對(duì)象使用之前應(yīng)該先注冊(cè)通過(guò)配置文件通過(guò)API沒(méi)有注冊(cè)表.NETRemoting的架構(gòu)與概念Channel服務(wù)Channel是消息傳輸?shù)耐ǖ繡hannel是完全可定制的(CLR提供兩種內(nèi)建的Channel)HTTPChannelTCPChannel可以編寫自己的Channel(NamedPipe,MSMQ,IBMMQ,….)遠(yuǎn)程對(duì)象可以同時(shí)支持多種Channel.NETRemoting的架構(gòu)與概念在宿主程序里注冊(cè)兩個(gè)不同的ChannelpublicclassmyRemotingObj{HttpChannel httpChannel;TcpChannel tcpChannel;
publicstaticintMain(string[]args){httpChannel=newHttpChannel();tcpChannel=newTcpChannel(8000);ChannelServices.RegisterChannel(httpChannel);//RegistertheHTTPChannelChannelServices.RegisterChannel(tcpChannel);//RegistertheTCPChannel
……}}.NETRemoting的架構(gòu)與概念Formatter完成函數(shù)調(diào)用的數(shù)據(jù)打包和解包(Marshal)可以完全定制自己的數(shù)據(jù)打包方式HTTPChannel缺省使用SOAPFormatterTCPChannel缺省使用BinaryFormatterChannel可以選用不同的Formatter你可以用自己的Formatter來(lái)作壓縮、加密等等自定義的操作.NETRemoting的架構(gòu)與概念DEMO:自定義Formatter來(lái)源于gotdotnet/usercontributionsC:\DocumentsandSettings\aspiration\MyDocuments\Remoting\SimpleFormatter.NETRemoting的架構(gòu)與概念RemotingContextContext-線程,Transaction,同步類似于COMApartment,COM+Context有一些對(duì)象,它們只能在建立自己的Context里面運(yùn)行外邊的程序調(diào)用對(duì)象的方法必須通過(guò)ProxyContextAttributeSynchronizationAttribute借用COM的概念,對(duì)于.NET對(duì)象,大部分情況對(duì)象的線程模型類似于Free.NETRemoting的架構(gòu)與概念Metadata.NETFramework用metadata和assembly來(lái)保存組件的信息.NETRemoting需要metadata來(lái)建立Proxy客戶端獲得Remoting對(duì)象的metadata有三種方式直接引用Remoting對(duì)象的DLLRemoting對(duì)象實(shí)現(xiàn)特定的接口,客戶端通過(guò)事先得到的接口信息訪問(wèn)用SOAPSUDS生成代表遠(yuǎn)程對(duì)象的源碼或者assembly,生成源碼只有類型信息如果是其他SOAPclient,可以使用WSDL.NETRemoting的架構(gòu)與概念配置文件每個(gè)AppDomain有它的配置文件記錄AppDomain包含的Remoing對(duì)象們的信息配置文件的內(nèi)容也可以通過(guò)編程來(lái)進(jìn)行配置,使得你可以用自己的方式來(lái)保存配置信息(Database,Directory…)配置文件可以用在客戶端和服務(wù)器端.NETRemoting的架構(gòu)與概念一個(gè)典型的配置文件包含以下信息宿主應(yīng)用的信息對(duì)象的名稱對(duì)象的URI要注冊(cè)的Channel(可以同時(shí)注冊(cè)多個(gè)Channel)SinkProvider信息租借時(shí)間信息.NETRemoting的架構(gòu)與概念<configuration><system.runtime.remoting><applicationname="HelloNew"><lifetimeleaseTime="20ms"sponsorshipTimeout="20ms" renewOnCallTime="20ms"/><clienturl="localhost:8000/RemotingHello"> <wellknowntype="Hello.HelloService,MyHello" url="localhost:8000/RemotingHello/HelloService.soap"/> <activatedtype="Hello.AddService,MyHello"/></client>
<channels> <channelid="Http"type="Channels.Http.HttpChannel, System.Runtime.Remoting"/> <channelid="Tcp"type="Channels.Tcp.TcpChannel, System.Runtime.Remoting"/></channels>
</application></system.runtime.remoting></configuration>.NETRemoting的架構(gòu)與概念.NETRemoting的使用場(chǎng)景ClientServer載體協(xié)議.NETComponent.NETComponentSOAP/XMLhttp.NETComponent.NETComponentBinaryTCPManaged/Unmanaged.NETWebServicesSOAP/XMLhttp.NETComponentUnmanagedClassicCOMComponentNDR(NetworkDataRepresentation)DCOMUnmanagedClassicCOMComponent.NETComponentNDRDCOM.NETRemoting的架構(gòu)與概念.NETRemotingSecurity依賴.NETFrameworkWebSecuritySystem.NetandASP.NET認(rèn)證Basic,Digest,NTLM,Kerberos可用的加密技術(shù)SSL,IPSEC可以添加定制的安全技術(shù)定制的認(rèn)證(SinkProvider)定制的加密技術(shù)(Formatter)定制的安全策略(Role-Basedsecurity).NETRemoting和SOAP完整的SOAP1.1實(shí)現(xiàn)原始類型的傳輸(int,float,string,etc)一維或多維數(shù)組,數(shù)組元素可以是基本類型和對(duì)象(包含鋸齒形數(shù)組)可以傳輸對(duì)象和對(duì)象的引用支持枚舉類型,支持SOAP錯(cuò)誤信息.NETRemoting和SOAP具有和其他SOAP產(chǎn)品良好的互操作性已測(cè)試過(guò)的產(chǎn)品:ApacheSoap2.x,ApacheAxis3.x,Soap::Lite,4S4C,Frontier,MSASP.NETWebServicesMSSOAPToolkitv2,MSATL,HPSOAP,CapeClear,Phalanx,GLUE,WASP,...看SoapBuildersInteroperabilityLabxmethods/ilab/groups.yahoo/group/soapbuilders更深入一些ChannelSinkChannelSink的概念:ChannelSink是一個(gè)添加插件的機(jī)制,能夠使數(shù)據(jù)在傳輸之前作一些定制的操作有三種類型的ChannelSinkFormatterSink:內(nèi)建的,你可以通過(guò)添加自己的Formatter來(lái)控制。傳輸數(shù)據(jù)的第一個(gè)環(huán)節(jié),接收數(shù)據(jù)的最后一個(gè)環(huán)節(jié)UserSink:自定義的Sink,添加自定義的操作TransportSink:傳輸數(shù)據(jù)的最后一個(gè)環(huán)節(jié),接收數(shù)據(jù)的第一個(gè)環(huán)節(jié)更深入一些ChannelSinkUserSink通過(guò)配置文件來(lái)安裝UserSink得到的是經(jīng)過(guò)Format的數(shù)據(jù)DEMO:定制的ChinnelSinkLoggingsink更深入一些Proxy
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 腹痛中醫(yī)護(hù)理方案
- 共享街機(jī)采購(gòu)合同范本
- 2024年秋新人教PEP版三年級(jí)上冊(cè)英語(yǔ)教學(xué)課件 Unit 6 Part A Letters and sounds
- 洗浴鍋爐采購(gòu)合同范本
- 冀教版數(shù)學(xué)七下同步課時(shí)課件7.5 平行線的性質(zhì) 第二課時(shí)
- 2025年鐵道交通運(yùn)營(yíng)管理專業(yè)技能大賽理論考試指導(dǎo)題庫(kù)(含答案)
- 眼部中醫(yī)專科護(hù)理
- 建筑租賃購(gòu)銷合同范本
- 2025至2030年中國(guó)抗汽油和溶劑閥門潤(rùn)滑密封劑數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 2025至2030年中國(guó)康乃馨數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 森林防火安全生產(chǎn)工作
- 《服裝市場(chǎng)營(yíng)銷》課件
- 網(wǎng)絡(luò)安全風(fēng)險(xiǎn)評(píng)估報(bào)告模板
- 什么是法律談判課件
- 成考教材-數(shù)學(xué)教程(文史財(cái)經(jīng)類)
- 保安服務(wù)管理制度范文
- 汽車行業(yè)維修記錄管理制度
- 老年護(hù)理團(tuán)隊(duì)建設(shè)方案
- 《跨學(xué)科實(shí)踐活動(dòng)3 水質(zhì)檢測(cè)及自制凈水器》教學(xué)設(shè)計(jì)
- 開(kāi)塞露的使用
- 公務(wù)員2022年國(guó)考申論試題(行政執(zhí)法卷)及參考答案
評(píng)論
0/150
提交評(píng)論