RemotingServices.Marshal 메서드

정의

지정된 MarshalByRefObjectObjRef 클래스의 인스턴스로 변환하여 애플리케이션 도메인과 네트워크 사이에서 전송이 가능하도록 serialize합니다.

오버로드

Marshal(MarshalByRefObject)

MarshalByRefObject를 가져와서 원격 인프라에 등록한 다음 ObjRef 클래스의 인스턴스로 변환합니다.

Marshal(MarshalByRefObject, String)

주어진 MarshalByRefObject를 지정된 URI가 포함된 ObjRef 클래스의 인스턴스로 변환합니다.

Marshal(MarshalByRefObject, String, Type)

MarshalByRefObject를 가져와서 지정된 URI 및 제공된 ObjRef이 있는 Type 클래스의 인스턴스로 변환합니다.

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 일반적으로 실제 개체에 연결 하는 개체에 대 한 프록시를 만드는 구문 분석 되어야 합니다. 이 작업은 역마샬링 이라고 합니다.

A 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 일반적으로 실제 개체에 연결 하는 개체에 대 한 프록시를 만드는 구문 분석 되어야 합니다. 이 작업은 역마샬링 이라고 합니다.

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

마샬링하는 동안 현재 스레드의 컨텍스트를 사용, 컨텍스트가 아닌 활성화 되어 있던 개체를 만들 때.

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

추가 정보

적용 대상

Marshal(MarshalByRefObject, String, Type)

MarshalByRefObject를 가져와서 지정된 URI 및 제공된 ObjRef이 있는 Type 클래스의 인스턴스로 변환합니다.

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

Obj가 마샬링될 Type입니다. null일 수 있습니다.

반환

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

예외

Obj가 원격 개체의 프록시이고, ObjUri 매개 변수가 null이 아닌 경우

호출 스택의 상위 호출자 중 하나 이상에게 원격 형식 및 채널을 구성하기 위한 권한이 없는 경우

설명

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

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

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

마샬링하는 동안 현재 스레드의 컨텍스트를 사용, 컨텍스트가 아닌 활성화 되어 있던 개체를 만들 때.

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

추가 정보

적용 대상