Aracılığıyla paylaş


RemotingServices.Marshal Yöntem

Tanım

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

Aşırı Yüklemeler

Marshal(MarshalByRefObject)

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

Marshal(MarshalByRefObject, String)

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

Marshal(MarshalByRefObject, String, Type)

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

Marshal(MarshalByRefObject)

bir MarshalByRefObjectalır, uzaktan iletişim altyapısına kaydeder ve sınıfın ObjRef 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

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

Özel durumlar

Obj parametresi bir nesne ara sunucusudur.

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

Açıklamalar

A ObjRef , bir nesne başvurusunu bir uygulama etki alanı sınırına aktarmak için kullanılan bir nesnenin seri hale getirilebilir bir gösterimidir. Bir nesne için oluşturma ObjRef , hazırlama olarak bilinir. bir ObjRef 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, ObjRef nesne için genellikle gerçek nesneye bağlı bir ara sunucu oluşturmak için öğesinin ayrıştırılması gerekir. Bu işlem, özetleme olarak bilinir.

, ObjRef sıralanan nesnenin Type ve sınıfını açıklayan bilgileri, belirli bir nesne örneğini benzersiz olarak tanımlayan bir URI'yi ve nesnenin bulunduğu uzaktan iletişim alt bölümüne nasıl ulaşıldığı hakkında iletişimle ilgili bilgileri 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 yöntemi tarafından SetObjectUriForMarshal 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, parametre bir proxy ise Obj , bir özel durum oluşturulur. Saydam proxy sunucu nesnesi olarak işlendiğinden özel proxy'ler için bu kısıtlama gevşetilir.

Ayrıca bkz.

Şunlara uygulanır

Marshal(MarshalByRefObject, String)

Belirtilen MarshalByRefObject URI'ye sahip sınıfın ObjRef 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 ObjReföğesinin başlatıldığı belirtilen URI. olabilir null.

Döndürülenler

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

Özel durumlar

Obj bir nesne ara sunucusudur ve URI parametresi değildir null.

Çağrı yığınındaki en üstteki 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 bir nesneyi sıralamak için geçerli Marshal yöntemin 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

A ObjRef , bir nesne başvurusunu bir uygulama etki alanı sınırına aktarmak için kullanılan bir nesnenin seri hale getirilebilir bir gösterimidir. Bir nesne için oluşturma ObjRef , hazırlama olarak bilinir. bir ObjRef 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, ObjRef nesne için genellikle gerçek nesneye bağlı bir ara sunucu oluşturmak için öğesinin ayrıştırılması gerekir. Bu işlem, özetleme olarak bilinir.

, ObjRef sıralanan nesnenin Type ve sınıfını açıklayan bilgileri, belirli bir nesne örneğini benzersiz olarak tanımlayan bir URI'yi ve nesnenin bulunduğu uzaktan iletişim alt bölümüne nasıl ulaşıldığı hakkında iletişimle ilgili bilgileri 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, parametre bir proxy ise Obj , bir özel durum oluşturulur. Saydam proxy sunucu nesnesi olarak işlendiğinden özel proxy'ler için bu kısıtlama gevşetilir.

Ayrıca bkz.

Şunlara uygulanır

Marshal(MarshalByRefObject, String, Type)

öğesini MarshalByRefObject alır ve belirtilen URI'ye ve sağlanan Typeöğesine sahip sınıfının bir örneğine ObjRef 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

'a dönüştürülecek ObjRefnesne.

ObjURI
String

parametresinde belirtilen nesnenin Obj ile sıralandığı URI. olabilir null.

RequestedType
Type

olarak TypeObj sıralanır. olabilir null.

Döndürülenler

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

Özel durumlar

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

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

Açıklamalar

A ObjRef , bir nesne başvurusunu bir uygulama etki alanı sınırına aktarmak için kullanılan bir nesnenin seri hale getirilebilir bir gösterimidir. Bir nesne için oluşturma ObjRef , hazırlama olarak bilinir. bir ObjRef 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, ObjRef nesne için genellikle gerçek nesneye bağlı bir ara sunucu oluşturmak için öğesinin ayrıştırılması gerekir. Bu işlem, özetleme olarak bilinir.

, ObjRef sıralanan nesnenin Type ve sınıfını açıklayan bilgileri, belirli bir nesne örneğini benzersiz olarak tanımlayan bir URI'yi ve nesnenin bulunduğu uzaktan iletişim alt bölümüne nasıl ulaşıldığı hakkında iletişimle ilgili bilgileri 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 C ile B arasında yayınlayabilir ancak A'ya dönüştüremez.

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, parametre bir proxy ise Obj , bir özel durum oluşturulur. Saydam proxy sunucu nesnesi olarak işlendiğinden özel proxy'ler için bu kısıtlama gevşetilir.

Ayrıca bkz.

Şunlara uygulanır