Ako maršal objekt na vzdialený server odkazom pomocou jazyka Visual Basic 2005 alebo Visual Basic.NET

Preklady článku Preklady článku
ID článku: 301112 - Zobraziť produkty, ktorých sa tento článok týka.
Tento článok bol archivovaný. Je publikovaný v aktuálnej podobe a už nebude aktualizovaný.
Pre Microsoft Visual C#.ČISTÁ verziu tohto článku, pozri 307600.
Rozbaliť všetko | Zbaliť všetko

Na tejto stránke

SUHRN

Tento článok ukazuje ako maršal objekt odkazom na vzdialený server. Keď objekt maršal odkazom, runtime vytvorí transparentný server proxy, takže server môžete uskutočňovať hovory späť na objekt na klientovi. Jediná vec, ktorá je odoslaná na server je proxy. Proxy marshals hovor chrbtom ku klientovi.

Tento článok je rozdelený do troch častí: objekt servera, serverová aplikácia a klientskej aplikácie. Rozbaľuje sa v nasledujúcich článkoch databázy Microsoft Knowledge Base:
300951 Ako vytvoriť vzdialený server pomocou jazyka Visual Basic.NET
300943 Ako vytvoriť klient prístup k vzdialenému serveru pomocou jazyka Visual Basic.NET

Požiadavky

Nasledujúci zoznam popisuje odporúčané hardvér, softvér, sieťovú infraštruktúru a balíky service pack, ktoré potrebujete:
  • Microsoft Windows Server 2003, Microsoft Windows 2000 Professional, Windows 2000 Server, Windows 2000 Advanced Server alebo Microsoft Windows NT 4.0 Server
  • Microsoft Visual Studio 2005 alebo Microsoft Visual Studio.NET
Tento článok predpokladá, že ste oboznámení s nasledujúce témy:
  • Program Visual Studio 2005 alebo Visual Studio.NET
  • Základné siete

Vytvoriť objekt vzdialený server zadan?m objektov

Prvý krok k vytvoreniu serverová aplikácia je vytvoriť objekt servera. Objektu server, ktorý je čo klientskej aplikácie instantiates a komunikuje s na serverovom počítači. Klientská aplikácia to cez proxy objekt vytvorený na klientovi. Objekt servera bude uložený v triedy knižnica (DLL) a je nazývaný HelloServer. Z toho istého projektu bude definovať triedy, že sa chystá prešli z klienta na server. Táto trieda sa bude nazývať ForwardMe. Pretože chcete triedy ForwardMe na marshaled odkazom, ForwardMe triedy musí dedia od MarshalByRefObject.
  1. Spustite program Visual Studio 2005 alebo Visual Studio.NET.
  2. Vytvorte novú žiadosť knižnica triedy a nazvite ho ServerClassRef.
  3. Premenujte súbor Class1.vb ako ServerClassRef.vb.
  4. Otvoriť ServerClassRef.vb a pridať dve triedy s názvom HelloServer a ForwardMe obe dedia od MarshalByRefObject. Trieda HelloServer bude Hlavná trieda používa klientskej aplikácie. ForwardMe triedy sa použije poslať dáta objektu z klienta na server. Váš ServerClassRef.vb kód súbor by mal vyzerať takto:
    Public Class HelloServer
    	Inherits MarshalByRefObject
    
    End Class
    Public Class ForwardMe
    	Inherits MarshalByRefObject
    
    End Class
    					
  5. Pridať verejné metódu HelloServer nazýva HelloMethod ktorý berie ForwardMe objekt. Budete používať túto metódu prejsť ForwardMe objekt na server. Táto metóda bude volať CallMe metóda daný objekt. Vaša HelloServer trieda by teraz vyzerať takto:
    Public Class HelloServer
        Inherits MarshalByRefObject
    
        Public Sub HelloMethod(ByRef obj As ForwardMe)
            Dim i As Integer
            obj.CallMe()
        End Sub
    End Class
    					
  6. Pridať verejné metóda ForwardMe triedy. Táto metóda sa dostanete názov procesu, kde tento kód je vykonávaný. Pretože ste len odosielanie výhonok proxy server a tvorby abstraknú klientovi (maršal odkazom), kód bude spúšťať v procese 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. Vybudovať projekt na vytvorenie ServerClassRef.dll zostava.
  8. Zatvorte a uloženie projektu.

Vytvoriť aplikáciu vzdialeného servera

Teraz, keď ste vytvorili objektu server, že váš klient bude komunikovať s, musíte zaregistrovať tento objekt s rámcom kompozície. Zapísanie nielen zahŕňa registráciu objekt, ale zahŕňa aj spustenie servera a ich počúvať na porte pre klientov pre pripojenie. Chcete urobiť, musíte typu projektu, ktorý bude výstupu spustiteľný súbor. Dôvodom zahrnuté objekt servera v samostatných projektu bolo tak, že by mohli ľahko referenčné objektu server z klienta. Ak ste zahrnuté v tomto projekte mohol nie odkazujte naň pretože odkazy môžete nastaviť iba súbory DLL.
  1. Spustite program Visual Studio 2005 alebo Visual Studio.NET.
  2. Jednoduchosti svoje, vytvorte novú žiadosť konzoly na spustenie vzdialeného servera a názov ServerObjectRef.
  3. Premenujte súbor vytvorený predvolený z Module1.vb na ServerObjectRef.vb.
  4. Pridať odkaz na System.Runtime.Remoting priestor názvov do projektu.
  5. Pridať odkaz na ServerClassRef.dll zostava, ktorý ste vytvorili v predchádzajúcej časti.
  6. Použite príkaz dovozov na Kompozície, Remoting.Channels, a Remoting.Channels.TCP priestory názvov, tak ste sa nevyžaduje kvalifikovať vyhlásenia v tie priestory názvov v kóde neskôr. Dovozy vyhlásenie použijú pred všetkými ostatnými deklaráciami:
    Imports System.Runtime.Remoting
    Imports System.Runtime.Remoting.Channels
    Imports System.Runtime.Remoting.Channels.TCP
    					
  7. Deklaráciu premennej inicializovať TcpChannel objekt, že bude počúvať pre klientov o určitých prístav, v tomto prípade prístavu pripojenie 8085. Registrovať kanál, ktorých klient použije komunikovať so službami kanál pomocou RegisterChannel metóda. Pridajte kód vyhlásenie v hlavnom konaní v Module1:
    Dim chan As TcpChannel = New TcpChannel(8085)
    ChannelServices.RegisterChannel(chan)
    					
  8. Registrovať ServerClassRef objekt s rámcom kompozície volaním RegisterWellKnownType metóda RemotingConfiguration objekt. Musíte zadať nasledovných:
    1. Úplné zadajte meno objektu je registrované, v tomto prípade ServerClassRef.HelloServer, nasleduje názov zostavy ServerClassRef. Musíte zadať názov v priestore názvov, ako aj názov triedy. Pretože neurčíte priestoru názvov v predchádzajúcej časti, použije sa predvolený priestor názvov root.
    2. Ďalej, poskytujú názov koncový bod, kde sa uverejní objektu. Klienti potrebujú vedieť tohto názvu na pripojenie k objektu. Použitie RemoteTestRef.
    3. Konečné parameter určuje režim objektu, ktorá môže byť SingleCall alebo Singleton. Tento príklad určí SingleCall. Objekt režim určuje životnosti objekt, keď je aktivovaná na serveri. V prípade predmetov SingleCall novú inštanciu triedy sa vytvorí po každom návštevníkovi, ktorý je vyrobený z klienta, aj v prípade rovnakého klienta vyžaduje rovnakú metódu viac ako raz. Ojedinelý objekty, na strane druhej, vytvárajú iba raz a všetkých klientov komunikovať s rovnaký objekt:
      RemotingConfiguration.RegisterWellKnownServiceType( _
       Type.GetType("ServerClassRef.HelloServer, ServerClassRef"), _
       "RemoteTestRef", _
       WellKnownObjectMode.SingleCall)
      						
  9. Udržať serverová aplikácia spustená pomocou ReadLine metóda Konzoly objekt:
    Console.WriteLine("Hit <enter> to exit...")
    Console.ReadLine()
    					
  10. Stavať váš projekt.
  11. Zatvorte a uloženie projektu.

Vytvorenie klienta na vzdialený server zadan?m objektov

  1. Spustite program Visual Studio 2005 alebo Visual Studio.NET.
  2. Vytvorte novú konzolovú aplikáciu a nazvite ho ClientAppRef.
  3. Premenujte súbor vytvorený predvolený z Module1.vb na ClientAppRef.vb.
  4. Pridať odkaz na System.Runtime.Remoting priestor názvov do projektu.
  5. Pridať odkaz na ServerClassRef.dll zostava, ktorá bola vytvorená predtým v tomto dokumente.
  6. Použite príkaz dovozov na Kompozície, Remoting.Channels, a Remoting.Channels.TCP priestory názvov, tak ste sa nevyžaduje kvalifikovať vyhlásenia v tie priestory názvov v kóde neskôr. Dovozy vyhlásenie použijú pred všetkými ostatnými deklaráciami:
    Imports System.Runtime.Remoting
    Imports System.Runtime.Remoting.Channels
    Imports System.Runtime.Remoting.Channels.TCP
    					
  7. Deklaráciu premennej inicializovať TcpChannel objekt, ktorý klient bude používať na pripojenie k serverovú aplikáciu. Musíte určiť port pri inicializácii TcpChannel objekt umožniť obojsmerná komunikácia. Je to potrebné, pretože objekt sa zaraďovania odkazom a server bude musieť vykonať abstraknú klientovi. Urobí tak prostredníctvom tohto portu. Musí byť iný ako ten, ktorý sa použije na odosielanie údajov. Registrovať kanál s útvarmi kanál pomocou RegisterChannel metóda. Po druhé, musí inicializovať nové ForwardMe objekt, že budú prenesené na vzdialený server. Pridajte kód vyhlásenie v hlavnom konaní v Module1:
    Dim chan As TcpChannel = New TcpChannel(8086)
    ChannelServices.RegisterChannel(chan)
    Dim objForwardMe As New ServerClassRef.ForwardMe()
    					
  8. Teraz môžete deklarovať a vytvoriť inštanciu vzdialeného servera. V tomto prípade bude vytvoriť inštanciu HelloServer objekt pomocou Funkcia GetObject metóda Aktivátor objekt. Musíte zadať nasledovných:
    1. Úplné zadajte meno objektu je registrované, v tomto prípade ServerClassRef.HelloServer, nasleduje názov zostavy ServerClassRef. Musíte zadať názov v priestore názvov, ako aj classname tu. Pretože neurčíte priestoru názvov v predchádzajúcej časti, použije sa predvolený priestor názvov root.
    2. Identifikátor (URI) objektu, ktorý musíte aktivovať. URI musí zahŕňať protocol (tcp), názov počítača (localhost), port (8085), a koncový bod objekt servera (RemoteTestRef). Použite URI "tcp: / / localhost:8085 / RemoteTestRef" prístup na vzdialený server 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. Ak úspešne je vytvorená inštancia objektu server, môžete zavolať metódu objektu server, prechádzajúcou v novo vytvorené objForwardMe objekt. Upravený reťazec by sa mali vrátiť ako dôsledok, tak budete chcieť zobraziť, že:
    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. Udržať klientska aplikácia spustená pomocou ReadLine metóda Konzoly objekt:
    Console.WriteLine("Hit <enter> to exit...")
    Console.ReadLine()
    					
  11. Stavať váš projekt.
  12. Skontrolujte, či je spustená serverová aplikácia.
  13. Spustenie projektu a test komunikácie klienta a servera. Mali by ste vidieť výstup zobrazené v okne konzoly klienta. Sú zaraďovania odkazom, takže abstraknú sú vyrobené klientovi.

ODKAZY

.ČISTÝ kompozície prehľad (.NET Framework Developer's Guide)

TcpChannel triedy (.ČISTÝ rámec triedy knižnica)

.NET Framework vzorky - kompozície
http://msdn.Microsoft.com/en-us/library/kwdt6w2k (VS.80) .aspx
Microsoft.ČISTÝ kompozície: Technical Overview
http://msdn2.Microsoft.com/en-us/library/ms973857.aspx
Activator.GetObject metóda (.ČISTÝ rámec triedy knižnica)

Type.GetType metóda (.ČISTÝ rámec triedy knižnica)

RegisterWellKnownServiceType metóda (.ČISTÝ rámec triedy knižnica)

Vlastnosti

ID článku: 301112 - Posledná kontrola: 26. februára 2014 - Revízia: 2.0
Informácie v tomto článku sa týkajú nasledujúcich produktov:
  • Microsoft Visual Basic 2005
  • Microsoft Visual Basic .NET 2003 Standard Edition
  • Microsoft Visual Basic .NET 2002 Standard Edition
Kľúčové slová: 
kbnosurvey kbarchive kbvs2005applies kbvs2005swept kbhowtomaster kbmt KB301112 KbMtsk
Strojovo preložené
DÔLEŽITÉ: Tento článok bol preložený pomocou softvéru na strojový preklad od spoločnosti Microsoft, nie prekladateľom. Spoločnosť Microsoft ponúka články preložené prekladateľmi aj strojovo preložené články, vďaka čomu máte možnosť prístupu ku všetkým článkom databázy Knowledge Base vo svojom jazyku. Strojovo preložený článok však nie je vždy perfektný. Môže obsahovať chyby týkajúce sa slovnej zásoby, syntaxe alebo gramatiky, podobne ako cudzinec môže robiť chyby, keď rozpráva vašim jazykom. Spoločnosť Microsoft nenesie zodpovednosť za akékoľvek nepresnosti, chyby alebo škody spôsobené akýmkoľvek nepresným prekladom obsahu alebo jeho použitím zo strany zákazníkov. Spoločnosť Microsoft softvér na strojový preklad pravidelne aktualizuje.
Pokiaľ chcete vidieť anglickú verziu článku, kliknite sem:301112

Odošlite odozvu

 

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