Só se precupa com processamento desnecessário quando isso for um
problema ou não. No momento não se sabe, então não se preocupa com isso =P
Na prática, se colocasse algo na parte base em qualquer ponto vai ter
que testar se há algo para notificar (pois não há como saber de
antemão), mesmo que não tivesse ninguém ouvindo nada (mesmo q seja um
boolean, tem q testar, vide notificações de datasets que são por
instância e não por tipo). Para melhorar isso, poderia ser convertido a
parte de notificação dos types base para usar AOP, de modo que só quando
houver o registro de que alguém quer ouvir um tipo de evento, se faz o
attach de um aspecto correspondente ao método e aí passa a disparar. Num
sistema grande, sempre vai haver alguém ouvindo um tipo de evento, entah
o código vai estar sempre ativado (salvo processo em batch ou servidor
de aplicação).
Solerman
Só se precupa com processamento desnecessário quando isso for um problema ou não. No momento não se sabe, então não se preocupa com isso =PEssa de "só se preocupar com um problema quando o mesmo ocorrer", eu acho válido, mas tem que ter muito cuidado para não levar ao pé da letra... No caso, então deveriam ser feitos testes AGORA para avaliar a performance de diferentes estratégias, e não depois que já estiver tudo implementado, talvez com gente utilizando, pois aí o custo da mudança será bem maior.
Interessante, podemos dar uma olhada no código que você usou?
Não podemos esquecer também um dos motivos que levou a usar um sistema
de eventos independente de instância: setup de subscribers em objetos
que ficam sendo criados/destruídos algumas vezes sendo criados após o
setup dos subscribers. Ex: você tem um listview monitorando uma lista,
mas a view é criada antes da lista existir, tente fazer isso com um
sistema orientado a instância pra ver a dor de cabeça que é.
Solerman
Imagine uma tela com pesquisa onde a lista só é preenchida ao clicar no
pesquisar. Ou mesmo o caso onde a lista eh detalhe de algum outro objeto
(Nota Fiscal -> Itens) e toda a lista é substituída ao trocar de uma NF
para outra. Se só tiver suporte a notificação por instância, vai
precisar fazer unsubscribe da lista antiga e fazer subscribe na lista nova.
Acho que o suporte a instância pode ser feito em cima do suporte
genérico tal qual é feito para as propriedades (e acho q esse já é
suficiente, pois a propriedade é opcional). E tem também a sugestão de
AOP cuja performance precisaria ser testada em cima do Infra para ser
ter melhor idéia, mas em termos de código é muito mais benéfica. Eu
diria que o que se ganha em performance não compensa a diferença de
esforço em programação e manutenção do código em que os eventos são
disparados manualmente (pelo menos para mim, mas eu sou apenas um).
Solerman
Pode ser colocado, o que quero dizer é que a infra-estrutura de eventos
atual permite montar isso sem ter que fazer uma forma especial de
infra-estrutura só para isso. Pelo menos se precisar otimizar depois é
possível, mas a performance inicial vai ser a mesma de antes.
Solerman
Eu disse que um pode ser feito em cima do outro, não que não pode (ou
não seria) feito por instância. O sistema usado pelo MVP é por instância
E dinânico, prevendo ambos os casos que mencionei, e isso só é possível
de forma simples porquê a base não é por instância, mas para o usuário
parece que é, por vc amarra Pessoa.Nome a um edit e ele só vê eventos da
pessoa em questão. No final das contas você não fica trabalhando direto
por eventos.
Solerman