RemotingServices.Marshal Metode
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Mengonversi yang diberikan MarshalByRefObject menjadi instans ObjRef kelas , yang dapat diserialisasikan untuk transmisi antara domain aplikasi dan melalui jaringan.
Overload
Marshal(MarshalByRefObject) |
MarshalByRefObjectMengambil , mendaftarkannya dengan infrastruktur jarak jauh, dan mengonversinya menjadi instans ObjRef kelas . |
Marshal(MarshalByRefObject, String) |
Mengonversi yang diberikan MarshalByRefObject menjadi instans ObjRef kelas dengan URI yang ditentukan. |
Marshal(MarshalByRefObject, String, Type) |
MarshalByRefObject Mengambil dan mengonversinya menjadi instans ObjRef kelas dengan URI yang ditentukan, dan yang disediakan Type. |
Marshal(MarshalByRefObject)
MarshalByRefObjectMengambil , mendaftarkannya dengan infrastruktur jarak jauh, dan mengonversinya menjadi instans ObjRef kelas .
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
Parameter
Objek yang akan dikonversi.
Mengembalikan
Instans ObjRef kelas yang mewakili objek yang ditentukan dalam Obj
parameter .
Pengecualian
Parameter Obj
adalah proksi objek.
Setidaknya salah satu penelepon yang lebih tinggi di tumpukan panggilan tidak memiliki izin untuk mengonfigurasi jenis dan saluran jarak jauh.
Keterangan
ObjRef adalah representasi objek yang dapat diserialisasikan yang digunakan untuk mentransfer referensi objek di seluruh batas domain aplikasi. ObjRef Membuat untuk objek dikenal sebagai marshaling. ObjRef dapat ditransfer melalui saluran ke domain aplikasi lain (mungkin pada proses atau komputer lain). Setelah berada di domain aplikasi lain, ObjRef harus diurai untuk membuat proksi untuk objek, umumnya terhubung ke objek nyata. Operasi ini dikenal sebagai unmarshaling.
ObjRef berisi informasi yang menjelaskan Type kelas dan objek yang sedang di-marshal, URI yang secara unik mengidentifikasi instans objek tertentu, dan informasi terkait komunikasi tentang cara mencapai subdivisi jarak jauh tempat objek berada.
Selama marshaling, konteks dari utas saat ini digunakan, bukan konteks yang aktif saat objek dibuat. Jika URI tidak diatur secara eksplisit oleh SetObjectUriForMarshal metode , URI secara otomatis dihasilkan oleh infrastruktur identitas jarak jauh.
Anda tidak dapat mengaitkan URI dengan proksi karena salah satu dari dua alasan: URI dihasilkan di sisi server untuk objek yang diwakilinya, atau objek sudah dikenal, dalam hal ini URI diketahui. Untuk alasan ini, jika Obj
parameter adalah proksi, pengecualian akan dilemparkan. Untuk proksi kustom, pembatasan ini dilonggarkan karena proksi transparan diperlakukan sebagai objek server.
Lihat juga
Berlaku untuk
Marshal(MarshalByRefObject, String)
Mengonversi yang diberikan MarshalByRefObject menjadi instans ObjRef kelas dengan URI yang ditentukan.
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
Parameter
Objek yang akan dikonversi.
Mengembalikan
Instans ObjRef kelas yang mewakili objek yang ditentukan dalam Obj
parameter .
Pengecualian
Obj
adalah proksi objek, dan URI
parameternya bukan null
.
Setidaknya salah satu penelepon yang lebih tinggi di tumpukan panggilan tidak memiliki izin untuk mengonfigurasi jenis dan saluran jarak jauh.
Contoh
Contoh kode berikut menunjukkan cara menggunakan metode saat ini Marshal untuk marshal objek tertentu.
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()
Keterangan
ObjRef adalah representasi objek yang dapat diserialisasikan yang digunakan untuk mentransfer referensi objek di seluruh batas domain aplikasi. ObjRef Membuat untuk objek dikenal sebagai marshaling. ObjRef dapat ditransfer melalui saluran ke domain aplikasi lain (mungkin pada proses atau komputer lain). Setelah berada di domain aplikasi lain, ObjRef harus diurai untuk membuat proksi untuk objek, umumnya terhubung ke objek nyata. Operasi ini dikenal sebagai unmarshaling.
ObjRef berisi informasi yang menjelaskan Type kelas dan objek yang sedang di-marshal, URI yang secara unik mengidentifikasi instans objek tertentu, dan informasi terkait komunikasi tentang cara mencapai subdivisi jarak jauh tempat objek berada.
Selama marshaling, konteks dari utas saat ini digunakan, bukan konteks yang aktif saat objek dibuat.
Anda tidak dapat mengaitkan URI dengan proksi karena salah satu dari dua alasan: URI dihasilkan di sisi server untuk objek yang diwakilinya, atau objek sudah dikenal, dalam hal ini URI diketahui. Untuk alasan ini, jika Obj
parameter adalah proksi, pengecualian akan dilemparkan. Untuk proksi kustom, pembatasan ini dilonggarkan karena proksi transparan diperlakukan sebagai objek server.
Lihat juga
Berlaku untuk
Marshal(MarshalByRefObject, String, Type)
MarshalByRefObject Mengambil dan mengonversinya menjadi instans ObjRef kelas dengan URI yang ditentukan, dan yang disediakan 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
Parameter
Objek yang akan dikonversi menjadi ObjRef.
- ObjURI
- String
URI yang ditentukan dalam Obj
parameter di-marshalasikan dengan. Bisa jadi null
.
Mengembalikan
Instans ObjRef kelas yang mewakili objek yang ditentukan dalam Obj
parameter .
Pengecualian
Obj
adalah proksi objek jarak jauh, dan ObjUri
parameternya bukan null
.
Setidaknya salah satu penelepon yang lebih tinggi di tumpukan panggilan tidak memiliki izin untuk mengonfigurasi jenis dan saluran jarak jauh.
Keterangan
ObjRef adalah representasi objek yang dapat diserialisasikan yang digunakan untuk mentransfer referensi objek di seluruh batas domain aplikasi. ObjRef Membuat untuk objek dikenal sebagai marshaling. ObjRef dapat ditransfer melalui saluran ke domain aplikasi lain (mungkin pada proses atau komputer lain). Setelah berada di domain aplikasi lain, ObjRef harus diurai untuk membuat proksi untuk objek, umumnya terhubung ke objek nyata. Operasi ini dikenal sebagai unmarshaling.
ObjRef berisi informasi yang menjelaskan Type kelas dan objek yang sedang di-marshal, URI yang secara unik mengidentifikasi instans objek tertentu, dan informasi terkait komunikasi tentang cara mencapai subdivisi jarak jauh tempat objek berada.
yang ditentukan Type digunakan oleh infrastruktur jarak jauh untuk membatasi cakupan hierarki jenis yang diekspos. Misalnya, jika objek A berasal dari objek B, yang berasal dari objek C, dan Marshal dipanggil, maka klien dapat melemparkan proksi antara C dan B tetapi tidak ke A.
Selama marshaling, konteks dari utas saat ini digunakan, bukan konteks yang aktif saat objek dibuat.
Anda tidak dapat mengaitkan URI dengan proksi karena salah satu dari dua alasan: URI dihasilkan di sisi server untuk objek yang diwakilinya, atau objek sudah dikenal, dalam hal ini URI diketahui. Untuk alasan ini, jika Obj
parameter adalah proksi, pengecualian akan dilemparkan. Untuk proksi kustom, pembatasan ini dilonggarkan karena proksi transparan diperlakukan sebagai objek server.