Pergunta

Em um sistema em que estou trabalhando atualmente, tenho muitos componentes definidos como interfaces e classes base. Cada parte do sistema possui alguns pontos específicos em que eles interagem com outras partes do sistema.

Por exemplo, o componente de preparação de dados diz alguns dados que eventualmente precisam ir para a parte de processamento de dados, o componente de comunicação precisa consultar diferentes componentes para seu status para transmitir para o exterior, etc.

Atualmente, colo essas partes do sistema usando um "objeto de Deus" ou um objeto com conhecimento íntimo de diferentes partes do sistema. Ele se registra nos eventos aqui e transporta os resultados para os métodos por lá, cria um método de retorno de chamada aqui e retorna o resultado desse método por lá e passa muitos pedidos através de uma fila multi-threades para processamento porque "sabe" certas ações têm Para executar em threads STA, etc.

Embora seja conveniente, isso me preocupa que esse tipo sabe muito sobre como todos os outros no sistema são projetados. Eu prefiro muito um hub mais genérico que possa receber instâncias que possam expor eventos, métodos ou retornos de chamada ou que possam consumi -los.

Eu tenho visto mais sobre os recursos iobservable/iobserver da estrutura reativa e que estão sendo lançados no .NET 4.0 (acredito).

Posso alavancar esse padrão para ajudar a substituir meu "objeto de Deus"? Como devo fazer isso? Existem recursos para usar esse padrão para esse fim específico?

Foi útil?

Solução

Parece que você pode substituir o seu objeto de Deus com o que Msdn descreve aqui:

Para criar aplicativos complexos de processamento de eventos (CEP) usando a plataforma Microsoft StreamInsight, você cria estruturas que definem os eventos, objetos que produzem e consomem os eventos e modelos de consulta que contêm a lógica de negócios necessários para processar os eventos.

Nossa equipe não está se mudando para .NET 4.0 tão cedo (infelizmente). Então, contornamos um objeto de Deus O cenário construindo uma estrutura personalizada semelhante ao que o MAF/MEF oferece. Isso criou uma base de conhecimento distribuída usando o que a Microsoft chama de um adaptador. Cada adaptador é responsável apenas por seu próprio módulo, dados passantes, eventos etc. Existe um comum operador Isso recebe os dados e eventos, processos e passa de volta ao respectivo adaptador.

Minha compreensão de IObservable & IObserver me empresta a acreditar que um objeto de Deus Não será necessário - na verdade, criando uma base de conhecimento distribuída do que está acontecendo nas diferentes partes. Uma vantagem aparente para essas interfaces também parece ser que o Comunicador intermediário (ou seja, o adaptador) não é mais necessário. Portanto, a distribuição do conhecimento está realmente na classe derivada do IOBServable. Este modelo deriva inerentemente um falador/respondente Relacionamento - Sem classe de mediação/arbitragem.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top