Bir uzak sunucuda bir nesneye, Visual Basic 2005 veya Visual Basic .NET kullanarak başvuruya göre sıralama hakkında

ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.

301112
Bu makale arşivlenmiştir. "Olduğu gibi" sunulmaktadır ve bundan sonra güncelleştirilmeyecektir.
Bu makalenin Microsoft Visual C# .NET sürümü için bkz: 307600.
Özet
Bu makalede, bir nesne başvurusu için bir uzak sunucu tarafından sıralamakta gösterilmiştir. Başvuruyla bir nesnesi çağrılamadı, böylece sunucu nesnesine geri istemcide çağrılarınızı çalýþma zamaný saydam proxy oluşturur. Proxy sunucuya gönderilen tek şey var. Proxy, istemciye çağrı arka sýralar.

Bu makalede, üç bölüme ayrılır: sunucu nesnesini ve sunucu uygulaması istemci uygulamasını. Bu aşağıdaki Microsoft Knowledge Base makalelerinde genişletir:
300951Visual Basic. NET'i kullanarak bir uzak sunucu oluşturma hakkında
300943Uzak sunucu istemci erişimi, Visual Basic. NET'i kullanarak oluşturma

Gereksinimler

Aşağıdaki listede, gereksinim duyacağınız donanım, yazılım, ağ altyapısı ve hizmet paketleri önerilmektedir:
  • Microsoft Windows Server 2003, Microsoft Windows 2000 Professional, Windows 2000 Server, Windows 2000 Advanced Server, veya Microsoft Windows NT 4.0 Server
  • Microsoft Visual Studio 2005 veya Microsoft Visual Studio .NET
Bu makalede, aşağıdaki konularda bilgi sahibi olduğunuz varsayılmaktadır:
  • Visual Studio 2005 veya Visual Studio. NET'i
  • Temel ağ bağlantısı

Nesneleri ileterek, bir uzak sunucu nesnesi oluşturma

Sunucu uygulaması oluşturmanın ilk adımı, sunucu nesnesi oluşturmaktır. Sunucu ne istemci uygulamasının bir örneğini başlatır ve sunucu bilgisayarda iletişim kurar nesnedir. Istemci uygulaması ile istemci üzerinde oluşturulan bir proxy nesnesi yapar. Sunucu nesnenize sınıf kitaplığı (DLL) yer alacağı ve HelloServer olarak adlandırılır. Aynı projede, istemciden sunucuya geçirilmesini sınıfı tanımlayacaktır. Bu sınıf ForwardMe çaðrýlýr. Başvuruyla konmasını ForwardMe sınıfı istediğiniz çünkü ForwardMe sınıfı MarshalByRefObject devralınmalıdır.
  1. Visual Studio 2005 veya Visual Studio .NET'i başlatın.
  2. Yeni bir sınıf kitaplığı uygulama ve ServerClassRef olarak adlandırın.
  3. Dosya Class1.vb ServerClassRef.vb yeniden adlandırın.
  4. ServerClassRef.vb açın ve HelloServer ve her ikisini birden MarshalByRefObject devralmak ForwardMe adlı iki sınıf ekleme. HelloServer sınıfın ana sınıfı bir istemci uygulama tarafından kullanılan olacaktır. ForwardMe sınıfı, nesne verisi, istemciden sunucuya göndermek için kullanılır. Dosyanızı ServerClassRef.vb kodu aşağıdaki gibi görünmelidir:
    Public Class HelloServer	Inherits MarshalByRefObjectEnd ClassPublic Class ForwardMe	Inherits MarshalByRefObjectEnd Class					
  5. Genel bir yöntem için bir ForwardMe nesnesi götüren HelloMethod adlı HelloServer ekleyin. Bu yöntem, sunucuya bir ForwardMe nesnesi geçirmek için kullanır. Bu yöntemi, nesne CallMe yöntemini çağırır. HelloServer sınıfınızın şimdi aşağıdaki gibi görünmelidir:
    Public Class HelloServer    Inherits MarshalByRefObject    Public Sub HelloMethod(ByRef obj As ForwardMe)        Dim i As Integer        obj.CallMe()    End SubEnd Class					
  6. Bir ortak yöntem ForwardMe sınıfına ekleyin. Bu yöntem, bu kod yürütülmekte olan işlem adını alır. Çünkü bir proxy stub yalnızca sunucuya gönderdiğinizi ve istemci (başvuruya göre sıralama) geri aramalar yapma, istemcinin işleminde kodu yürütülür.
    Public Class ForwardMe    Inherits MarshalByRefObject    Public Function CallMe() As Object        Console.WriteLine("CallMe was executed in: " & _        Process.GetCurrentProcess.ProcessName.ToString)    End FunctionEnd Class					
  7. Proje ServerClassRef.dll derleme oluşturun.
  8. Kapatın ve projeyi kaydedin.

Bir uzak sunucu uygulaması oluştur

Artık istemciniz iletişim kuracağı sunucu nesnesini oluşturdunuz, bu nesne Remoting çerçevesiyle kaydettirmeniz gerekir. Kaydediliyor yalnızca nesnenin kaydediliyor içerir ancak Ayrıca, sunucuda başlayan ve bu istemciler için bir bağlantı noktasını dinlemesi içerir. Bunu yapmak için <a0></a0>, yürütülebilir bir dosya çıkış bir proje türü gerekir. Böylece istemciden gelen sunucu nesnesinin kolayca baþvurabilirsiniz sunucu nesnesi ayrı bir projede yer neden oldu. Bu projede dahil, çünkü bu başvuru yalnızca DLL dosyaları için ayarlanabilir, bunu baþvurabilirsiniz değil.
  1. Visual Studio 2005 veya Visual Studio .NET'i başlatın.
  2. Basitlik'ın dosyasında için uzak sunucuyu başlatmak ve bunu ServerObjectRef adı için yeni bir konsol uygulaması oluşturun.
  3. Module1.vb ServerObjectRef.vb için varsayılan olarak oluşturulan dosyayı yeniden adlandırın.
  4. Başvuru System.Runtime.Remoting ad alanını projeye ekleyin.
  5. Önceki bölümde oluşturduğunuz ServerClassRef.dll derlemesine ekleyin.
  6. Bu nedenle, bu ad daha sonra kodunuzda bildirimlerinde nitelemek için istenmeyecek ımports</a0> deyimini Uzak ve Remoting.ChannelsRemoting.Channels.TCP ad kullanın. ımports</a0> deyimini, tüm diğer bildirimlerden önce kullanılmalıdır:
    Imports System.Runtime.RemotingImports System.Runtime.Remoting.ChannelsImports System.Runtime.Remoting.Channels.TCP					
  7. Bir değişken, istemcilerinin bir belirli bağlantı noktasında, bu durumda, bağlantı noktası 8085 bağlanmak için dinleyecek bir TcpChannel nesnesi başlatılamıyor bildirin. Istemci RegisterChannel yöntemini kullanarak kanalı hizmetlerle iletişim kurmak için kullanacağınız kanal kaydedin. Module1 ana yordamda bildirim kodu ekleyin:
    Dim chan As TcpChannel = New TcpChannel(8085)ChannelServices.RegisterChannel(chan)					
  8. ServerClassRef nesne, uzak çerçevesiyle RemotingConfiguration nesnesinin RegisterWellKnownType yöntemini çaðýrarak kaydedin. Şu parça belirtmeniz gerekir:
    1. Kaydedilmekte nesnenin tam tür adı, bu durumda, derleme adı, ServerClassRefServerClassRef.HelloServer, sonra. Her iki ad alanının ad yaný sýra sınıf adı belirtmeniz gerekir. Varsayılan kök ad boşluğu, önceki bölümde bir ad belirtmek için kullanılır.
    2. Sonra nesnenin yayımlanmasına son noktanın adı, sağlar. Istemciler, nesneye bağlanmak için bu adını bilmeniz gerekir. RemoteTestRef kullanın.
    3. Son parametre SingleCall ya da Singleton nesne modunu belirtir. Bu örnek, SingleCall belirtir. Nesne modu, sunucu üzerinde etkinleştirildiğinde nesnesinin yaşam süresini belirtir. Bile, aynı istemciden aynı yöntemi birden çok kez çağırır SingleCall nesnelerin bir istemciden yapılan her arama için yeni bir sınıf örneği oluşturulur. Aynı cinsten tek adet nesneleri, diğer yandan, yalnızca bir kez oluşturulur ve tüm istemciler aynı nesne ile iletişim kurma:
      RemotingConfiguration.RegisterWellKnownServiceType( _ Type.GetType("ServerClassRef.HelloServer, ServerClassRef"), _ "RemoteTestRef", _ WellKnownObjectMode.SingleCall)						
  9. Sunucu uygulaması <a0>Konsol</a0> nesnesinin ReadLine yöntemiyle çalışan tutmak:
    Console.WriteLine("Hit <enter> to exit...")Console.ReadLine()					
  10. Projenizi oluşturun.
  11. Kapatın ve projeyi kaydedin.

Bir uzak sunucuda bir istemciye nesneleri ileterek oluşturun.

  1. Visual Studio 2005 veya Visual Studio .NET'i başlatın.
  2. Yeni bir konsol uygulaması oluşturun ve bu ClientAppRef adlandırın.
  3. Module1.vb ClientAppRef.vb için varsayılan olarak oluşturulan dosyayı yeniden adlandırın.
  4. Başvuru System.Runtime.Remoting ad alanını projeye ekleyin.
  5. Bu belgede daha önce oluşturulan ServerClassRef.dll derlemesine ekleyin.
  6. Bu nedenle, bu ad daha sonra kodunuzda bildirimlerinde nitelemek için istenmeyecek ımports</a0> deyimini Uzak ve Remoting.ChannelsRemoting.Channels.TCP ad kullanın. ımports</a0> deyimini, tüm diğer bildirimlerden önce kullanılmalıdır:
    Imports System.Runtime.RemotingImports System.Runtime.Remoting.ChannelsImports System.Runtime.Remoting.Channels.TCP					
  7. Istemci, sunucu uygulamasına bağlanmak için kullanacağı bir TcpChannel nesneyi başlatmak için bir değişken bildirin. Çift yönlü iletişimi etkinleştirmek için TcpChannel nesne başlatırken, bağlantı noktası belirtmelisiniz. Nesneyi başvuruya göre sıralama ve sunucu, istemciye geri aramalar yapmak gerekir çünkü bu işlem gereklidir. Bu bağlantı noktasını kullanarak bunu yerine getirecektir. Bağlantı noktası veri göndermek için kullanılacak olandan farklı olmalıdır. Kanal, Kanal Hizmetleri ile RegisterChannel yöntemini kullanarak kaydedin. Ikinci olarak, uzak sunucuya geçirilen yeni ForwardMe nesnesi başlatmalısınız. Module1 ana yordamda bildirim kodu ekleyin:
    Dim chan As TcpChannel = New TcpChannel(8086)ChannelServices.RegisterChannel(chan)Dim objForwardMe As New ServerClassRef.ForwardMe()					
  8. Şimdi bildirmek ve uzak sunucunun başlatılamadı. Bu durumda, Activator nesnesi GetObject yöntemi kullanarak HelloServer nesnesi örneğini. Şu parça belirtmeniz gerekir:
    1. Kaydedilmekte nesnenin tam tür adı, bu durumda, derleme adı ServerClassRefServerClassRef.HelloServer, sonra. Her iki adı classname burada yanı sıra ad belirtmeniz gerekir. Varsayılan kök ad boşluğu, önceki bölümde bir ad belirtmek için kullanılır.
    2. Etkinleştirmek için gereken nesnenin Tekdüzen Kaynak Tanımlayıcısı (URI). URI iletişim kuralı (tcp), <a2>bilgisayar adı (localhost)</a2>, <a4>bağlantı noktası bulunmalıdır (8085) ve son noktana sunucu nesnesinin (RemoteTestRef). URı'ı kullanın "tcp: / / localhost:8085 / RemoteTestRef" ServerClass uzak sunucuya erişmek için.
      Dim objHelloServer As ServerClassRef.HelloServerobjHelloServer = 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 stepEnd If						
  9. Sunucu nesnesi başarıyla örneği, yeni oluşturulan objForwardMe nesnesinde geçirmeden sunucu nesnesinin yöntemini çağırabilirsiniz. Değiştirilmiş dize; Bu nedenle, görüntülemek istediğiniz sonuç olarak dönmelidir:
    Dim objHelloServer As ServerClassRef.HelloServerobjHelloServer = 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. Istemci uygulaması <a0>Konsol</a0> nesnesinin ReadLine yöntemiyle çalışan tutmak:
    Console.WriteLine("Hit <enter> to exit...")Console.ReadLine()					
  11. Projenizi oluşturun.
  12. Sunucu uygulaması çalıştığından emin olun.
  13. Projeyi çalıştırın ve istemci-sunucu iletişimi sınayın. Istemcinin konsol penceresinde görüntülenen bir çıktı görmelisiniz. Bu nedenle, istemciye geri aramaları yapılan başvuruyla, sıralama.
Referanslar
.NET remoting genel bakış (.NET Framework Geliştirici Kılavuzu)

TcpChannel sınıfı (.NET Framework sınıf kitaplığı)

.NET framework örnekleri - uzakMıcrosoft .NET remoting: BIR teknik genel bakış Activator.GetObject yöntemi (.NET Framework sınıf kitaplığı)

Type.GetType yöntemi (.NET Framework sınıf kitaplığı)

RegisterWellKnownServiceType yöntemi (.NET Framework sınıf kitaplığı)

Uyarı: Bu makalenin çevirisi otomatik olarak yapılmıştır

Özellikler

Makale No: 301112 - Son İnceleme: 02/24/2014 12:49:17 - Düzeltme: 5.6

  • Microsoft Visual Basic 2005
  • Microsoft Visual Basic .NET 2003 Standard Edition
  • Microsoft Visual Basic .NET 2002 Standard Edition
  • kbnosurvey kbarchive kbmt kbvs2005applies kbvs2005swept kbhowtomaster KB301112 KbMttr
Geri bildirim