ActivatedClientTypeEntry 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
儲存用戶端註冊的物件類型值,作為可於伺服器啟用的類型。
public ref class ActivatedClientTypeEntry : System::Runtime::Remoting::TypeEntry
public class ActivatedClientTypeEntry : System.Runtime.Remoting.TypeEntry
[System.Runtime.InteropServices.ComVisible(true)]
public class ActivatedClientTypeEntry : System.Runtime.Remoting.TypeEntry
type ActivatedClientTypeEntry = class
inherit TypeEntry
[<System.Runtime.InteropServices.ComVisible(true)>]
type ActivatedClientTypeEntry = class
inherit TypeEntry
Public Class ActivatedClientTypeEntry
Inherits TypeEntry
- 繼承
- 屬性
範例
以下程式碼範例展示了如何使用 來 ActivatedClientTypeEntry 註冊客戶端啟用的遠端物件。 範例包含三個部分:客戶端、伺服器,以及由客戶端與伺服器使用的遠端物件。
以下程式碼範例展示了一個客戶端:
#using <System.Runtime.Remoting.dll>
#using <ActivatedClientTypeEntry_Share.dll>
using namespace System;
using namespace System::Runtime::Remoting;
using namespace System::Runtime::Remoting::Channels;
using namespace System::Runtime::Remoting::Channels::Tcp;
static void main()
{
// Register TCP Channel.
ChannelServices::RegisterChannel( gcnew TcpChannel );
// Create activated client type entry.
ActivatedClientTypeEntry^ activatedClientTypeEntry = gcnew ActivatedClientTypeEntry( HelloServer::typeid, "tcp://localhost:8082" );
// Register type on client to activate it on the server.
RemotingConfiguration::RegisterActivatedClientType( activatedClientTypeEntry );
// Activate a client activated object type.
HelloServer^ helloServer = gcnew HelloServer( "ParameterString" );
// Print the object type.
Console::WriteLine( "Object type of client activated object: {0}", activatedClientTypeEntry->ObjectType->ToString() );
// Print the application URL.
Console::WriteLine( "Application url where the type is activated: {0}", activatedClientTypeEntry->ApplicationUrl->ToString() );
// Print the string representation of the type entry.
Console::WriteLine( "Type and assembly name and application URL of the remote object: {0}", activatedClientTypeEntry->ToString() );
// Print a blank line.
Console::WriteLine();
// Check that server was located.
if ( !helloServer )
{
Console::WriteLine( "Could not locate server" );
}
else
{
Console::WriteLine( "Calling remote object" );
Console::WriteLine( helloServer->HelloMethod( "Bill" ) );
}
}
using System;
using System.Runtime.Remoting;
using System.Runtime.Remoting.Channels;
using System.Runtime.Remoting.Channels.Tcp;
public class MyClient
{
public static void Main()
{
// Register TCP Channel.
ChannelServices.RegisterChannel(new TcpChannel());
// Create activated client type entry.
ActivatedClientTypeEntry myActivatedClientTypeEntry =
new ActivatedClientTypeEntry(typeof(HelloServer),
"tcp://localhost:8082");
// Register type on client to activate it on the server.
RemotingConfiguration.RegisterActivatedClientType(
myActivatedClientTypeEntry);
// Activate a client activated object type.
HelloServer myHelloServer = new HelloServer("ParameterString");
// Print the object type.
Console.WriteLine(
"Object type of client activated object: " +
myActivatedClientTypeEntry.ObjectType.ToString());
// Print the application URL.
Console.WriteLine(
"Application url where the type is activated: " +
myActivatedClientTypeEntry.ApplicationUrl);
// Print the string representation of the type entry.
Console.WriteLine(
"Type name, assembly name and application URL " +
"of the remote object: " +
myActivatedClientTypeEntry.ToString());
// Print a blank line.
Console.WriteLine();
// Check that server was located.
if (myHelloServer == null)
{
Console.WriteLine("Could not locate server");
}
else
{
Console.WriteLine("Calling remote object");
Console.WriteLine(myHelloServer.HelloMethod("Bill"));
}
}
}
Imports System.Runtime.Remoting
Imports System.Runtime.Remoting.Channels
Imports System.Runtime.Remoting.Channels.Tcp
Public Class MyClient
Public Shared Sub Main()
' Register TCP Channel.
ChannelServices.RegisterChannel(New TcpChannel())
' Create activated client type entry.
Dim myActivatedClientTypeEntry As _
New ActivatedClientTypeEntry(GetType(HelloServer), _
"tcp://localhost:8082")
' Register type on client to activate it on the server.
RemotingConfiguration.RegisterActivatedClientType( _
myActivatedClientTypeEntry)
' Activate a client activated object type.
Dim myHelloServer As New HelloServer("ParameterString")
' Print the object type.
Console.WriteLine("Object type of client activated object: " + _
myActivatedClientTypeEntry.ObjectType.ToString())
' Print the application URL.
Console.WriteLine("Application url where the type is activated: " + _
myActivatedClientTypeEntry.ApplicationUrl)
' Print the string representation of the type entry.
Console.WriteLine( _
"Type name, assembly name and application URL " + _
"of the remote object: " + _
myActivatedClientTypeEntry.ToString())
' Print a blank line.
Console.WriteLine()
' Check that server was located.
If myHelloServer Is Nothing Then
Console.WriteLine("Could not locate server")
Else
Console.WriteLine("Calling remote object")
Console.WriteLine(myHelloServer.HelloMethod("Bill"))
End If
End Sub
End Class
以下程式碼範例展示了此用戶端的伺服器:
#using <ActivatedClientTypeEntry_Share.dll>
#using <System.Runtime.Remoting.dll>
using namespace System;
using namespace System::Runtime::Remoting;
using namespace System::Runtime::Remoting::Channels;
using namespace System::Runtime::Remoting::Channels::Tcp;
void main()
{
ChannelServices::RegisterChannel( gcnew TcpChannel( 8082 ) );
RemotingConfiguration::RegisterActivatedServiceType( HelloServer::typeid );
Console::WriteLine( "Press enter to stop this process" );
Console::ReadLine();
}
using System;
using System.Runtime.Remoting;
using System.Runtime.Remoting.Channels;
using System.Runtime.Remoting.Channels.Tcp;
public class MyServer
{
public static void Main()
{
ChannelServices.RegisterChannel(new TcpChannel(8082));
RemotingConfiguration.RegisterActivatedServiceType(typeof(HelloServer));
Console.WriteLine("Press enter to stop this process");
Console.ReadLine();
}
}
Imports System.Runtime.Remoting
Imports System.Runtime.Remoting.Channels
Imports System.Runtime.Remoting.Channels.Tcp
Public Class MyServer
Public Shared Sub Main()
ChannelServices.RegisterChannel(New TcpChannel(8082))
RemotingConfiguration.RegisterActivatedServiceType(GetType(HelloServer))
Console.WriteLine("Press enter to stop this process")
Console.ReadLine()
End Sub
End Class
以下程式碼範例提供用戶端與伺服器所使用的遠端物件:
using namespace System;
public ref class HelloServer: public MarshalByRefObject
{
public:
HelloServer( String^ myString )
{
Console::WriteLine( "HelloServer activated" );
Console::WriteLine( "Paramater passed to the constructor is {0}", myString );
}
String^ HelloMethod( String^ myName )
{
Console::WriteLine( "HelloMethod : {0}", myName );
return String::Format( "Hi there {0}", myName );
}
};
using System;
public class HelloServer : MarshalByRefObject
{
public HelloServer(String myString)
{
Console.WriteLine("HelloServer activated");
Console.WriteLine("Parameter passed to the constructor is "+myString);
}
public String HelloMethod(String myName)
{
Console.WriteLine("HelloMethod : {0}",myName);
return "Hi there " + myName;
}
}
Public Class HelloServer
Inherits MarshalByRefObject
Public Sub New(myString As String)
Console.WriteLine("HelloServer activated")
Console.WriteLine("Parameter passed to the constructor is " + myString)
End Sub
Public Function HelloMethod(myName As String) As String
Console.WriteLine("HelloMethod : {0}", myName)
Return "Hi there " + myName
End Function 'HelloMethod
End Class
備註
要在用戶端建立由用戶端啟用的物件實例,你必須知道它 Type ,並且必須透過此 RegisterActivatedClientType 方法在用戶端註冊。 要取得代理伺服器以啟用客戶端啟用物件的新實例,客戶端必須先註冊一個通道, ChannelServices 然後透過呼叫 new來啟動該物件。
要啟用帶有 new 關鍵字的客戶端啟用物件類型,必須先在用戶端使用該 RegisterActivatedClientType 方法註冊該物件類型。 透過呼叫 RegisterActivatedClientType ,你會讓遠端應用程式的基礎設施知道遠端應用程式的位置,而遠端應用程式正 new 試圖建立它。 反之,若你使用此 Activator.CreateInstance 方法建立客戶端啟用物件的新實例,必須提供遠端應用程式的 URL 作為參數,因此客戶端無需事先註冊。 若要提供 Activator.CreateInstance 該方法並提供你想建立物件的伺服器 URL,你必須將該 URL 封裝在類別的 UrlAttribute 實例中。
建構函式
| 名稱 | Description |
|---|---|
| ActivatedClientTypeEntry(String, String, String) |
初始化一個新的類別實例 ActivatedClientTypeEntry ,使用給定的類型名稱、組合名稱及應用程式 URL。 |
| ActivatedClientTypeEntry(Type, String) |
初始化一個新的類別實例 ActivatedClientTypeEntry ,使用給定 Type 的 和 應用程式 URL。 |
屬性
| 名稱 | Description |
|---|---|
| ApplicationUrl |
取得應用程式的網址來啟用輸入。 |
| AssemblyName |
取得設定為遠端啟用型態的物件類型組合名稱。 (繼承來源 TypeEntry) |
| ContextAttributes |
取得或設定客戶端啟用型別的上下文屬性。 |
| ObjectType |
取得 Type 客戶端啟用型態。 |
| TypeName |
取得物件類型的完整型別名稱,設定為遠端啟用型態。 (繼承來源 TypeEntry) |
方法
| 名稱 | Description |
|---|---|
| Equals(Object) |
判斷指定的物件是否等於目前的物件。 (繼承來源 Object) |
| GetHashCode() |
做為預設哈希函式。 (繼承來源 Object) |
| GetType() |
取得目前實例的 Type。 (繼承來源 Object) |
| MemberwiseClone() |
建立目前 Object的淺層複本。 (繼承來源 Object) |
| ToString() |
回傳客戶端啟用型態的型別名稱、組合名稱及應用程式 URL,格式為 String。 |