Aracılığıyla paylaş


RemotingServices.Marshal Yöntem

Tanım

Verilen MarshalByRefObject, uygulama etki alanları arasında ve ağ üzerinden iletim için seri hale getirilebilen ObjRef sınıfının bir örneğine dönüştürür.

Aşırı Yüklemeler

Marshal(MarshalByRefObject)

bir MarshalByRefObjectalır, uzaktan iletişim altyapısına kaydeder ve ObjRef sınıfının bir örneğine dönüştürür.

Marshal(MarshalByRefObject, String)

Belirtilen MarshalByRefObject belirtilen URI'ye sahip ObjRef sınıfının bir örneğine dönüştürür.

Marshal(MarshalByRefObject, String, Type)

bir MarshalByRefObject alır ve bunu belirtilen URI'ye ve sağlanan Typesahip ObjRef sınıfının bir örneğine dönüştürür.

Marshal(MarshalByRefObject)

bir MarshalByRefObjectalır, uzaktan iletişim altyapısına kaydeder ve ObjRef sınıfının bir örneğine dönüştürür.

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

Parametreler

Obj
MarshalByRefObject

Dönüştürülecek nesne.

Döndürülenler

Obj parametresinde belirtilen nesneyi temsil eden ObjRef sınıfının bir örneği.

Özel durumlar

Obj parametresi bir nesne ara sunucusudur.

Çağrı yığınında daha yüksek arayanlardan en az birinin uzaktan iletişim türlerini ve kanallarını yapılandırma izni yoktur.

Açıklamalar

ObjRef, bir nesne başvurusunu bir uygulama etki alanı sınırına aktarmak için kullanılan bir nesnenin serileştirilebilir bir gösterimidir. Bir nesne için ObjRef oluşturmak, hazırlama olarak bilinir. ObjRef bir kanal aracılığıyla başka bir uygulama etki alanına (büyük olasılıkla başka bir işlemde veya bilgisayarda) aktarılabilir. Diğer uygulama etki alanına girdikten sonra, nesne için genellikle gerçek nesneye bağlı bir ara sunucu oluşturmak için ObjRef ayrıştırılmalıdır. Bu işlem, özetleme olarak bilinir.

ObjRef, sıralanan nesnenin Type ve sınıfını açıklayan bilgiler, belirli nesne örneğini benzersiz olarak tanımlayan bir URI ve nesnenin bulunduğu uzaktan iletişim alt bölümüne nasıl ulaşabileceğinize ilişkin iletişimle ilgili bilgiler içerir.

Hazırlama sırasında, nesne oluşturulduğunda etkin olan bağlam değil, geçerli iş parçacığının bağlamı kullanılır. Bir URI, SetObjectUriForMarshal yöntemi tarafından açıkça ayarlanmadıysa, uzaktan iletişim kimlik altyapısı tarafından otomatik olarak oluşturulur.

Bir URI'yi iki nedenden biriyle ara sunucuyla ilişkilendiremezsiniz: URI, temsil ettiği nesne için sunucu tarafında oluşturulmuştur veya nesne iyi bilinir; bu durumda URI bilinir. Bu nedenle, Obj parametresi bir ara sunucuysa, bir özel durum oluşturulur. Özel proxy'ler için, saydam proxy sunucu nesnesi olarak işlendiğinden bu kısıtlama gevşetilir.

Ayrıca bkz.

Şunlara uygulanır

Marshal(MarshalByRefObject, String)

Belirtilen MarshalByRefObject belirtilen URI'ye sahip ObjRef sınıfının bir örneğine dönüştürür.

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

Parametreler

Obj
MarshalByRefObject

Dönüştürülecek nesne.

URI
String

Yeni ObjRefbaşlatıldığı belirtilen URI. nullolabilir.

Döndürülenler

Obj parametresinde belirtilen nesneyi temsil eden ObjRef sınıfının bir örneği.

Özel durumlar

Obj bir nesne ara sunucusudur ve URI parametresi nulldeğildir.

Çağrı yığınında daha yüksek arayanlardan en az birinin uzaktan iletişim türlerini ve kanallarını yapılandırma izni yoktur.

Örnekler

Aşağıdaki kod örneği, belirtilen nesneyi sıralamak için geçerli Marshal yönteminin nasıl kullanılacağını gösterir.

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()

Açıklamalar

ObjRef, bir nesne başvurusunu bir uygulama etki alanı sınırına aktarmak için kullanılan bir nesnenin serileştirilebilir bir gösterimidir. Bir nesne için ObjRef oluşturmak, hazırlama olarak bilinir. ObjRef bir kanal aracılığıyla başka bir uygulama etki alanına (büyük olasılıkla başka bir işlemde veya bilgisayarda) aktarılabilir. Diğer uygulama etki alanına girdikten sonra, nesne için genellikle gerçek nesneye bağlı bir ara sunucu oluşturmak için ObjRef ayrıştırılmalıdır. Bu işlem, özetleme olarak bilinir.

ObjRef, sıralanan nesnenin Type ve sınıfını açıklayan bilgiler, belirli nesne örneğini benzersiz olarak tanımlayan bir URI ve nesnenin bulunduğu uzaktan iletişim alt bölümüne nasıl ulaşabileceğinize ilişkin iletişimle ilgili bilgiler içerir.

Hazırlama sırasında, nesne oluşturulduğunda etkin olan bağlam değil, geçerli iş parçacığının bağlamı kullanılır.

Bir URI'yi iki nedenden biriyle ara sunucuyla ilişkilendiremezsiniz: URI, temsil ettiği nesne için sunucu tarafında oluşturulmuştur veya nesne iyi bilinir; bu durumda URI bilinir. Bu nedenle, Obj parametresi bir ara sunucuysa, bir özel durum oluşturulur. Özel proxy'ler için, saydam proxy sunucu nesnesi olarak işlendiğinden bu kısıtlama gevşetilir.

Ayrıca bkz.

Şunlara uygulanır

Marshal(MarshalByRefObject, String, Type)

bir MarshalByRefObject alır ve bunu belirtilen URI'ye ve sağlanan Typesahip ObjRef sınıfının bir örneğine dönüştürür.

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

Parametreler

Obj
MarshalByRefObject

ObjRefdönüştürülecek nesne.

ObjURI
String

Obj parametresinde belirtilen nesnenin ile sıralandığı URI. nullolabilir.

RequestedType
Type

Type Obj olarak sıralanır. nullolabilir.

Döndürülenler

Obj parametresinde belirtilen nesneyi temsil eden ObjRef sınıfının bir örneği.

Özel durumlar

Obj uzak bir nesnenin ara sunucusudur ve ObjUri parametresi nulldeğildir.

Çağrı yığınında daha yüksek arayanlardan en az birinin uzaktan iletişim türlerini ve kanallarını yapılandırma izni yoktur.

Açıklamalar

ObjRef, bir nesne başvurusunu bir uygulama etki alanı sınırına aktarmak için kullanılan bir nesnenin serileştirilebilir bir gösterimidir. Bir nesne için ObjRef oluşturmak, hazırlama olarak bilinir. ObjRef bir kanal aracılığıyla başka bir uygulama etki alanına (büyük olasılıkla başka bir işlemde veya bilgisayarda) aktarılabilir. Diğer uygulama etki alanına girdikten sonra, nesne için genellikle gerçek nesneye bağlı bir ara sunucu oluşturmak için ObjRef ayrıştırılmalıdır. Bu işlem, özetleme olarak bilinir.

ObjRef, sıralanan nesnenin Type ve sınıfını açıklayan bilgiler, belirli nesne örneğini benzersiz olarak tanımlayan bir URI ve nesnenin bulunduğu uzaktan iletişim alt bölümüne nasıl ulaşabileceğinize ilişkin iletişimle ilgili bilgiler içerir.

Belirtilen Type, kullanıma sunulan tür hiyerarşisinin kapsamını sınırlamak için uzaktan iletişim altyapısı tarafından kullanılır. Örneğin, A nesnesi C nesnesinden türetilen B nesnesinden türetilirse ve Marshal çağrılırsa, istemci proxy'yi A'ya değil C ile B arasında yayınlayabilir.

Hazırlama sırasında, nesne oluşturulduğunda etkin olan bağlam değil, geçerli iş parçacığının bağlamı kullanılır.

Bir URI'yi iki nedenden biriyle ara sunucuyla ilişkilendiremezsiniz: URI, temsil ettiği nesne için sunucu tarafında oluşturulmuştur veya nesne iyi bilinir; bu durumda URI bilinir. Bu nedenle, Obj parametresi bir ara sunucuysa, bir özel durum oluşturulur. Özel proxy'ler için, saydam proxy sunucu nesnesi olarak işlendiğinden bu kısıtlama gevşetilir.

Ayrıca bkz.

Şunlara uygulanır