Eu sempre fui um grande defensor da utilização de padrões em qualquer tipo de aplicação. Ao ponto de considerar que a grande maioria dos padrões deveriam ser parte integrante das linguagens de programação.
O problema é que nem sempre é possível integrar os padrões directamente, dado que frequentemente é preciso adaptar o padrão à utilização que pretendemos dar, ou seja temos de criar a nossa linguagem mais próxima do domínio. E para isto linguagens como o Lisp, com as suas macros são os claros vencedores.
O meu problema de hoje é precisamente com um padrão que foi integrado na linguagem. O motivo é simples, um padrão teórico é flexível e quando é instanciado é tornado mais específico. E o problema aqui era precisamente esse, seriam os eventos do .Net assíncronos ou síncronos?
É uma decisão de instanciação, ambos têm vantagens e desvantagens, mas qual teria Microsoft escolhido?
Já há bons anos que desenvolvo aplicações em .Net, na realidade no meu caso é mais em Mono, mas quando desenvolvo aplicações em Windows.Forms ou em GTK, não me importa, porque os eventos que são disparados pela interface são executados assincronamente.
Agora no restante tipo de aplicações Consola ou Web, sempre tive algumas reservas em utilizar eventos, como até agora não enfrentei situações que justificassem aprofundar esta questão, deixei andar.
Por várias vezes pesquisei sobre o assunto, mas não conseguia encontrar uma resposta clara, até que encontrei "When an event has multiple subscribers, the event handlers are invoked synchronously when an event is raised". Não foi propriamente a resposta que eu pretendia, mas por esta consigo inferir o motivo da minha dificuldade, em toda a documentação assume-se que os eventos são sempre síncronos. Então apenas importa esclarecer que mesmo quando são vários subscritores, a invocação é à mesma síncrona.
Mesmo com .net, é possível utilizar diferentes tipos de sistemas de eventos, tanto síncronos como assíncronos, como tal a documentação não devia assumir nada. Talvez noutros documentos que me escaparam a informação esteja mais clara.
Sem comentários:
Enviar um comentário