Dica de design: criando um servidor genérico

Visual Basic, VB .NET, ASP, Active X, Access, SQL Server

Dica de design: criando um servidor genérico

Para quem desenvolve aplicações em múltiplas camadas usando ActiveX executável como servidor, é possível ter um servidor genérico que simplesmente instancia objetos na camada servidora e repassa as solicitações do cliente a estes objetos. Uma forma de criar este mecanismo de repasse é ter no objeto servidor um método do tipo OperarObjeto, que recebe como argumento o ProgId (nome do projeto . nome da classe) do objeto a ser criado e um variant contendo uma matriz com os dados a serem manipulados pelo objeto. De posse do ProgId, o servidor instancia o objeto usando a função CreateObject e repassa os dados para um método comum a todos os objetos usados neste tipo de operação. Como retorno padrão, o servidor receberia um variant contendo os dados a retornar para o cliente. Veja abaixo um exemplo disto.

Public Function OperarObjeto(ByVal strProgId as String, _

      ByVal Dados as Variant) As Variant

   Dim Obj as Object

   On Error GoTo TrataErro

   Set Obj = CreateObject(strProgId)

   OperarObjeto = Obj.TratarDados( Dados )

   Set Obj = Nothing

   Exit Function

TrataErro:

   OperarObjeto= Err.Number & " " & _

         Err.Description & vbLF & _

         "Servidor_OperarObjeto "

Exit Function

No exemplo acima, os objetos criados com strProgId têm um método comum TratarDados, que tem nos dados recebidos as informações de qual operação executar. Retornam as informações que o cliente deve receber como resultado de uma operação bem ou mal sucedida. O cliente examina o retorno e trata algum possível erro que o objeto esteja retornando.