none
comunicação entre assembly RRS feed

  • Pergunta

  • Olá pessoal

    No cenário tenho os assemblyes: Principal, detalhe1, detalhe2 e assim por diante.

    O principal referencia todos os detalhes. Em cada detalhe, preciso devolver uma informação para o Principal que não estou conseguindo fazer porque no detalhe não posso referenciar o Principal pois implica numa dependencia circular. Pensei numa classe global no GAC) para server de ponte de comunicação entre os assemblys, mas não tenho ideia como fazer isso.

    Uma outra ideia que estou pensando seriamente e acabar assemblyes detalhes e incorpora-las num único projeto PRINCIPAL desta vez a comunicação entre classes dentro de um único projeto facilitaria, em compensação ficaria um projeto enorme.

    O que os srs com mais kilometragem na estrada sugerem?

    takeo


    um desenvolver buscando um aprendizado cada vez mais solido
    quinta-feira, 20 de maio de 2010 14:45

Respostas

  • Olá Takeo,

    Você precisa dar mais informações sobre o seu cenário, para podermos dar sugestões... De preferência um exemplo concreto.

    De maneira geral, se os assemblies "Detalhe" fornecem apenas serviços para o "Principal", então estamos falando de classes que possuem N métodos, que são utilizadas (consumidas) pelo assembly "Principal". Desde que os tipos de retorno estejam definidos nos assemblies "Detalhe" (ou em um assembly "Global" compartilhado), não há qualquer razão para referência circular.

    Abraços,
    Caio Proiete


    Caio Proiete
    Microsoft MVP, MCT, MCPD, MCTS, MCSD
    http://www.caioproiete.com
    terça-feira, 25 de maio de 2010 20:30
    Moderador
  • Oi Caio

    O cenário é um pouco complexo, vou tentar explanar de forma simplificada, vejamos:

    O PRINCIPAL é um windows forms que tem um menu, uma barra de ferramentas, uma barra de status e permite fazer login no sistema. Na barra de menu tem um uma opção que permite visualizar os serviços ativos.Cada opoção de menu dispara um serviço que é representado por um dos DETALHES citados nos post anterior. Cada detalhe usa como UI o userControl que é herdado de uma classe base de userControl e executa uma série de procedimentos próprio como por ex. Cadastrar produtos. Acontece que um determinado detalhe o DETALHE3 por ex., ter necessidade de disparar outro servico por ex. DETALHE4 que é de competencia do PRINCIPAL, então o DETALHE3 deve sinalizar ao PRINCIPAL para efetuar o disparo do SERVICO4, para isso é necessário que o DETALHE3 referencie o PRINCIPAL que não é permitido (dependencia circular) para acessar o método de gerenciamento dd disparo de serviços do PRINCIPAL. O método de gerenciamento de disparo de serviços do princial efetua o disparo do serviço carregando o mesmo na coleção Control. Se os DETALHES forem classes dentro do PRINCIPAL aí não teria problema, mas!.

    com pouca experiencia prática, imagino que se pulverizar uma aplicação em assemblies, facilitaria a manutenção de um eventual erro ou melhorias em um determinado ASSEMBLY. De modo que ser houver tais necessidades sòmente o assembly afetado seria manutencdiado ou melhorado e liberado para o cliente sem mexer no resto da aplicação.

    espero ter dado uma ideia melhor do cenário.

    takeo

     

      


    um desenvolver buscando um aprendizado cada vez mais solido
    quinta-feira, 27 de maio de 2010 14:57

Todas as Respostas

  • Olá Takeo,

    Você precisa dar mais informações sobre o seu cenário, para podermos dar sugestões... De preferência um exemplo concreto.

    De maneira geral, se os assemblies "Detalhe" fornecem apenas serviços para o "Principal", então estamos falando de classes que possuem N métodos, que são utilizadas (consumidas) pelo assembly "Principal". Desde que os tipos de retorno estejam definidos nos assemblies "Detalhe" (ou em um assembly "Global" compartilhado), não há qualquer razão para referência circular.

    Abraços,
    Caio Proiete


    Caio Proiete
    Microsoft MVP, MCT, MCPD, MCTS, MCSD
    http://www.caioproiete.com
    terça-feira, 25 de maio de 2010 20:30
    Moderador
  • Oi Caio

    O cenário é um pouco complexo, vou tentar explanar de forma simplificada, vejamos:

    O PRINCIPAL é um windows forms que tem um menu, uma barra de ferramentas, uma barra de status e permite fazer login no sistema. Na barra de menu tem um uma opção que permite visualizar os serviços ativos.Cada opoção de menu dispara um serviço que é representado por um dos DETALHES citados nos post anterior. Cada detalhe usa como UI o userControl que é herdado de uma classe base de userControl e executa uma série de procedimentos próprio como por ex. Cadastrar produtos. Acontece que um determinado detalhe o DETALHE3 por ex., ter necessidade de disparar outro servico por ex. DETALHE4 que é de competencia do PRINCIPAL, então o DETALHE3 deve sinalizar ao PRINCIPAL para efetuar o disparo do SERVICO4, para isso é necessário que o DETALHE3 referencie o PRINCIPAL que não é permitido (dependencia circular) para acessar o método de gerenciamento dd disparo de serviços do PRINCIPAL. O método de gerenciamento de disparo de serviços do princial efetua o disparo do serviço carregando o mesmo na coleção Control. Se os DETALHES forem classes dentro do PRINCIPAL aí não teria problema, mas!.

    com pouca experiencia prática, imagino que se pulverizar uma aplicação em assemblies, facilitaria a manutenção de um eventual erro ou melhorias em um determinado ASSEMBLY. De modo que ser houver tais necessidades sòmente o assembly afetado seria manutencdiado ou melhorado e liberado para o cliente sem mexer no resto da aplicação.

    espero ter dado uma ideia melhor do cenário.

    takeo

     

      


    um desenvolver buscando um aprendizado cada vez mais solido
    quinta-feira, 27 de maio de 2010 14:57