日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

.NET Remoting

發布時間:2023/12/4 asp.net 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 .NET Remoting 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

轉自:http://www.iiiedu.org.tw/knowledge/knowledge20030430_2.htm

.NET Remoting

資策會數位教育研究所講師 董淑惠

 

 

概念簡介
微軟以往使用COM/DCOM的技術來處理分散式系統架構,透過Client端的Proxy代理程式來呼叫遠端Server機器上的物件。.NET Framework則使用.NET Remoting或Web Services技術來實作分散式處理的工作概念;在此針對.NET Remoting的設計架構做一個初步的簡介。

.NET Framework提供了多種的機制來支援Remoting,如:
.利用Channel來負責訊息的傳送與接收。
.利用Formatter來負責在訊息要透過channel傳送出去之前,先將訊息做適當的加密,或於訊息在透過Channel接收進來之後,先將訊息做相對的解密工作。
.利用Proxy來呼叫遠端的物件執行所要的功能呼叫。

其關係如下圖所示:



Channel 和 Formatter
在遠端物件被使用之前,必須先在Server端註冊好訊息傳送的通道(Channel),這些Channel可透過.NET Remotin configuration file或 ChannelServices物件類別的RegisterChannel方法來註冊。

在Channel的使用上,.NET Framework支援HTTP、TCP及SMTP等通道。若使用HTTP Channel ,則使用SOAP協定來收送訊息,所有的訊息會被傳送到SOAP Formatter中,被序列化(serialized)成XML的格式,而SOAP所需的headers也會被加入。至於使用TCP Channel者,則使用TCP協定來將訊息傳送到Binary Formatter中,以Binary Stream的方式來將訊息傳送到URI目的地。(URI : Universal Resource Identifier,類似大家所熟悉的URL)。

Activation and Proxy
Server-Side Activation
Server端在Client端要存取Remoting物件時必需在Server端能自動啟始Remoting物件,可使用RemotingConfiguration物件類別的RegisterWellKnownServiceType方法來完成這項工作。

Client-Side Activation
Client端要使用遠端物件之前,可使用New 或Activator 物件類別所提供的CreateInstance或GetObject方法來啟動物件並傳回Proxy,以便Client端可透過Proxy來執行叫用遠端物件的方法。

範例
以下分三個步驟來介紹
1. 建立Remoting物件
2. 在Server上初始Remoting物件
3. Client端使用Remoting物件

步驟1:建立Remoting物件
建立一個MathServer物件類別,提供Sum方法,可給予一連串的整數由Sum方法代為計算總和。程式碼如下,並說明於後:
Imports System
Namespace RemotingSamples

???? Public Class MathServer
????????? Inherits MarshalByRefObject

????????? Public callCounter As Integer = 0

????????? Function Sum(ByVal ParamArray a() As Integer) As Integer
?????????????? Dim i As Integer
?????????????? For i = 0 To a.Length - 1
??????????????????? Sum += a(i)
?????????????? Next

?????????????? callCounter += 1
???? End Function
End Class

End Namespace
說明:Remoting物件必須繼承自MarshalByRefObject,如此才能透過網路,將物件執行個體的參考位置傳遞給呼叫端。

步驟2:在Server上初始Remoting物件,程式碼如下,並說明於後:

Imports System
Imports System.Runtime.Remoting
Imports System.Runtime.Remoting.Channels
Imports System.Runtime.Remoting.Channels.Tcp
Imports System.Runtime.Remoting.Channels.Http
Imports ObjectServices.RemotingSamples

Public Class Server
???? Public Shared Sub Main()
?????????????? ‘建立兩個通道
????????? Dim chan1? As New Tcp.TcpChannel(8085)
????????? Dim chan2 As New Http.HttpChannel(8086)

?????????????? ‘註冊要偵聽這兩個通道
????????? ChannelServices.RegisterChannel(chan1)
????????? ChannelServices.RegisterChannel(chan2)

?????????????? ‘設定啟動哪個元件、服務的名稱及啟動的方式
??????????????????? ' 方法一
??????????????????? RemotingConfiguration.RegisterWellKnownServiceType( _
???????????????????????? GetType(ObjectServices.RemotingSamples.MathServer), _
???????????????????????? "CallMathFunction", _
???????????????????????? WellKnownObjectMode.Singleton)

??????????????????? ' 方法二
??????????????????? ' RemotingConfiguration.RegisterWellKnownServiceType( _
??????????????????? '????????? GetType(ObjectServices.RemotingSamples.MathServer), _
??????????????????? '????????? "CallMathFunction", _
??????????????????? '????????? WellKnownObjectMode.SingleCall)


??????????????????? Console.WriteLine("Press Enter key to exit")
??????????????????? Console.ReadLine()
????????? End Sub
End Class
說明:
1. Dim
chan1 As New Tcp.TcpChannel(8085)
????? Dim chan2 As New Http.HttpChannel(8086)
指出在8085 port上要建立TCP Channel, 8086 port上要建立Http Channel

2. ChannelServices.RegisterChannel(chan1)
??? ChannelServices.RegisterChannel(chan2)
註冊要偵聽 Chan1 和 Chan2

3. RemotingConfiguration.RegisterWellKnownServiceType( GetType(ObjectServices.RemotingSamples.MathServer), "CallMathFunction",WellKnownObjectMode.Singleton)

指出在Server端註冊所要使用的元件、服務的名稱及啟動的方式。
其中WellKnownObjectMode.Singleton表示一個執行個體可供多個前端來呼叫,可保留其狀態,另一種則為WellKnownObjectMode.SingleCall,一個執行個體只能服務一個前端的呼叫,無法保留其狀態。

步驟3:在Client端使用Remoting物件,程式碼如下:
Imports System
Imports System.Runtime.Remoting
Imports System.Runtime.Remoting.Channels
Imports System.Runtime.Remoting.Channels.Tcp
Imports System.Runtime.Remoting.Channels.Http
Imports Microsoft.VisualBasic
Imports System.IO
Imports ObjectServices.RemotingSamples

Public Class Client
???? Public Shared Sub Main()

????????? Dim counter As Integer

????????? Dim chan1 As New TcpChannel()
????????? ChannelServices.RegisterChannel(chan1)

????????? Dim obj1 As MathServer = _
?????????????? CType(Activator.GetObject( _
??????????????????? GetType(ObjectServices.RemotingSamples.MathServer), _
??????????????????? "tcp://localhost:8085/CallMathFunction"), _
??????????????????? MathServer)

????????? If (obj1 Is Nothing) Then
?????????????? Console.WriteLine("Could not locate TCP server")
?????????????? Exit Sub
????????? End If

????????? Dim chan2 As New HttpChannel()
????????? ChannelServices.RegisterChannel(chan2)

????????? Dim obj2 As MathServer = _
?????????????? CType(Activator.GetObject( _
??????????????????? GetType(ObjectServices.RemotingSamples.MathServer), _
??????????????????? "http://localhost:8086/CallMathFunction"), _
??????????????????? MathServer)

????????? If (obj2 Is Nothing) Then
?????????????? Console.WriteLine("Could not locate HTTP server")
?????????????? Exit Sub
????????? End If

????????? Try
?????????????? Console.WriteLine("Client1 TCP Call Sum method {0} Counter {1}", obj1.Sum(10, 20, 30), obj1.callCounter)
?????????????? Console.WriteLine("Client2 HTTP HelloMethod {0} Counter {1}", obj2.Sum(100, 200, 300, 400), obj1.callCounter)
????????? Catch ioExcep As IOException
?????????????? Console.WriteLine("Remote IO Error" & vbCrLf & "Exception:" & vbCrLf & ioExcep.ToString())
?????????????? End Try
????????? End Sub

End Class

說明:
1.Dim obj1 As MathServer = _
??????????????????? CType(Activator.GetObject( _
???????????????????????? GetType(ObjectServices.RemotingSamples.MathServer), _
???????????????????????? "tcp://localhost:8085/CallMathFunction"), _
???????????????????????? MathServer)
在Tcp道路上叫用遠端物件(含遠端物件的物件型別名稱、URI及通道資料),透過Activator.GetObject來起始物件並傳回Proxy。

原始程式碼下載

總結

以上是生活随笔為你收集整理的.NET Remoting的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产午夜久久 | 国产精品麻豆果冻传媒在线播放 | 一区二区三区黄色片 | 毛片免费在线观看视频 | 欧美,日韩,国产在线 | 少妇精品无码一区二区免费视频 | 又爽又黄又无遮挡 | 国产精品美女久久久久av超清 | 国产日韩欧美综合在线 | 中文字幕免费高清在线观看 | 神马久久久久久 | 污导航在线观看 | 欧美一区二区久久 | 天堂av一区二区 | 国产a免费观看 | 国产区视频在线 | 欧美亚日韩 | 成人小视频在线看 | 樱花视频在线免费观看 | 国产精品综合网 | 国产又粗又猛又爽又黄91 | 天天干狠狠干 | 久久国产精品系列 | 香蕉尹人网 | 爱情岛论坛亚洲入口 | 欧美在线观看视频 | 在线观看亚洲视频 | 在线成人欧美 | 就去色综合 | 朝桐光在线视频 | 毛片免费播放 | 国产熟妇一区二区三区四区 | 亚洲精品久久久久久久蜜桃臀 | 全黄一级片 | 国产精品国产三级国产三级人妇 | 国产精品www | 少妇影院在线观看 | 蜜桃网站 | 亚洲大乳 | 骚婷婷 | 99精品视频在线播放免费 | 日韩成人高清视频在线观看 | 免费处女在线破视频 | 国产精品福利视频 | 懂色中文一区二区在线播放 | 精品成人av一区二区三区 | 色网在线观看 | 一级不卡 | 久久亚洲精少妇毛片午夜无码 | 国产一卡二卡在线播放 | 青青久久久| 久久草国产 | 成人在线播放视频 | 亚洲少妇15p | 天堂av资源在线观看 | 66亚洲一卡2卡新区成片发布 | 91狠狠干 | 黄色一级一片免费播放 | 长腿校花无力呻吟娇喘的视频 | 国产女主播在线播放 | 精品欧美一区二区久久久久 | 亚洲最大在线观看 | 在线免费观看国产精品 | 亚洲污网站| 亚洲播放器 | 日韩av图片 | 国产吞精囗交久久久 | 涩av| 五月婷婷激情综合网 | 精品日韩av | 成人国产在线 | 久久久人人人 | 精品国产乱码久久久久久久 | av播放在线 | 99re在线视频 | 男女男精品视频站 | 国产欧美一区二区三区免费看 | 少妇床戏av | 亚日韩欧美 | 美景之屋电影免费高清完整韩剧 | jul023被夫上司连续侵犯 | 久久精品一区二 | 天天射日| 中文字幕69 | 久久久久亚洲av无码网站 | 成人国产综合 | 91国产视频在线观看 | 亚洲a视频在线 | 国产1区2区3区中文字幕 | 国产91热爆ts人妖系列 | 男人的天堂免费视频 | 成人在线视频网站 | 亚洲欧美日韩成人在线 | 日韩黄色三级 | 视频一区 中文字幕 | 久久作爱| 性色欲网站人妻丰满中文久久不卡 | 老司机精品福利视频 | 性色av免费 |