使用NetRemoting開(kāi)發(fā)分布式應(yīng)用教學(xué)課件_第1頁(yè)
使用NetRemoting開(kāi)發(fā)分布式應(yīng)用教學(xué)課件_第2頁(yè)
使用NetRemoting開(kāi)發(fā)分布式應(yīng)用教學(xué)課件_第3頁(yè)
使用NetRemoting開(kāi)發(fā)分布式應(yīng)用教學(xué)課件_第4頁(yè)
使用NetRemoting開(kāi)發(fā)分布式應(yīng)用教學(xué)課件_第5頁(yè)
已閱讀5頁(yè),還剩29頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論