RemotingServices.Marshal Yöntem
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
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
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
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
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
'a dönüştürülecek ObjRefnesne.
- ObjURI
- String
parametresinde belirtilen nesnenin Obj
ile sıralandığı URI. 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.