Arquiteto de Software, Desenvolvedor Full Stack e Instrutor
www.tonsoft.com.br - E-mail: wellington@tonsoft.com.br
Especialista em linguagem de programação,
banco de dados e consultor.
Apaixonado por tecnologia.
quinta-feira, 21 de outubro de 2021
EF Core: The name "SqlServerValueGenerationStrategy" does not exist in the current context
SqlServerValueGenerationStrategyé definido com Microsoft.EntityFrameworkCore.SqlServer.dll.
Neste caso certifique-se de instalar o seguinte pacote Microsoft.EntityFrameworkCore.SqlServer
Install-Package Microsoft.EntityFrameworkCore.SqlServer
Se desejar você pode selecionar a versão do pacote no gerenciador de pacotes
Install-Package Microsoft.EntityFrameworkCore.SqlServer -Version 5.0.11
Provedor de banco de dados Microsoft SQL Server para Entity Framework Core.
segunda-feira, 2 de agosto de 2021
Erro 0xc0202049: Tarefa de Fluxo de Dados 1: Falha ao inserir na coluna somente leitura
sábado, 17 de julho de 2021
Enviar mensagens no ZAP sem precisar adicionar aos contatos
quinta-feira, 15 de abril de 2021
WINDOWS FORM C# GRID ZEBRADA
Com o controle DataGridView, você pode especificar informações de estilo para alternar linhas. Isso permite usar as características de estilo como cor e fonte , além da cor da tela de fundo, para diferenciar as linhas alternadas.
Os estilos usando as propriedades RowsDefaultCellStyle e AlternatingRowsDefaultCellStyle substituem os estilos especificados nas propriedades do DataGridView,
dgvLog.AlternatingRowsDefaultCellStyle.BackColor = Color.LightYellow;
dgvLog.AlternatingRowsDefaultCellStyle.ForeColor = Color.Maroon;
domingo, 11 de abril de 2021
Comunicação Síncrona e Assíncrona
Comunicação síncrona refere-se ao contato imediato entre o emissor (quem envia a mensagem) e o receptor (quem recebe a mensagem), a comunicação assíncrona é atemporal.
Na comunicação assíncrona o emissor envia a mensagem, mas não necessariamente o receptor irá recebê-la imediatamente.
Imaginemos que um emissor está a enviar uma mensagem de texto através de um tubo e que a mensagem é enviada recorrendo a bolas, cada bola com uma letra. Quando as bolas chegam ao receptor, a mensagem tem que ser remontada, ou seja, têm que se colocar as bolas pela ordem correta, para se voltar a ter a mensagem.
- Em comunicação Assíncrona, cada bola tem um número de sequência, que permite que seja colocada na sua posição. Isto permite que as bolas sejam enviadas e recebidas por qualquer ordem, uma vez que esse número de sequência identifica a posição de cada bola (letra) na mensagem.
- Em comunicação síncrona, as bolas têm que ser enviadas e recebidas de forma sincronizada, mantendo uma ordem bem definida: a primeira bola (letra) a ser enviada, tem que ser a primeira a ser recebida e assim sucessivamente.
Comunicação Síncrona
Em uma comunicação síncrona o emissor e receptor são sincronizados pelo mesmo relógio, o receptor recebe de modo contínuo (mesmo quando nenhum bit é transmitido) os dados em compasso em que o emissor as remete.
Simples exemplo em Javascript:
function foo(){
console.log("foo");
}
function bar(){
console.log("bar");
}
function baz(){
console.log("baz");
}
foo();
bar();
baz();
Essas funções serão executadas em ordem, bar
não será executada até que foo
tenha terminado e baz
por sua vez só será executado após o término de bar
, havendo assim uma sincronia.
Comunicação Assíncrona
Em uma comunicação assíncrona a sincronização é diferente, o emissor envia o fluxo de dados e periodicamente insere um elemento de sinal, comumente chamado de flag, para que seja possível distinguir aonde começa (a informação de início da transmissão é o start-bit) e acaba (a informação de fim de transmissão é o stop-bit) o bloco de dados e qual a sua posição na sequência de dados transmitidos.
Exemplo:
function foo(){
console.log("Executando algo assíncrono aqui");
}
function bar(){
setTimeout(foo, 0);
console.log("Alguma coisa por aqui");
console.log("...");
}
bar();
Aqui não há a mesma sincronização que noutro exemplo, uma função não vai esperar pelo término da outra. Nesse exemplo usamos a função setTimeout
para enfileirar foo
que vai executar 0 ms após o loop de eventos, o loop de eventos ficará indisponível até completar sua atual pilha de execução - neste caso, o resto de bar
, que inclui as duas declarações console.log
. Após o término de bar
o loop de eventos fica livre, e assim foo
pode ser executada.
Saída:
Alguma coisa por aqui
...
Executando algo assíncrono aqui
Quando e para que devo usá-las? Grande parte do processo de tomada de decisão sobre isso envolve o senso comum, um conjunto de fatores, uma comunicação assíncrona pode ser usado quando a resposta não tenha que ser entregue urgentemente, esse tipo de comunicação é adequado para situações em que não seja necessário a entrega urgente dos dados, por outro lado, não seria apropriado usar esse tipo de comunicação se você precisa de interação imediata. Já a comunicação síncrona é ideal quando se precisa de espontaneidade, como em uma conversa em tempo real entre duas ou mais pessoas.
Tanto a comunicação síncrona, quanto a assíncrona, têm suas vantagens e desvantagens, utilizar uma ou outra vai depender da necessidade da sua aplicação.