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, 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
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
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
bir nesne ara sunucusudur ve URI
parametresi null
değ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
ObjRefdönüştürülecek nesne.
- ObjURI
- String
Obj
parametresinde belirtilen nesnenin ile sıralandığı URI.
null
olabilir.
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 null
değ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.