Bagaimana untuk mengumpulkan objek ke server jauh oleh referensi dengan menggunakan Visual Basic 2005 atau Visual Basic.NET

Terjemahan Artikel Terjemahan Artikel
ID Artikel: 301112 - Melihat produk di mana artikel ini berlaku.
Artikel ini telah diarsipkan. Artikel ditawarkan dalam bentuk "apa adanya" dan tidak akan dapat diperbarui lagi.
Untuk Microsoft Visual C#.NET versi artikel ini, lihat 307600.
Perbesar semua | Perkecil semua

Pada Halaman ini

RINGKASAN

Artikel ini menunjukkan bagaimana untuk mengumpulkan objek dengan referensi ke server jauh. Ketika Anda Marsekal objek oleh referensi, runtime menciptakan proxy transparan sehingga server dapat membuat panggilan kembali ke objek pada klien. Satu-satunya hal yang dikirim ke server adalah proxy. Proxy Marsekal punggung panggilan kepada klien.

Artikel ini dibagi menjadi tiga bagian: server objek, aplikasi server dan klien aplikasi. Memperluas pada artikel Basis Pengetahuan Microsoft berikut:
300951 Cara membuat server jauh dengan menggunakan Visual Basic.NET
300943 Cara membuat akses klien ke server dengan menggunakan Visual Basic.NET

Persyaratan

Daftar berikut menguraikan fitur perangkat keras, perangkat lunak, jaringan infrastruktur, dan paket layanan yang Anda butuhkan:
  • Microsoft Windows Server 2003, Microsoft Windows 2000 Professional, Windows 2000 Server, Windows 2000 Advanced Server, atau Microsoft Windows NT 4.0 Server
  • Microsoft Visual Studio 2005 atau Microsoft Visual Studio.NET
Artikel ini mengasumsikan bahwa Anda sudah familiar dengan topik-topik berikut:
  • Visual Studio 2005 atau Visual Studio.NET
  • Jaringan dasar

Buat objek server jauh dengan melewati objek

Langkah pertama untuk menciptakan aplikasi server adalah untuk menciptakan objek server Anda. Objek server adalah apa yang klien aplikasi instantiates dan berkomunikasi dengan server komputer. Aplikasi klien ini dilakukan melalui objek proxy yang dibuat pada klien. Objek server Anda akan berada di perpustakaan kelas (DLL) dan disebut HelloServer. Dalam proyek yang sama Anda juga akan menentukan kelas yang akan dilewatkan dari klien ke server. Kelas ini akan disebut ForwardMe. Karena Anda ingin ForwardMe kelas untuk mengerahkan oleh referensi, kelas ForwardMe harus mewarisi dari MarshalByRefObject.
  1. Mulai Visual Studio 2005 atau Visual Studio.NET.
  2. Membuat aplikasi perpustakaan kelas baru dan nama ServerClassRef.
  3. Ubah nama berkas Class1.vb sebagai ServerClassRef.vb.
  4. Buka ServerClassRef.vb dan menambahkan dua kelas yang disebut HelloServer dan ForwardMe keduanya mewarisi dari MarshalByRefObject. Kelas HelloServer akan menjadi kelas utama yang digunakan oleh aplikasi client. Kelas ForwardMe akan digunakan untuk mengirim objek data dari klien ke server. File kode ServerClassRef.vb Anda akan terlihat seperti berikut:
    Public Class HelloServer
    	Inherits MarshalByRefObject
    
    End Class
    Public Class ForwardMe
    	Inherits MarshalByRefObject
    
    End Class
    					
  5. Menambahkan metode umum untuk HelloServer disebut HelloMethod yang membutuhkan ForwardMe objek. Anda akan menggunakan metode ini untuk lulus ForwardMe objek ke server. Metode ini akan memanggil CallMe metode dari objek. Kelas HelloServer Anda sekarang harus terlihat seperti berikut:
    Public Class HelloServer
        Inherits MarshalByRefObject
    
        Public Sub HelloMethod(ByRef obj As ForwardMe)
            Dim i As Integer
            obj.CallMe()
        End Sub
    End Class
    					
  6. Menambahkan metode publik ForwardMe kelas. Metode ini akan mendapatkan nama proses di mana kode ini sedang dijalankan. Karena Anda hanya mengirim sebuah rintisan proxy untuk server dan membuat callback untuk klien (Marsekal oleh referensi), kode akan melaksanakan proses klien.
    Public Class ForwardMe
        Inherits MarshalByRefObject
    
        Public Function CallMe() As Object
            Console.WriteLine("CallMe was executed in: " & _
            Process.GetCurrentProcess.ProcessName.ToString)
        End Function
    
    End Class
    					
  7. Membangun proyek untuk membuat ServerClassRef.dll Majelis.
  8. Menutup dan menyimpan proyek.

Membuat aplikasi server jauh

Sekarang bahwa Anda telah membuat objek server yang klien Anda akan berkomunikasi dengan, Anda harus mendaftar objek ini dengan kerangka Remoting. Mendaftarkan tidak hanya melibatkan mendaftar objek tetapi juga mencakup mulai server dan setelah itu mendengarkan pada port untuk klien untuk menghubungkan. Untuk melakukan ini, Anda memerlukan jenis proyek yang akan menampilkan file eksekusi. Alasan bahwa Anda termasuk server objek dalam proyek terpisah itu sehingga Anda dapat dengan mudah referensi objek server dari klien. Jika Anda termasuk dalam proyek ini Anda bisa tidak referensi karena referensi hanya dapat ditetapkan untuk file DLL.
  1. Mulai Visual Studio 2005 atau Visual Studio.NET.
  2. Untuk mudahnya, membuat aplikasi konsol baru untuk memulai remote server dan nama ServerObjectRef.
  3. Ubah nama berkas yang dibuat secara default dari Module1.vb untuk ServerObjectRef.vb.
  4. Menambahkan referensi ke System.runtime.Remoting namespace untuk proyek.
  5. Menambahkan referensi ke ServerClassRef.dll Majelis yang Anda buat sebelumnya.
  6. Menggunakan impor pernyataan di Remoting, Remoting.Channels, dan Remoting.channels.TCP namespaces sehingga Anda tidak akan diminta untuk memenuhi syarat Deklarasi di namespaces tersebut kemudian dalam kode Anda. Impor pernyataan harus digunakan sebelum untuk deklarasi lain:
    Imports System.Runtime.Remoting
    Imports System.Runtime.Remoting.Channels
    Imports System.Runtime.Remoting.Channels.TCP
    					
  7. Menyatakan variabel untuk menginisialisasi TcpChannel objek yang akan mendengarkan untuk klien untuk menghubungkan pada port tertentu, dalam hal ini pelabuhan 8085. Daftar saluran yang klien akan digunakan untuk berkomunikasi dengan layanan saluran dengan menggunakan RegisterChannel metode. Menambahkan kode Deklarasi dalam prosedur utama di Module1:
    Dim chan As TcpChannel = New TcpChannel(8085)
    ChannelServices.RegisterChannel(chan)
    					
  8. Mendaftar ServerClassRef objek dengan kerangka Remoting dengan menelepon RegisterWellKnownType metode RemotingConfiguration objek. Anda harus menentukan potongan-potongan berikut:
    1. Nama penuh jenis objek yang sedang terdaftar, dalam hal ini ServerClassRef.HelloServer, diikuti oleh Majelis nama, ServerClassRef. Anda harus menentukan nama namespace maupun nama kelas. Karena Anda tidak menentukan namespace dalam bagian sebelumnya, default akar namespace digunakan.
    2. Selanjutnya, memberikan nama akhir di mana objek akan diterbitkan. Klien harus mengetahui nama ini untuk menyambung ke objek. Penggunaan RemoteTestRef.
    3. Parameter terakhir menentukan objek mode, yang dapat SingleCall atau Tunggal. Contoh ini menentukan SingleCall. Modus objek menentukan seumur hidup objek ketika diaktifkan pada server. Dari SingleCall objek, misalnya baru kelas akan dibuat untuk setiap panggilan yang dibuat dari klien, bahkan jika klien yang sama panggilan metode yang sama lebih dari sekali. Objek tunggal, di sisi lain, yang dibuat setelah hanya dan semua klien berkomunikasi dengan objek yang sama:
      RemotingConfiguration.RegisterWellKnownServiceType( _
       Type.GetType("ServerClassRef.HelloServer, ServerClassRef"), _
       "RemoteTestRef", _
       WellKnownObjectMode.SingleCall)
      						
  9. Menjaga aplikasi server berjalan dengan menggunakan ReadLine metode Konsol objek:
    Console.WriteLine("Hit <enter> to exit...")
    Console.ReadLine()
    					
  10. Membangun proyek Anda.
  11. Menutup dan menyimpan proyek.

Membuat klien ke server jauh dengan melewati objek

  1. Mulai Visual Studio 2005 atau Visual Studio.NET.
  2. Membuat aplikasi konsol baru dan nama ClientAppRef.
  3. Ubah nama berkas yang dibuat secara default dari Module1.vb untuk ClientAppRef.vb.
  4. Menambahkan referensi ke System.runtime.Remoting namespace untuk proyek.
  5. Menambahkan referensi ke ServerClassRef.dll Majelis yang dibuat sebelumnya dalam dokumen ini.
  6. Menggunakan impor pernyataan di Remoting, Remoting.Channels, dan Remoting.channels.TCP namespaces sehingga Anda tidak akan diminta untuk memenuhi syarat Deklarasi di namespaces tersebut kemudian dalam kode Anda. Impor pernyataan harus digunakan sebelum untuk deklarasi lain:
    Imports System.Runtime.Remoting
    Imports System.Runtime.Remoting.Channels
    Imports System.Runtime.Remoting.Channels.TCP
    					
  7. Menyatakan variabel untuk menginisialisasi TcpChannel objek yang klien akan digunakan untuk menyambung ke server aplikasi. Anda harus menentukan port inisialisasi TcpChannel objek untuk mengaktifkan komunikasi dua arah. Hal ini diperlukan karena Anda marshaling objek oleh referensi dan server akan perlu untuk membuat callback untuk klien. Akan melakukannya dengan menggunakan port ini. Port harus berbeda dari salah satu yang akan digunakan untuk mengirim data. Daftar saluran saluran layanan dengan menggunakan RegisterChannel metode. Kedua, Anda harus menginisialisasi baru ForwardMe objek yang akan dilewatkan ke server jauh. Menambahkan kode Deklarasi dalam prosedur utama di Module1:
    Dim chan As TcpChannel = New TcpChannel(8086)
    ChannelServices.RegisterChannel(chan)
    Dim objForwardMe As New ServerClassRef.ForwardMe()
    					
  8. Sekarang Anda dapat menyatakan dan instantiate server jauh. Dalam kasus ini, Anda akan instantiate HelloServer objek dengan menggunakan GetObject metode Penggerak objek. Anda harus menentukan potongan-potongan berikut:
    1. Nama penuh jenis objek yang sedang terdaftar, dalam hal ini ServerClassRef.HelloServer, diikuti oleh nama Majelis ServerClassRef. Anda harus menentukan nama namespace serta classname di sini. Karena Anda tidak menentukan namespace dalam bagian sebelumnya, default akar namespace digunakan.
    2. Uniform resource identifier (URI) dari objek yang Anda butuhkan untuk mengaktifkan. URI harus mencakup protokol (tcp), nama komputer (localhost), port (8085), dan akhir dalam objek server (RemoteTestRef). Menggunakan URI "tcp: / / localhost:8085 / RemoteTestRef" untuk mengakses server jauh ServerClass.
      Dim objHelloServer As ServerClassRef.HelloServer
      
      objHelloServer = CType(Activator.GetObject( _
          Type.GetType("ServerClassRef.HelloServer, ServerClassRef"), _
          "tcp://localhost:8085/RemoteTestRef"), _
          ServerClassRef.HelloServer)
      If objHelloServer Is Nothing Then
          Console.WriteLine("Could not locate server")
      Else
          'See next step
      End If
      						
  9. Jika server objek instantiated berhasil, Anda dapat menghubungi server objek metode, melewati dalam baru dibuat objForwardMe objek. String diubah harus kembali sebagai akibatnya, sehingga Anda akan ingin untuk menampilkan yang:
    Dim objHelloServer As ServerClassRef.HelloServer
    
    objHelloServer = CType(Activator.GetObject( _
    	Type.GetType("ServerClassRef.HelloServer, ServerClassRef"), _
    	"tcp://localhost:8085/RemoteTestRef"), _
    	ServerClassRef.HelloServer)
    If objHelloServer Is Nothing Then
    	Console.WriteLine("Could not locate server")
    Else
    	objHelloServer.HelloMethod(objForwardMe)
    End If
    					
  10. Menjaga aplikasi klien yang berjalan dengan menggunakan ReadLine metode Konsol objek:
    Console.WriteLine("Hit <enter> to exit...")
    Console.ReadLine()
    					
  11. Membangun proyek Anda.
  12. Memastikan bahwa aplikasi server berjalan.
  13. Menjalankan proyek dan menguji klien-server komunikasi. Anda akan melihat output yang ditampilkan di jendela konsol klien. Anda adalah marshaling oleh referensi, sehingga callback yang dibuat untuk klien.

REFERENSI

.BERSIH Remoting Overview (.NET Framework Developer panduan)

Kelas TcpChannel (.NET Framework kelas perpustakaan)

.NET Framework sampel - Remoting
.aspx http://MSDN.Microsoft.com/en-us/library/kwdt6w2k (VS.80)
Microsoft.BERSIH Remoting: Ikhtisar teknis
http://msdn2.Microsoft.com/en-us/library/ms973857.aspx
Metode activator.GetObject (.NET Framework kelas perpustakaan)

Metode Type.GetType (.NET Framework kelas perpustakaan)

Metode RegisterWellKnownServiceType (.NET Framework kelas perpustakaan)

Properti

ID Artikel: 301112 - Kajian Terakhir: 24 Februari 2014 - Revisi: 2.0
Berlaku bagi:
  • Microsoft Visual Basic 2005
  • Microsoft Visual Basic .NET 2003 Standard Edition
  • Microsoft Visual Basic .NET 2002 Standard Edition
Kata kunci: 
kbnosurvey kbarchive kbvs2005applies kbvs2005swept kbhowtomaster kbmt KB301112 KbMtid
Penerjemahan Mesin
PENTING: Artikel ini diterjemahkan menggunakan perangkat lunak mesin penerjemah Microsoft dan bukan oleh seorang penerjemah. Microsoft menawarkan artikel yang diterjemahkan oleh seorang penerjemah maupun artikel yang diterjemahkan menggunakan mesin sehingga Anda akan memiliki akses ke seluruh artikel baru yang diterbitkan di Pangkalan Pengetahuan (Knowledge Base) dalam bahasa yang Anda gunakan. Namun, artikel yang diterjemahkan menggunakan mesin tidak selalu sempurna. Artikel tersebut mungkin memiliki kesalahan kosa kata, sintaksis, atau tata bahasa, hampir sama seperti orang asing yang berbicara dalam bahasa Anda. Microsoft tidak bertanggung jawab terhadap akurasi, kesalahan atau kerusakan yang disebabkan karena kesalahan penerjemahan konten atau penggunaannya oleh para pelanggan. Microsoft juga sering memperbarui perangkat lunak mesin penerjemah.
Klik disini untuk melihat versi Inggris dari artikel ini:301112

Berikan Masukan

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com