Jak pomocí programu Visual Basic 2005 nebo Visual Basic .NET zařazení objektu vzdálený server podle odkazu

Překlady článku Překlady článku
ID článku: 301112 - Produkty, které se vztahují k tomuto článku.
Tento článek byl archivován. Je nabízen v takovém stavu, v jakém je, a nebude již nadále aktualizován.
Microsoft Visual C# .NET verzi tohoto článku naleznete 307600.
Rozbalit všechny záložky | Minimalizovat všechny záložky

Na této stránce

Souhrn

Tento článek demonstruje zařazení objektu podle odkazu vzdáleného serveru. Při zařazování objektu podle odkazu modulu runtime vytvoří transparentní server proxy tak, aby server volání k objektu na klienta. Pouze věc, která je odeslána na server je server proxy. Server proxy marshals zadní strany volání klientovi.

Tento článek je rozdělen do tří částí: objekt serveru, aplikaci serveru a klientská aplikace. Rozšiřuje v následujících článcích znalostní báze Microsoft Knowledge Base:
300951Jak vytvořit vzdáleného serveru pomocí jazyka .NET
300943Jak vytvořit přístupu klienta ke vzdálenému serveru pomocí jazyka .NET

Požadavky

Následující seznam obsahuje doporučený hardware, software, síťovou infrastrukturu a požadované aktualizace Service Pack:
  • Microsoft Windows Server 2003, Microsoft Windows 2000 Professional, Windows 2000 Server Windows 2000 Advanced Server nebo Microsoft Windows NT 4.0 Server
  • Microsoft Visual Studio 2005 nebo Microsoft Visual Studio .NET
Tento článek předpokládá znalost následujících témat:
  • Visual Studio 2005 nebo Visual Studio .NET
  • Základní sítě

Vytvoření objektu vzdálený server předáním objekty

V prvním kroku vytváření aplikací serveru je vytvoření objektu serveru. Objekt serveru je co klientská aplikace vytvoří instanci a komunikuje se v počítači serveru. Klientská aplikace provádí tento prostřednictvím serveru proxy objekt vytvořený na klienta. Objekt serveru bude nacházet třídy knihovny (DLL) a se nazývá HelloServer. Ve stejném projektu bude také definovat třídy hodláte předán z klienta na server. Tato třída nazývá ForwardMe. Protože chcete třídě ForwardMe zařazen podle odkazu třídy ForwardMe musí dědit z MarshalByRefObject.
  1. Spusťte sadu Visual Studio 2005 nebo Visual Studio .NET.
  2. Vytvoření nové aplikace knihovny třídy a názvu ServerClassRef.
  3. Přejmenujte soubor Class1.vb jako ServerClassRef.vb.
  4. Otevřete ServerClassRef.vb a přidejte dvě třídy nazvané HelloServer a ForwardMe obě dědit z MarshalByRefObject. Třída HelloServer bude hlavní třídy aplikace klienta používá. Třída ForwardMe budou použity k odeslání dat objektu z klienta na server. Soubor kódem ServerClassRef.vb by měla vypadat následující:
    Public Class HelloServer
    	Inherits MarshalByRefObject
    
    End Class
    Public Class ForwardMe
    	Inherits MarshalByRefObject
    
    End Class
    					
  5. Přidat veřejnou metodu HelloServer nazývá HelloMethod trvá objekt ForwardMe. Tato metoda použije server předat objekt ForwardMe. Tato metoda bude volat metodu CallMe objektu. Třída HelloServer by měl nyní vypadat následující:
    Public Class HelloServer
        Inherits MarshalByRefObject
    
        Public Sub HelloMethod(ByRef obj As ForwardMe)
            Dim i As Integer
            obj.CallMe()
        End Sub
    End Class
    					
  6. Přidat veřejnou metodu třídy ForwardMe. Tato metoda bude získat název procesu, kde je spuštěn tento kód. Protože se zakázaným inzerováním proxy jsou právě odesílání na server a provádění zpětná volání klienta (zařazování podle odkazu), bude kód spustit v procesu klienta.
    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. Sestavení projektu vytvořit sestavení ServerClassRef.dll.
  8. Zavřete a uložte projekt.

Vytvoření aplikace vzdáleného serveru

Nyní, jste vytvořili objekt serveru bude váš klient komunikovat, je nutné zaregistrovat tento objekt s Remoting framework. Registrace pouze zahrnuje registrace objektu, ale také zahrnuje spuštění serveru a nutnosti jej naslouchání na portu klientům připojit. Chcete-li to provést, musíte typ projektu, bude výstup spustitelného souboru. Důvod zahrnuty objektu serveru v samostatné projektu bylo, že objekt serveru mohl snadno odkazovat z klienta. Pokud zahrnuty v tomto projektu je by jej odkaz, není protože odkazy lze nastavit pouze soubory DLL.
  1. Spusťte sadu Visual Studio 2005 nebo Visual Studio .NET.
  2. Sake jeho jednoduchost vytváření nové aplikace konzoly spuštění vzdáleného serveru a název ServerObjectRef.
  3. Přejmenujte soubor vytvořen ve výchozím nastavení z Module1.vb ServerObjectRef.vb.
  4. Do projektu přidat odkaz na obor názvů System.Runtime.Remoting.
  5. Přidejte odkaz na sestavení ServerClassRef.dll vytvořený v předchozí části.
  6. Použijte příkaz Imports na oborech názvů RemotingRemoting.Channels a Remoting.Channels.TCP tak není nutné ke kvalifikaci deklarace obory názvů později v kódu. Příkaz Imports musí být použit k před všemi deklaracemi:
    Imports System.Runtime.Remoting
    Imports System.Runtime.Remoting.Channels
    Imports System.Runtime.Remoting.Channels.TCP
    					
  7. Deklarovat proměnnou inicializovat TcpChannel objekt, který bude naslouchat klientům připojit se na určitých portu, v tomto případě portu 8085. Registrovat kanálu, který bude klient používat ke komunikaci s služby kanálu pomocí metody RegisterChannel. Přidat kód deklarace v hlavní proceduře v Module1:
    Dim chan As TcpChannel = New TcpChannel(8085)
    ChannelServices.RegisterChannel(chan)
    					
  8. Zaregistrujte objekt ServerClassRef Remoting framework voláním metody RegisterWellKnownType objekt RemotingConfiguration. Musíte zadat následující kusů:
    1. Název úplné typu objektu registrovaný v tomto případě ServerClassRef.HelloServer následuje název sestavení ServerClassRef. Musíte zadat název oboru názvů i název třídy. Protože v předchozí části nezadali oboru názvů, je použit výchozí kořenový obor názvů.
    2. Dále zadejte název koncového bodu, kde objekt publikována. Klienti potřebují znát tento název pro připojení k objektu. Použít RemoteTestRef.
    3. Konečné parametr určuje režim objekt, který může být SingleCall nebo singleton. Tento příklad určuje SingleCall. Objekt režimu určuje životnost objektu při aktivaci na serveru. Z objektů SingleCall nové instance třídy, bude vytvořen pro každé volání provedeno z klienta, i když stejný klient volá stejnou metodu více než jednou. Objekty singleton na druhou stranu jsou vytvořeny pouze jednou a všem klientům komunikovat s stejný objekt:
      RemotingConfiguration.RegisterWellKnownServiceType( _
       Type.GetType("ServerClassRef.HelloServer, ServerClassRef"), _
       "RemoteTestRef", _
       WellKnownObjectMode.SingleCall)
      						
  9. Zachovat serverové aplikace pomocí metody ReadLine objekt Konzola spuštěna:
    Console.WriteLine("Hit <enter> to exit...")
    Console.ReadLine()
    					
  10. Sestavení projektu.
  11. Zavřete a uložte projekt.

Vytvoření klienta ke vzdálenému serveru předáním objekty

  1. Spusťte sadu Visual Studio 2005 nebo Visual Studio .NET.
  2. Vytvoření nové aplikace konzoly a název ClientAppRef.
  3. Přejmenujte soubor vytvořen ve výchozím nastavení z Module1.vb ClientAppRef.vb.
  4. Do projektu přidat odkaz na obor názvů System.Runtime.Remoting.
  5. Přidejte odkaz na sestavení ServerClassRef.dll vytvořené dříve v tomto dokumentu.
  6. Použijte příkaz Imports na oborech názvů RemotingRemoting.Channels a Remoting.Channels.TCP tak není nutné ke kvalifikaci deklarace obory názvů později v kódu. Příkaz Imports musí být použit k před všemi deklaracemi:
    Imports System.Runtime.Remoting
    Imports System.Runtime.Remoting.Channels
    Imports System.Runtime.Remoting.Channels.TCP
    					
  7. Deklarovat proměnnou inicializovat TcpChannel objekt, který bude klient používat k připojení k serverové aplikaci. Při inicializaci objektu TcpChannel Povolení obousměrné komunikace musíte zadat port. To je nutné, protože objekt jsou zařazování podle odkazu a server bude nutné provést zpětná volání klienta. Pomocí tohoto portu jej bude to provést. Port by měl být jiný než ten, který bude použit k odeslání dat. Zaregistrujte kanálu služby kanálu pomocí metody RegisterChannel. Převezme musíte inicializovat nový objekt ForwardMe, které budou předány vzdálenému serveru. Přidat kód deklarace v hlavní proceduře v Module1:
    Dim chan As TcpChannel = New TcpChannel(8086)
    ChannelServices.RegisterChannel(chan)
    Dim objForwardMe As New ServerClassRef.ForwardMe()
    					
  8. Nyní deklarovat a vytvořit instanci vzdáleného serveru. V tomto případě bude instanci objektu HelloServer pomocí metody GetObjectAktivátor objektu. Musíte zadat následující kusů:
    1. Název úplné typu objektu registrovaný v tomto případě ServerClassRef.HelloServer následuje název sestavení ServerClassRef. Musíte zadat název oboru názvů, stejně jako NázevTřídy zde. Protože v předchozí části nezadali oboru názvů, je použit výchozí kořenový obor názvů.
    2. Jednotný identifikátor zdroje (URI) objektu, který je třeba aktivovat. URI musí zahrnovat protokol (tcp), název počítače (localhost), port (8085) a koncový bod objektu serveru (RemoteTestRef). Použít URI "tcp: / / localhost:8085 / RemoteTestRef" přístup k serveru vzdáleného 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. Pokud objekt serveru je úspěšně vytvořit instanci, můžete volat metodu objektu server předávání objForwardMe nově vytvořený objekt. Upravený řetězec by měl vrátit za následek tak bude chcete zobrazit, která:
    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. Zachovat klientské aplikace pomocí metody ReadLine objekt Konzola spuštěna:
    Console.WriteLine("Hit <enter> to exit...")
    Console.ReadLine()
    					
  11. Sestavení projektu.
  12. Přesvědčte se, zda je spuštěn aplikační server.
  13. Spustit projektu a test komunikace klient server. Měla by se zobrazit výstup zobrazí v okně konzoly klienta. Podle odkazu, jsou zařazování, takže zpětná volání jsou provedeny klienta.

Odkazy

Přehled vzdálené komunikace .NET (.NET Framework Developer's Guide)

Třída TcpChannel (knihovny tříd .NET Framework)

.NET framework vzorků - Remoting
http://msdn.microsoft.com/en-us/library/kwdt6w2k(VS.80).aspx
Microsoft .NET vzdálené komunikace: Technický přehled.
http://msdn2.microsoft.com/en-us/library/ms973857.aspx
Metoda Activator.GetObject (knihovny tříd .NET Framework)

Metoda Type.GetType (knihovny tříd .NET Framework)

Metoda RegisterWellKnownServiceType (knihovny tříd .NET Framework)

Vlastnosti

ID článku: 301112 - Poslední aktualizace: 28. února 2014 - Revize: 5.6
Informace v tomto článku jsou určeny pro produkt:
  • Microsoft Visual Basic 2005
  • Microsoft Visual Basic .NET 2003 Standard Edition
  • Microsoft Visual Basic .NET 2002 Standard Edition
Klíčová slova: 
kbnosurvey kbarchive kbmt kbvs2005applies kbvs2005swept kbhowtomaster KB301112 KbMtcs
Strojově přeložený článek
Důležité: Tento článek byl přeložen pomocí software společnosti Microsoft na strojový překlad, ne profesionálním překladatelem. Společnost Microsoft nabízí jak články přeložené překladatelem, tak články přeložené pomocí software na strojový překlad, takže všechny články ve Znalostní databázi (Knowledge Base) jsou dostupné v češtině. Překlad pomocí software na strojový překlad ale není bohužel vždy dokonalý. Obsahuje chyby ve skloňování slov, skladbě vět, nebo gramatice, podobně jako když cizinci dělají chyby při mluvení v češtině. Společnost Microsoft není právně zodpovědná za nepřesnosti, chyby nebo škody vzniklé chybami v překladu, nebo při použití nepřesně přeložených instrukcí v článku zákazníkem. Společnost Microsoft aktualizuje software na strojový překlad, aby byl počet chyb omezen na minimum.
Projděte si také anglickou verzi článku:301112

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