다음을 통해 공유


RemotingServices.Marshal 메서드

정의

지정된 MarshalByRefObject 애플리케이션 도메인과 네트워크를 통한 전송을 위해 직렬화할 수 있는 ObjRef 클래스의 인스턴스로 변환합니다.

오버로드

Marshal(MarshalByRefObject)

MarshalByRefObject사용하여 원격 인프라에 등록하고 ObjRef 클래스의 인스턴스로 변환합니다.

Marshal(MarshalByRefObject, String)

지정된 MarshalByRefObject 지정된 URI를 사용하여 ObjRef 클래스의 인스턴스로 변환합니다.

Marshal(MarshalByRefObject, String, Type)

MarshalByRefObject 사용하여 지정된 URI 및 제공된 Type사용하여 ObjRef 클래스의 인스턴스로 변환합니다.

Marshal(MarshalByRefObject)

MarshalByRefObject사용하여 원격 인프라에 등록하고 ObjRef 클래스의 인스턴스로 변환합니다.

public:
 static System::Runtime::Remoting::ObjRef ^ Marshal(MarshalByRefObject ^ Obj);
public static System.Runtime.Remoting.ObjRef Marshal (MarshalByRefObject Obj);
static member Marshal : MarshalByRefObject -> System.Runtime.Remoting.ObjRef
Public Shared Function Marshal (Obj As MarshalByRefObject) As ObjRef

매개 변수

Obj
MarshalByRefObject

변환할 개체입니다.

반환

Obj 매개 변수에 지정된 개체를 나타내는 ObjRef 클래스의 인스턴스입니다.

예외

Obj 매개 변수는 개체 프록시입니다.

호출 스택에서 더 높은 호출자 중 하나 이상에는 원격 유형 및 채널을 구성할 수 있는 권한이 없습니다.

설명

ObjRef 애플리케이션 도메인 경계를 넘어 개체 참조를 전송하는 데 사용되는 개체의 직렬화 가능한 표현입니다. 개체에 대한 ObjRef 만드는 것을 마샬링이라고 합니다. ObjRef 채널을 통해 다른 애플리케이션 도메인(다른 프로세스 또는 컴퓨터에서)으로 전송할 수 있습니다. 다른 애플리케이션 도메인에서 일반적으로 실제 개체에 연결된 개체에 대한 프록시를 만들려면 ObjRef 구문 분석해야 합니다. 이 작업을 비마할링이라고합니다.

ObjRef 마샬링되는 개체의 Type 및 클래스를 설명하는 정보, 특정 개체 인스턴스를 고유하게 식별하는 URI 및 개체가 있는 원격 세분화에 도달하는 방법에 대한 통신 관련 정보를 포함합니다.

마샬링하는 동안 개체를 만들 때 활성 상태였던 컨텍스트가 아니라 현재 스레드의 컨텍스트가 사용됩니다. URI가 SetObjectUriForMarshal 메서드에 의해 명시적으로 설정되지 않은 경우 원격 ID 인프라에 의해 자동으로 생성됩니다.

두 가지 이유 중 하나로 인해 URI를 프록시와 연결할 수 없습니다. 즉, URI가 나타내는 개체의 서버 쪽에서 생성되었거나 개체가 잘 알려져 있으며 이 경우 URI가 알려져 있습니다. 이러한 이유로 Obj 매개 변수가 프록시인 경우 예외가 throw됩니다. 사용자 지정 프록시의 경우 투명 프록시가 서버 개체로 처리되므로 이 제한이 완화됩니다.

추가 정보

적용 대상

Marshal(MarshalByRefObject, String)

지정된 MarshalByRefObject 지정된 URI를 사용하여 ObjRef 클래스의 인스턴스로 변환합니다.

public:
 static System::Runtime::Remoting::ObjRef ^ Marshal(MarshalByRefObject ^ Obj, System::String ^ URI);
public static System.Runtime.Remoting.ObjRef Marshal (MarshalByRefObject Obj, string URI);
static member Marshal : MarshalByRefObject * string -> System.Runtime.Remoting.ObjRef
Public Shared Function Marshal (Obj As MarshalByRefObject, URI As String) As ObjRef

매개 변수

Obj
MarshalByRefObject

변환할 개체입니다.

URI
String

ObjRef초기화할 지정된 URI입니다. null수 있습니다.

반환

Obj 매개 변수에 지정된 개체를 나타내는 ObjRef 클래스의 인스턴스입니다.

예외

Obj 개체 프록시이며 URI 매개 변수는 null않습니다.

호출 스택에서 더 높은 호출자 중 하나 이상에는 원격 유형 및 채널을 구성할 수 있는 권한이 없습니다.

예제

다음 코드 예제에서는 현재 Marshal 메서드를 사용하여 지정된 개체를 마샬링하는 방법을 보여 줍니다.

TcpChannel^ channel = gcnew TcpChannel( 9000 );
ChannelServices::RegisterChannel( channel );
SampleWellKnown ^ objectWellKnown = gcnew SampleWellKnown;

// After the channel is registered, the Object* needs to be registered
// with the remoting infrastructure.  So, Marshal is called.
ObjRef^ objrefWellKnown = RemotingServices::Marshal( objectWellKnown, "objectWellKnownUri" );
Console::WriteLine( "An instance of SampleWellKnown type is published at {0}.", objrefWellKnown->URI );
Console::WriteLine( "Press enter to unregister SampleWellKnown, so that it is no longer available on this channel." );
Console::ReadLine();
RemotingServices::Disconnect( objectWellKnown );
Console::WriteLine( "Press enter to end the server process." );
Console::ReadLine();
TcpChannel channel = new TcpChannel(9000);
ChannelServices.RegisterChannel(channel);

SampleWellKnown objectWellKnown = new SampleWellKnown();

// After the channel is registered, the object needs to be registered
// with the remoting infrastructure.  So, Marshal is called.
ObjRef objrefWellKnown = RemotingServices.Marshal(objectWellKnown, "objectWellKnownUri");
Console.WriteLine("An instance of SampleWellKnown type is published at {0}.", objrefWellKnown.URI);

Console.WriteLine("Press enter to unregister SampleWellKnown, so that it is no longer available on this channel.");
Console.ReadLine();
RemotingServices.Disconnect(objectWellKnown);

Console.WriteLine("Press enter to end the server process.");
Console.ReadLine();
Dim channel As New TcpChannel(9000)
ChannelServices.RegisterChannel(channel)

Dim objectWellKnown As New SampleWellKnown()
' After the channel is registered, the object needs to be registered
' with the remoting infrastructure.  So, Marshal is called.
Dim objrefWellKnown As ObjRef = RemotingServices.Marshal(objectWellKnown, "objectWellKnownUri")
Console.WriteLine("An instance of SampleWellKnown type is published at {0}.", objrefWellKnown.URI)

Console.WriteLine("Press enter to unregister SampleWellKnown, so that it is no longer available on this channel.")
Console.ReadLine()
RemotingServices.Disconnect(objectWellKnown)
Console.WriteLine("Press enter to end the server process.")
Console.ReadLine()

설명

ObjRef 애플리케이션 도메인 경계를 넘어 개체 참조를 전송하는 데 사용되는 개체의 직렬화 가능한 표현입니다. 개체에 대한 ObjRef 만드는 것을 마샬링이라고 합니다. ObjRef 채널을 통해 다른 애플리케이션 도메인(다른 프로세스 또는 컴퓨터에서)으로 전송할 수 있습니다. 다른 애플리케이션 도메인에서 일반적으로 실제 개체에 연결된 개체에 대한 프록시를 만들려면 ObjRef 구문 분석해야 합니다. 이 작업을 비마할링이라고합니다.

ObjRef 마샬링되는 개체의 Type 및 클래스를 설명하는 정보, 특정 개체 인스턴스를 고유하게 식별하는 URI 및 개체가 있는 원격 세분화에 도달하는 방법에 대한 통신 관련 정보를 포함합니다.

마샬링하는 동안 개체를 만들 때 활성 상태였던 컨텍스트가 아니라 현재 스레드의 컨텍스트가 사용됩니다.

두 가지 이유 중 하나로 인해 URI를 프록시와 연결할 수 없습니다. 즉, URI가 나타내는 개체의 서버 쪽에서 생성되었거나 개체가 잘 알려져 있으며 이 경우 URI가 알려져 있습니다. 이러한 이유로 Obj 매개 변수가 프록시인 경우 예외가 throw됩니다. 사용자 지정 프록시의 경우 투명 프록시가 서버 개체로 처리되므로 이 제한이 완화됩니다.

추가 정보

적용 대상

Marshal(MarshalByRefObject, String, Type)

MarshalByRefObject 사용하여 지정된 URI 및 제공된 Type사용하여 ObjRef 클래스의 인스턴스로 변환합니다.

public:
 static System::Runtime::Remoting::ObjRef ^ Marshal(MarshalByRefObject ^ Obj, System::String ^ ObjURI, Type ^ RequestedType);
public static System.Runtime.Remoting.ObjRef Marshal (MarshalByRefObject Obj, string ObjURI, Type RequestedType);
static member Marshal : MarshalByRefObject * string * Type -> System.Runtime.Remoting.ObjRef
Public Shared Function Marshal (Obj As MarshalByRefObject, ObjURI As String, RequestedType As Type) As ObjRef

매개 변수

Obj
MarshalByRefObject

ObjRef변환할 개체입니다.

ObjURI
String

Obj 매개 변수에 지정된 개체가 마샬링되는 URI입니다. null수 있습니다.

RequestedType
Type

Type Obj 마샬링됩니다. null수 있습니다.

반환

Obj 매개 변수에 지정된 개체를 나타내는 ObjRef 클래스의 인스턴스입니다.

예외

Obj 원격 개체의 프록시이며 ObjUri 매개 변수는 null않습니다.

호출 스택에서 더 높은 호출자 중 하나 이상에는 원격 유형 및 채널을 구성할 수 있는 권한이 없습니다.

설명

ObjRef 애플리케이션 도메인 경계를 넘어 개체 참조를 전송하는 데 사용되는 개체의 직렬화 가능한 표현입니다. 개체에 대한 ObjRef 만드는 것을 마샬링이라고 합니다. ObjRef 채널을 통해 다른 애플리케이션 도메인(다른 프로세스 또는 컴퓨터에서)으로 전송할 수 있습니다. 다른 애플리케이션 도메인에서 일반적으로 실제 개체에 연결된 개체에 대한 프록시를 만들려면 ObjRef 구문 분석해야 합니다. 이 작업을 비마할링이라고합니다.

ObjRef 마샬링되는 개체의 Type 및 클래스를 설명하는 정보, 특정 개체 인스턴스를 고유하게 식별하는 URI 및 개체가 있는 원격 세분화에 도달하는 방법에 대한 통신 관련 정보를 포함합니다.

지정된 Type 원격 인프라에서 노출된 형식 계층의 범위를 제한하는 데 사용됩니다. 예를 들어 개체 A가 개체 C에서 파생된 개체 B에서 파생되고 Marshal 호출되는 경우 클라이언트는 C와 B 간에 프록시를 캐스팅할 수 있지만 A에는 캐스팅할 수 없습니다.

마샬링하는 동안 개체를 만들 때 활성 상태였던 컨텍스트가 아니라 현재 스레드의 컨텍스트가 사용됩니다.

두 가지 이유 중 하나로 인해 URI를 프록시와 연결할 수 없습니다. 즉, URI가 나타내는 개체의 서버 쪽에서 생성되었거나 개체가 잘 알려져 있으며 이 경우 URI가 알려져 있습니다. 이러한 이유로 Obj 매개 변수가 프록시인 경우 예외가 throw됩니다. 사용자 지정 프록시의 경우 투명 프록시가 서버 개체로 처리되므로 이 제한이 완화됩니다.

추가 정보

적용 대상