Použití sdružování objektů podnikové služby v jazyce Visual Basic .NET

Překlady článku Překlady článku
ID článku: 317336 - Produkty, které se vztahují k tomuto článku.
Rozbalit všechny záložky | Minimalizovat všechny záložky

Na této stránce

Souhrn

Tento článek ukazuje, jak vytvořit aplikace konzoly, která používá, sdružování objektů v jazyce Visual Basic .NET. Můžete zapnout a vypnout sdružování objektů zobrazíte sdružování objektů vliv aplikaci, která vytvoří mnoho objektů nákladné.

Požadavky

Následující seznam obsahuje doporučený hardware, software, síťovou infrastrukturu a aktualizace service Pack, které potřebujete:
  • Rozhraní Microsoft .NET framework
  • Systém Microsoft Windows 2000 Professional, Microsoft Windows 2000 Server, Microsoft Windows XP Professional nebo Microsoft Windows XP Server
Tento článek předpokládá, že je obeznámen s následující témata vám:
  • Součást objektový model (COM) a organizace služby
  • Objekt sdružování
  • Pomocí atributů rozšířit metadat

Vytvoření aplikace konzoly v jazyce Visual Basic .NET

  1. Spusťte aplikaci Microsoft Visual Studio .NET.
  2. V nabídce soubor přejděte na příkaz Nový a potom klepněte na tlačítko Nový projekt.
  3. V dialogovém okně Nový projektProjekty jazyka Visual Basic v části Typy projektů, klepnutí na příkaz Aplikace konzoly v části šablony.
  4. Do textového pole název zadejte PoolingDemo a potom klepněte na tlačítko OK.
  5. Přesvědčte se, zda je zobrazený okno Průzkumník řešení. Pokud aplikaci Solution Explorer není zobrazen, stiskněte kombinaci kláves CTRL + ALT + L.
  6. Následujícím postupem přidáte odkaz na komponenty modelu COM, která budete používat:
    1. V aplikaci Solution Explorer klepněte pravým tlačítkem myši na položku odkazy a klepněte na tlačítko Přidat odkaz.
    2. Na kartě .NET klepněte na položku služby System.EnterpriseServices v seznamu součástí, které jsou k dispozici a klepněte na tlačítko Vybrat. Povšimněte si, že služby System.EnterpriseServices se v seznamu Vybrané součásti.
    3. Klepněte na tlačítko OK. Povšimněte si, že služby System.EnterpriseServices se v uzlu odkazy konzolové aplikace.

Přidat sdružování a Non sdružování třídy v projektu

  1. Klepněte pravým tlačítkem myši na PoolingDemo v aplikaci Solution Explorer, přejděte na příkaz Přidat a klepněte na příkaz Přidat novou položku.
  2. V dialogovém okně Přidat novou položku klepněte na tlačítko třídu podle šablony a klepněte na příkaz Otevřít. Class1.VB je vytvořena ve výchozím nastavení a obsahuje sdružování i sdružování třídy.
  3. Přístup k objektu, atributy a členy sdružování, přidejte následující kód na začátek Class1.vb:
    Imports System.EnterpriseServices
    					
  4. Prohlášení Class1 výchozí nahraďte následující kód:
    Public Class Poolable
        Sub New()
            Threading.Thread.Sleep(500)
        End Sub
        Public Sub DoSomething()
            ' Add method contents here.
        End Sub
    End Class
    						
    oznámení, že konstruktoru obsahuje kód, který simuluje nákladné operace.
  5. Objekt musí dědit třídy ServicedComponent přijít pod kontrolou služby Component Services za běhu. Přidejte následující kód po deklaraci třídy:
    Inherits ServicedComponent
    					
  6. Chcete-li, aby tato třída sdružování, postupujte takto:
    1. Atribut ObjectPoolingAttribute, který je uložen s metadaty souboru třídy, příznaky objektu pro sdružování v době běhu. Přidejte následující kód nad prohlášení třídy můžete přidat atribut ObjectPoolingAttribute do třídy:
      <ObjectPooling(MinPoolSize:=0, MaxPoolSize:=1), JustInTimeActivation(True)>  _  
      							
      Poznámka: Ačkoli k povolit sdružování není vyžadována atribut JustInTimeActivation, můžete chtít použít ve většině případů tento atribut. Protože je nákladné, chcete-li vytvořit a zrušit součásti, je může výrazně zvýšit výkon tím, že více klientů pro opakované použití instancí komponent.
    2. ServicedComponent metoda CanBePooled vrátí hodnotu FALSE ve výchozím nastavení. Chcete-li potlačit metodu CanBePooled tak, aby tato metoda vrátí hodnotu true, přidejte následující kód:
      Protected Overrides Function CanBePooled() As Boolean
              Return True
          End Function
      						
  7. Přidejte následující kód-sdružování třídy:
    Public Class NonPoolable
        Inherits ServicedComponent
        Sub New()
            ' Simulate an expensive operation.
            Threading.Thread.Sleep(500)
        End Sub
        Public Sub DoSomething()
            ' Add method contents here.
        End Sub
    End Class
    					

Upravit Module1.vb vytvoření více instancí těchto tříd

  1. V okně Editor kódu klepněte na kartu Module1.vb.
  2. V horní části souboru, přidejte tento příkaz importuje pro obor názvů EnterpriseServices k povolení přístupu k metodě DisposeObject:
    Imports System.EnterpriseServices
    						
    DisposeOjbect metoda vrátí objektů do objektu fondu, umožňující jim být opětovně použity.
  3. Přidat následující postup Sub Main:
    Sub Main()
            Dim StartTime As DateTime = DateTime.Now
            Dim i As Int32
    
            Const Iterations As Int16 = 50
            For i = 1 To Iterations
                Dim D As New NonPoolable()
    
                D.DoSomething()
                ServicedComponent.DisposeObject(D)
            Next
    
            Dim EndTime As DateTime = DateTime.Now
            Dim Elapsed As TimeSpan = EndTime.Subtract(StartTime)
            Dim OperationsPerSecond = Iterations / Elapsed.TotalSeconds
    
            Console.WriteLine("Object Creations / Second = " & OperationsPerSecond)
            System.Console.ReadLine()
    End Sub
    						
    tento kód nastaví smyčky, který vytvoří instanci třídy Poolable nebo NonPoolable během každého jeho 50 iterací. Kód záznamy zahájení a ukončení časy pro smyčky a zapíše počet objektů, které jsou vytvořeny za sekundu do konzoly.

Generovat silný název pro shromáždění

Je nutné generovat silný název sestavení, které tento projekt bude generovat. Bez silného názvu nelze použít služby modelu COM + k registraci tohoto sestavení.

Vygenerovat tento šifrovací klíč, použijte nástroj silný název (Sn.exe), který je umístěn ve složce Koš, kde je instalována .NET Framework Software Development Kit (SDK). Použijte následující syntaxi příkazového řádku spusťte nástroj Sn.exe:
-k sn drive letter \ DirectoryToPlaceKey \ KeyName .snk
  1. Otevřete příkazový řádek programu Visual Studio .NET, klepněte na tlačítko Start, přejděte na příkaz programy, přejděte v Aplikaci Microsoft Visual Studio .NET přejděte v Aplikaci Visual Studio .NET nástroje a klepněte na položku Visual Studio .NET příkazový řádek.
  2. Na příkazovém řádku zadejte následující příkaz:
    -k sn drive letter: \ Project Root Folder \poolkey.snk
  3. Stisknutím klávesy ENTER k vygenerování dvojice klíčů. Všimněte si, zobrazí v příkazovém okně následující zpráva:
    Dvojice klíčů, zápisu...
  4. Chcete-li tento klíč přidružit sestavení projektu, poklepejte na AssemblyInfo.vb v aplikaci Solution Explorer. Ve výchozím nastavení aplikace Visual Studio .NET zahrnuje atributy sestavení v tomto souboru při vytváření projektu. Přidejte následující kód do tohoto seznamu atributů sestavení:
    <Assembly: AssemblyKeyFile("..\..\poolkey.snk")>
    					

Úplný výpis kódu

Class1.VB

Imports System.EnterpriseServices

<ObjectPooling(MinPoolSize:=0, MaxPoolSize:=1), JustInTimeActivation(True)>  _
Public Class Poolable
    Inherits ServicedComponent
    Sub New()
        ' Simulate an expensive operation.
        Threading.Thread.Sleep(500)
    End Sub

    Public Sub DoSomething()
        ' Add method contents here.
    End Sub

    Protected Overrides Function CanBePooled() As Boolean
        Return True
    End Function
End Class

Public Class NonPoolable
    Inherits ServicedComponent
    Sub New()
        ' Simulate an expensive operation.
        Threading.Thread.Sleep(500)
    End Sub

    Public Sub DoSomething()
        ' Add method contents here.
    End Sub
End Class
				

Module1.VB

Imports System.EnterpriseServices

Module Module1

    Sub Main()
        Dim StartTime As DateTime = DateTime.Now
        Dim i As Int32

        Const Iterations As Int16 = 50
        For i = 1 To Iterations
            'Dim D As New Poolable()
            Dim D As New NonPoolable()

            D.DoSomething()
            ' To return the object to the object pool, use DisposeObject.
            ' This allows the object to be reused from the pool. If you do not call
            ' DisposeObject, the garbage collector does not collect this object, 
            ' and the object is not reused from the object pool.
            ServicedComponent.DisposeObject(D)
        Next

        Dim EndTime As DateTime = DateTime.Now
        Dim Elapsed As TimeSpan = EndTime.Subtract(StartTime)
        Dim OperationsPerSecond = Iterations / Elapsed.TotalSeconds

        Console.WriteLine("Object Creations / Second = " & OperationsPerSecond)
        ' Pause until the user presses ENTER.
        System.Console.ReadLine()
    End Sub

End Module
				

AssemblyInfo.vb

Imports System.Reflection
Imports System.Runtime.InteropServices

' The following set of attributes control general information about an assembly. 
' Change these attribute values to modify the information that is associated with an assembly.

' Review the values of the assembly attributes.

<Assembly: AssemblyTitle("")> 
<Assembly: AssemblyDescription("")> 
<Assembly: AssemblyCompany("")> 
<Assembly: AssemblyProduct("")> 
<Assembly: AssemblyCopyright("")> 
<Assembly: AssemblyTrademark("")> 
<Assembly: CLSCompliant(True)> 
<Assembly: AssemblyKeyFile("..\..\poolkey.snk")> 

'The following GUID is for the ID of the TypeLib if you expose this project to COM.
<Assembly: Guid("30324ED6-329C-4B12-BDA2-8E817F1E2079")> 

' Version information for an assembly consists of the following four values:
'
'      Major Version
'      Minor Version 
'      Build Number
'      Revision
'
' You can specify all of these values, or you can use the asterisk (*) for
' the Build Number and the Revision values.

<Assembly: AssemblyVersion("1.0.*")>
				

Ověřte, zda funguje IT

  1. Stisknutím klávesy F5 ke spuštění aplikace v režimu ladění. Všimněte si, že tím se vytvoří instance třídy NonPoolable.
  2. Počkejte přibližně 25 sekund. Všimněte si, že se zobrazí následující zpráva:
    Vytvoření objektu / druhý = 1.73542243764044
    Poznámka: přesný počet výtvory můžete za sekundu se mohou lišit.
  3. Stisknutím klávesy ENTER ukončete konzolu aplikaci a vraťte se aplikace Visual Studio .NET.
  4. Změnit k vytvoření instance třídy Poolable Module1.vb. První řádek v proceduře Sub Main změnit takto:
    Dim D As New Poolable()
    					
  5. Spusťte aplikaci znovu stisknutím klávesy F5.
  6. Počkejte několik sekund. Všimněte si, že po zprávy (nebo podobný) se zobrazí:
    Vytvoření objektu / druhý = 29.1977213631085
    Poznámka: významnému zlepšení výkonu při použití objektu sdružování.
  7. Stisknutím klávesy ENTER ukončete konzolu aplikaci a vraťte se aplikace Visual Studio .NET.

Poradce při potížích

Nezapomeňte přepsat CanBePooled. Pokud tento krok vynecháte, nelze fondu objektu.

ODKAZY

Další informace o implementaci a nasazení modelu COM + nakonfigurovat tříd pomocí společný jazyk za běhu, jak přístup kontext objektu a volání kontextu a jak spravovat odkazy relativní kontext objektu naleznete na následující web společnosti Microsoft:
COM + Integration: Použití služby .NET Enterprise vám může pomoci sestavení distribuovaných aplikací
http://msdn.microsoft.com/en-us/library/bb985615.aspx

Vlastnosti

ID článku: 317336 - Poslední aktualizace: 15. července 2004 - Revize: 4.4
Informace v tomto článku jsou určeny pro produkt:
  • Microsoft .NET Framework Class Libraries 1.0
  • Microsoft Enterprise Services (included with the .NET Framework) 1.0
  • Microsoft Visual Basic .NET 2002 Standard Edition
Klíčová slova: 
kbmt kbhowtomaster KB317336 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:317336

Dejte nám zpětnou vazbu

 

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