Como utilizar o agrupamento de objectos de serviços de empresa no Visual Basic .NET

IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática… erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.

317336
Este artigo foi arquivado. Este artigo é oferecido "tal como está" e deixará de ser actualizado.
Sumário
Este artigo demonstra como criar uma aplicação de consola que utiliza o agrupamento de objectos no Visual Basic. NET. Pode activar e desactivar o agrupamento de objectos para ver como o agrupamento de objectos afecta uma aplicação que cria muitos objectos dispendiosos.

back to the top

Requisitos

A lista seguinte descreve o hardware recomendado, software, infra-estrutura de rede e service packs que necessita:
  • Microsoft .NET framework
  • Microsoft Windows 2000 Professional, Microsoft Windows 2000 Server, Microsoft Windows XP Professional ou Microsoft Windows XP Server
Este artigo pressupõe que está familiarizado com os seguintes tópicos:
  • Component Object Model (COM) e Enterprise Services
  • Agrupamento de objectos
  • Utilizar atributos para expandir metadados
back to the top

Criar uma aplicação de consola no Visual Basic .NET

  1. Inicie o Microsoft Visual Studio NET..
  2. No menu ficheiro , aponte para Novo e, em seguida, clique em Novo projecto .
  3. Na caixa de diálogo Novo projecto , clique em Projectos do Visual Basic em Project Types e, em seguida, clique em Aplicação de consola em modelos .
  4. Na caixa de texto nome , escreva PoolingDemo e, em seguida, clique em OK .
  5. Certifique-se que a janela Solution Explorer está visível. Se Solution Explorer não estiver visível, prima a combinação de teclas CTRL + ALT + L.
  6. Siga estes passos para adicionar uma referência ao componente COM que vai utilizar:
    1. No Solution Explorer, clique com o botão direito do rato em References e, em seguida, clique em Add Reference .
    2. No separador .NET , clique em System.EnterpriseServices na lista de componentes disponíveis e, em seguida, clique em Seleccionar . Repare que System.EnterpriseServices aparece na lista Componentes seleccionados .
    3. Clique em OK . Repare que System.EnterpriseServices aparece sob o nó de referências a aplicação da consola.
back to the top

Adicionar um Poolable e uma classe não Poolable o projecto

  1. Clique com o botão direito do rato PoolingDemo no Solution Explorer, aponte para Adicionar e, em seguida, clique em Adicionar novo item .
  2. Na caixa de diálogo Adicionar novo item , clique em classe em modelos e, em seguida, clique em Abrir . Class1.VB é criado por predefinição e contém as classes poolable e não poolable.
  3. Para aceder ao objecto de agrupamento de atributos e membros, adicione o seguinte código para a parte superior da Class1.vb:
    Imports System.EnterpriseServices					
  4. Substituir a declaração de Aula1 predefinido o seguinte código:
    Public Class Poolable    Sub New()        Threading.Thread.Sleep(500)    End Sub    Public Sub DoSomething()        ' Add method contents here.    End SubEnd Class						
    aviso de que o construtor contém código que simula uma operação dispendiosa.
  5. O objecto tem de herdar a classe de ServicedComponent ficar sob o controlo de serviços de componentes do tempo de execução. Adicione o seguinte código depois de declaração da classe:
    Inherits ServicedComponent					
  6. Para tornar esta classe poolable, siga estes passos:
    1. O atributo ObjectPoolingAttribute , que é guardado com os metadados do ficheiro de classe, assinala o objecto para o agrupamento em tempo de execução. Adicione o seguinte código acima a declaração de classe para adicionar o atributo ObjectPoolingAttribute a classe:
      <ObjectPooling(MinPoolSize:=0, MaxPoolSize:=1), JustInTimeActivation(True)>  _  							
      Nota : Embora o atributo JustInTimeActivation não é necessária para activar o agrupamento, poderá pretender utilizar este atributo na maioria dos casos. Porque é dispendiosa para criar e eliminar componentes, pode melhorar o desempenho significativamente, permitindo que múltiplos clientes reutilizar ocorrências de componentes.
    2. O método de ServicedComponent CanBePooled devolve false por predefinição. Para substituir o método CanBePooled para que o método devolve Verdadeiro , adicione o seguinte código:
      Protected Overrides Function CanBePooled() As Boolean        Return True    End Function						
  7. Adicione o seguinte código à classe não poolable:
    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 SubEnd Class					
back to the top

Modificar Module1.vb para criar várias instâncias destas classes

  1. Na janela Code Editor, clique no separador Module1.vb .
  2. Na parte superior do ficheiro, adicione a seguinte instrução de importações para o espaço de nomes EnterpriseServices permitir o acesso ao método DisposeObject :
    Imports System.EnterpriseServices						
    o método DisposeOjbect devolve objectos ao conjunto de objectos, permite-lhes ser reutilizado.
  3. Adicione o seguinte procedimento 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						
    este código configura um ciclo que cria uma instância de NonPoolable ou a classe Poolable durante cada um dos respectivas 50 iterações. O código de registos de início e o fim tempo para o ciclo e, em seguida, escreve o número de objectos criados por segundo à consola.
back to the top

Gerar um nome seguro para a assemblagem

É deve gerar um nome seguro para a assemblagem que irá gerar este projecto. Sem um nome seguro, pode utilizar serviços COM + para registar esta assemblagem.

Para gerar este par de chaves criptográfica, utilize a ferramenta nome seguro (Sn.exe), que está localizada na pasta posição em que o .NET Framework Software Development Kit (SDK) está instalado. Utilize a seguinte sintaxe da linha de comandos para executar a ferramenta Sn.exe:
sn -k drive letter \ DirectoryToPlaceKey \ KeyName .snk
  1. Para abrir uma linha de comandos Visual Studio. NET, clique em Iniciar , aponte para programas , aponte para Microsoft Visual Studio. NET , aponte para Ferramentas do Visual Studio .NET e, em seguida, clique em Visual Studio .NET Command Prompt .
  2. Na linha de comandos, escreva o seguinte comando:
    sn -k drive letter: \ \poolkey.snk da Project Root Folder
  3. Prima a tecla ENTER para gerar o par de chaves. Repare que a mensagem seguinte é apresentada na janela de comandos:
    Par de chaves escritas...
  4. Para associar esta chave de assemblagem do projecto, faça duplo clique AssemblyInfo.vb no Solution Explorer. Por predefinição, Visual Studio .NET inclui atributos de assemblagem neste ficheiro quando cria um projecto. Adicionar o seguinte código a esta lista de atributos de assemblagem:
    <Assembly: AssemblyKeyFile("..\..\poolkey.snk")>					
back to the top

Concluir lista de código

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 FunctionEnd ClassPublic Class NonPoolable    Inherits ServicedComponent    Sub New()        ' Simulate an expensive operation.        Threading.Thread.Sleep(500)    End Sub    Public Sub DoSomething()        ' Add method contents here.    End SubEnd Class				
back to the top

Module1.VB

Imports System.EnterpriseServicesModule 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 SubEnd Module				
back to the top

AssemblyInfo.vb

Imports System.ReflectionImports 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.*")>				
back to the top

Verificar se funciona

  1. Prima a tecla F5 para executar a aplicação no modo de depuração. Repare que este procedimento cria instâncias da classe NonPoolable .
  2. Aguarde aproximadamente 25 segundos. Repare que é apresentada a seguinte mensagem:
    Criação do objecto / segundo = 1.73542243764044
    Nota : O número exacto de criações de, por segundo pode variar.
  3. Prima ENTER para sair da aplicação de consola e para voltar ao Visual Studio. NET.
  4. Modificar Module1.vb para criar instâncias da classe Poolable . Altere a primeira linha no procedimento Sub Main da seguinte forma:
    Dim D As New Poolable()					
  5. Prima F5 para executar a aplicação novamente.
  6. Aguarde uns segundos. Repare que a seguinte mensagem (ou semelhante) é apresentado:
    Criação do objecto / segundo = 29.1977213631085
    Tenha em atenção as melhorias significativas no desempenho quando utiliza o objecto de agrupamento.
  7. Prima ENTER para sair da aplicação de consola e para voltar ao Visual Studio. NET.
back to the top

Resolução de problemas

Se não esqueça substituir CanBePooled . Se omitir este passo, não é possível conjunto o objecto.

back to the top

REFERÊNCIAS

Para mais informações sobre como implementar e implementar + configurado classes utilizando a linguagem comum tempo de execução, como aceder a objecto de contexto e chamar contexto e como gerir referências a objectos contexto relativo, consulte o seguinte Web site da Microsoft:
Integração COM +: Como .NET Enterprise Services podem ajudar o utilizador criar aplicações distribuídas
http://msdn.microsoft.com/en-us/library/bb985615.aspx
back to the top

Aviso: Este artigo foi traduzido automaticamente

Propriedades

ID do Artigo: 317336 - Última Revisão: 01/11/2015 04:32:47 - Revisão: 4.4

  • Bibliotecas de classe do Microsoft .NET Framework 1.0
  • Microsoft Enterprise Services (included with the .NET Framework) 1.0
  • Microsoft Visual Basic .NET 2002 Standard Edition
  • kbnosurvey kbarchive kbmt kbhowtomaster KB317336 KbMtpt
Esta informação foi útil?