Agora estou analisando o node.js e suas implicações no desempenho (sou viciado em velocidade), mas ainda não mergulhei nisso.
Perfil, perfil, perfil. Essa é a única maneira de saber que suas acelerações estão tendo o efeito adequado. Você pode adivinhar que é rápido o suficiente. Mas a maioria das pessoas gosta de otimizar prematuramente. Isso é pior do que brincar com você mesmo durante um encontro.
Pergunto-me se o node.js pode substituir completamente meu desenvolvimento típico da Web em C # e ASP.NET MVC, se é melhor como complemento do C # e ASP.NET MVC, ou se há algumas coisas que devem "deixar bem o suficiente" "
Existem casos de uso a favor / contra C # e node.js?
Claro, se você estiver em uma loja que rotineiramente escreve código em C #, deve usar o MVC (é muito melhor que o WebForms e é chamado de Páginas da Web). Você não perderá muito tempo com o treinamento em ferramentas, e é algo que seus fluxos de trabalho já devem lidar.
O que você não parece indicar acima são os motivos para escolher cada um. Você forneceu duas opções de mercado atuais, uma ainda nos estágios Alpha, a outra no terceiro ano completo de lançamento da plataforma. Eu não gostaria de comparar os modelos atuais de carros elétricos com os híbridos Honda que já estão no mercado. Eles estão em duas ligas diferentes.
Agora, aqui está um motivo para você ficar longe do node.js, se você é nominalmente uma loja de C #.
No momento, você não trabalha em E / S com eventos assíncronos; atualmente, trabalha em um formato processual.
Essa é a antítese do que o nodejs fará por você.
No entanto, se você está frequentemente escrevendo código assíncrono em C # e o usa muito em um estilo de evento, sim, o node.js é para você considerar fortemente.
Aqui está o que você vai desistir:
IIS - Isso é realmente importante para muitas pessoas. Coisas como a integração A / D nativa já estão prontas e sem erros. Na verdade, o node.js agora se integra bem ao IIS.
- Modelo de Razor - Se você fez algum MVC em C # sério, está usando e amando o Razor e a rapidez com que pode produzir as coisas. Existem modelos semelhantes no nó, e certamente não estou batendo no nó, mas toda a cadeia de ferramentas já está presente em C #, e muito disso está sendo construído atualmente no mundo dos nós. NB: muitas dessas ferramentas estão agora bastante maduras _
- a compilação de dlls - node.js geralmente é compilada em tempo real, ou seja, nem todos os caminhos são verificados na inicialização. É inteiramente possível ter um código realmente ruim no nó, que ninguém toca, verifica ou testa.
- Todas as ferramentas atualmente incorporadas ao VS que você usa diariamente - simplesmente não há muito suporte ao VS para javascript. Em parte porque tudo em javascript é muito dinâmico. NB: A Microsoft está obviamente trabalhando no suporte de ferramentas para javascript _
Aqui está o que você ganhará:
- tudo o que você desenvolver será no mesmo idioma, supondo que você faça scripts no lado do cliente e no servidor. (ou por que você consideraria o javascript no servidor)
Portanto, como eu pareço atacar o Nó completamente aqui, deixe-me salientar que o nó é a minha linguagem de jogo em casa, eu o amo e ajudo as pessoas a depurá-lo às vezes nos servidores de bate-papo stackoverflow (sala 642). Vejo que ele tem um grande e estupendo potencial no futuro.
Só estou dizendo, não jogue fora o bebê e me pergunto por que a água do banho está suja.
Você não deu uma razão para desistir de seus anos de experiência e começar algo novo. As ferramentas são ruins? De modo nenhum. Ambos são ótimos e facilitam o desenvolvimento.
O nó pode substituir o C #? Sim, com certeza. O mesmo poderia acontecer com PHP, Java ou Ruby. Você não está perguntando sobre isso.
Veja como você sabe quando está pronto para programar o node.js em vez do C #:
- Você está pensando em escrever um livro para ajudar outras pessoas a "obter javascript" em vez dos programas antigos e chatos que eles escreveram antes em C # e etc.
- Você tem problemas com a E / S síncrona (bloqueio) para impedir que seus aplicativos realizem um trabalho real.
- Você não está usando QUALQUER bibliotecas em C # que não seja o MVC padrão e apenas para roteamento, e tem certeza de que pode fazer um mecanismo de roteamento melhor e está codificando tudo o mais próximo possível do metal.
- Todo objeto de dados que você cria, você vê como um hash, em vez de um objeto fortemente tipado.