Padrão a ser usado para relacionar várias origens de dados a diferentes widgets de dados do usuário

5

Eu tenho um aplicativo de intranet cliente x servidor que basicamente obtém dados do servidor, formata e envia esses dados para o cliente para exibição. No servidor, estamos usando o ASP.NET C # em execução no IIS e, no cliente, temos widgets Javascript. As solicitações cliente x servidor são feitas por meio de chamadas ajax.

Eu tenho muitos (100+) objetos de servidor, que podem ser mostrados em 10 formatos diferentes no navegador, embora com diferentes widgets gráficos.

Então, basicamente, temos a seguinte estrutura:

Assim, para cada objeto de servidor que eu preciso, em objetos nnnWidgetDataGetter, faço algumas transformações de dados para o formato de dados do widget a serem enviadas para o cliente. Cada widget pode solicitar dados de todos os objetos do servidor.

Usando uma abordagem normal, eu teria que escrever toneladas de métodos, um para cada classe básica de servidor vezes cada classe de datagetters.

Para evitar a gravação de centenas de métodos com comportamento semelhante, decidimos usar uma abordagem dinâmica nas classes DataGetter (classes estáticas), em que o objeto de negócios é avaliado em tempo de execução, os dados são coletados desse objeto, formatados e enviados para o cliente.

O problema é que usando a criação e invocação dinâmica de objetos perdemos o Intellisense, então o código está ficando muito grande e difícil de entender e manter.

Depois de um tempo, descobrimos que não estamos usando a abordagem correta e começamos a pensar em padrões que nos ajudariam a resolver isso.

Então, estamos procurando o padrão correto para resolver esse problema, que manteria uma estrutura tipificada onde o Intellisense poderia funcionar e que nos impedisse de escrever centenas de métodos diferentes.

Agradecemos muito qualquer tipo de ajuda.

    
por Mendes 20.06.2014 / 08:13
fonte

1 resposta

1

Os padrões podem fornecer um design limpo para transformar seus objetos do servidor em dados do widget. No entanto, eles não impedirão que você tenha que definir a estratégia para cada objeto de servidor (na melhor das hipóteses, você removerá o código duplicado).

Pode ser que você possa usar reflexo ou atributos para examinar seus objetos de servidor e ter um gerador genérico para preencher o 'DataGetter' desejado.

    
por 03.07.2014 / 17:49
fonte