日韩性视频-久久久蜜桃-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无码精品人妻系列试探 | 欧美色图小说 | 午夜国产在线视频 | 538任你躁在线精品免费 | 国产一二三区免费视频 | 住在隔壁的她动漫免费观看全集下载 | 天堂中文字幕免费一区 | 深夜免费在线视频 | 99福利网 | 国产视频九色蝌蚪 | 看片一区| 久久精品导航 | 国产手机在线播放 | av色片| 久久看视频 | 成人一区二区三区视频 | 顶级毛片| 久久国产成人精品 | 加勒比精品在线 | 亚洲a精品| 另类专区亚洲 | 国产农村妇女毛片精品 | 女生扒开腿让男生操 | 亚洲欧美韩日 | 丰满少妇一区二区三区专区 | 国产做a | 国产一区二区三区视频网站 | 久久99深爱久久99精品 | 亚洲精品1234| 久久亚洲精华国产精华液 | 伊人手机在线视频 | 亚洲精品在线观看免费 | 天堂在线中文8 | 日韩成人av电影 | 国产精品一卡二卡 | 亚洲成人播放 | 国产成人一区二区三区 | 亚洲a图 | 一级片播放 | 国产精品成人免费看片 | 久久精品成人 | 日本免费一区二区三区四区五六区 | 91丨九色丨蝌蚪丨丝袜 | 亚洲自拍偷拍第一页 | 黄色午夜视频 | 韩国美女av | 性福网站 | 免费黄网在线看 | 国产精品乱码久久久 | 国产精品黄视频 | 国产一级二级三级视频 | 国产精品二区一区二区aⅴ污介绍 | 黑人极品videos精品欧美裸 | 国产一区二区在线不卡 | 国产福利视频一区二区 | 一级中国毛片 | 屁屁影院一区二区三区 | 国产www| 国产成人一区二区三区别 | 亚洲综合第一页 | 亚洲av无码一区二区乱孑伦as | 青青草成人网 | 国产激情一区二区三区视频免樱桃 | 亚洲一区二区三区四区在线观看 | 国产综合日韩 | 日本www视频在线观看 | 91精品99| 嫩草社区| 中文字幕免费一区二区 | 69日本xxxxxxxx96 | 国产综合日韩 | 日本电车痴汉 | 国精品无码一区二区三区 | 国产麻豆剧传媒精品国产 | 国产污视频在线 | 日韩av无码一区二区三区不卡 | 另类激情综合 | 日本中文字幕在线视频 | 青青草原国产在线观看 | 亚日韩| 夜夜天天 | 国产乱淫av片杨贵妃 | 看片久久 | 中文字幕网站 | 卡一卡二卡三 | 欧美人与性动交g欧美精器 国产在线视频91 | 国产999精品久久久久久 | 真人一毛片 | 青青草网址 | 一级黄色大片网站 | 香蕉视频链接 | 成人精品一区二区三区中文字幕 | 97免费公开视频 |