Bagikan melalui


RemotingServices.Marshal Metode

Definisi

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

Obj
MarshalByRefObject

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

Obj
MarshalByRefObject

Objek yang akan dikonversi.

URI
String

URI yang ditentukan untuk menginisialisasi yang baru ObjRef. Bisa jadi null.

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

Obj
MarshalByRefObject

Objek yang akan dikonversi menjadi ObjRef.

ObjURI
String

URI yang ditentukan dalam Obj parameter di-marshalasikan dengan. Bisa jadi null.

RequestedType
Type

Adalah TypeObj marshaled sebagai. 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.

Lihat juga

Berlaku untuk